Ver Mensaje Individual
  #6  
Antiguo 18-11-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
¿asignaciones de registro así por la cara?

Eso siempre lo confundo, no sé si es una asignación de punteros, o delphi hace una copia entera de la memoria .

Yo te diría que usaras un TObjectList, y tu registro lo convirtieras en un TObject, es mucho más fácil de usar y parecido a delphi.
Código Delphi [-]
Type TComun = Class(TObject)
  public
  Nombre : String;  
  Tarea   : String; 
  Modulo : String;  
  Rutina : String;  
  Tipo   : String;  
  Scope  : String;  
end;

Para crear la lista:
var 
lista :TObjectList; // variable global del form.

procedure TForm1.Button1Click(Sender:TObject);
begin
  lista := TObjectList.Create(True); // creamos la lista en memoria
// y le decimos que al liberar la lista, libere tambien todos los objetos que tenga.
end;

procedure TForm1.btnAnadirObjetoClick(sender:Tobject);
var c:Tcomun
begin
   c:= TComun.Create;
   c.nombre := edit1.text;
   c.tarea := edit2.text;
   ...
   lista.Add(c); // y ahora se añade a la lista.
end;

procedure TForm1.BtnBuscarElPrimero(Sender:Tobject);
var uno:Tcomun;
begin
  if Assigned(lista) then // si la lista está creada
    if Lista.Count > 0 then // si tiene objetos dentro
      uno := TComun(lista[0]); // ahora si admite esto el compilador
   // porque son asignaciones de punteros
  // de hecho, no he creado el objeto "uno" con   uno := Tcomun.create por
  // esto mismo se sabe que son asignaciones de punteros
  

  ShowMessage(uno.nombre);
end;

procedure TForm1.FormClose(....);
begin 
  // fumigar la lista y todos los objetos que tenga 
  lista.free; 
end;

Edito: ahora recien veo el comentario de bpesoj, totalmente válido y muy muy similar a lo que yo expongo (ya que también uso punteros pero camuflados).

Ya tienes 2 opciones para elegir

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.

Última edición por Lepe fecha: 18-11-2007 a las 23:46:19.
Responder Con Cita