Ja also, ich füge zur Listbox mit AddObject nicht nur ein String hinzu, sondern auch ein Object. Und zwar so:
Delphi-Quellcode:
type
TPerson = record
Name: String[255];
Vorname: String[255]
end;
PPerson = ^TPerson;
procedure TForm1.btnAddClick(Sender: TObject);
var
Person : Pointer;
begin
GetMem(Person, sizeof(TPerson));
try
PPerson(Person)^.Name := edtName.Text;
PPerson(Person)^.Vorname := edtVorname.Text;
Listbox1.Items.AddObject(IntToStr(Listbox1.Items.Count+1), TObject(Person));
finally
FreeMem(Person, sizeof(TPerson));
end;
end;
So, nur wie komme ich jetzt da wieder dran?
Delphi-Quellcode:
procedure TForm1.ListBox1Click(Sender: TObject);
var
Person: Pointer;
begin
if Listbox1.ItemIndex > -1 then
begin
GetMem(Person, sizeof(TPerson));
try
Person := Pointer(Listbox1.Items.Objects[Listbox1.ItemIndex]);
ShowMessage(PPerson(Person)^.Name + ' - ' + PPerson(Person)^.Vorname);
finally
FreeMem(Person, sizeof(TPerson));
end;
end;
end;
So steht nur mit in der Messagebox und nach dem dritten mal klicken, fliegt mir alles um die Ohren -> Ungültige Zeiger Operation. Wie also komme ich wieder an meine Objekte?