Entiendo roman, es clara tu explicación y mala mi interpretación previa.
Haber si con parte del código se logra detectar el error.
En una unidad (UPersona) declaro un objeto persona de la siguiente forma:
Código:
TPersona = class
private
documento: Integer;
nombre: String;
public
(* Constructores *)
Constructor Create(doc: Integer; nom: String);
(* Selectoras *)
Function GetDocumento: Integer;
Function GetNombre: String;
(* Modificadoras *)
Procedure SetDocumento(doc: Integer);
Procedure SetNombre(nom: String);
end;
implementation
...
end.
Luego en un TForm aparecen estos procedimientos asociados a dos botones.
Primero declaro las variables
Código:
var
Form1: TForm1;
p: TPersona;
listaPersonas: TObjectList;
Primer botón:
Código:
procedure TForm1.Button1Click(Sender: TObject);
begin
p:=TPersona.Create(StrToInt(Edit1.Text),Edit2.Text);
listaPersonas:=TObjectList.Create(True);
// Agregamos el objeto persona a la lista
listaPersonas.Add(p);
Edit1.Text:='';
Edit2.Text:='';
end;
La idea es que cada vez que se presiona el botón Button1 se agrege un objeto persona a la lista TObectList, cuyos campos (documento y nombre) se leen desde dos TEdits.
Ahora el segundo botón:
Código:
procedure TForm1.Button2Click(Sender: TObject);
function OrdenarPorDocumento(a: Pointer;b: Pointer): Integer;
begin
if TPersona(a).GetDocumento > TPersona(b).GetDocumento then
result:=-1
else
if TPersona(a).GetDocumento < TPersona(b).GetDocumento then
result:=1
else
result:=0;
end;
begin
ListaPersonas.Sort(OrdenarPorDocumento);
end;
La idea es que cuando se apreta el segundo botón (Button2) se ordene la lista.
Desde ya muy agredecido por cualquier comentario.
Saludos.