Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 08-05-2003
paldoc paldoc is offline
Registrado
 
Registrado: may 2003
Posts: 1
Poder: 0
paldoc Va por buen camino
Question Pasar punteros a objentos en un procedimiento

Hola amigos, soy nuevo en este foro y un principiante en el lenguaje de programación.
Me podría decir alguíen si se puede pasar en un procedimiento un puntero a un objeto (Label, Shape,...) para poder modificar el objeto dentro del procedimiento.
Si es posible ¿Como se debe declarar ?

Graciasconfused:
Responder Con Cita
  #2  
Antiguo 08-05-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
mas o menos seria una cosa asi

* Llamada -> pasamos un TLabel y un TEdit

Código:
 
begin
     Actualizar(Label1, Edit5);
end;
* declaracion -> recibimos el TLabel y el TEdit

Código:
procedure Actualizar(L : TLabel; E . TEdit);
begin
     L.Caption := 'Nuevo caption';
     E.Text := 'Nuevo texto';
end;
En delphi, cuando se pasa un objeto por parametro, siempre se esta pasando un puntero a el, por lo tanto, si modificas cualquier propiedad dentro del procedimiento Actualizar, seguira estando al salir de el.

Bueno, espero que te sirva
Responder Con Cita
  #3  
Antiguo 09-05-2003
Bacterion Bacterion is offline
Miembro
 
Registrado: may 2003
Posts: 91
Poder: 21
Bacterion Va por buen camino
Bien, básicamente es que toda "variable" objeto es, en realidad, una referencia a objeto.

Vamos:
var
MiSuperObjeto: TMiSuperObjeto;

Sería "como" poner
var
MiSuperObjeto: ^TMiSuperObjeto;

Son siempre punteros a objeto, mientras que el resto de tipos "primitivos" (real, entero, etc...), son el contenedor de un valor del tipo (vamos tienes la referencia y el espacio de memoria asociado).

De ahí viene que si no se le asigna un objeto a la variable, en realidad no estés apuntando a algún sitio valido.

Usea:

var
MiSuperObjeto: TMiSuperObjeto;
begin
MiSuperObject.SuperMetodo; // lanzará una violación en masa de los bits pares de la cpu.

Luego, si haces lo que cadetill indica, siempre pasas una referencia al objeto (y por lo tanto, operarás, realmente, con ese objeto).
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Pasar parámetros a un procedimiento YaninaGenia Varios 3 12-07-2005 20:18:52
Pasar array a procedimiento almacenado angellvl Firebird e Interbase 0 12-07-2004 18:42:38
pasar parametro a un procedimiento desde select hibero Firebird e Interbase 2 01-06-2004 19:58:42
Ayuda sobre un Procedimiento Almacenado Nuria Firebird e Interbase 6 21-01-2004 13:18:15
Pasar parametro a un procedimiento? danytorres Varios 2 12-12-2003 09:55:09


La franja horaria es GMT +2. Ahora son las 01:12:51.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi