Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

ListBox1.Items.AddObject(...) GetObject???

  Alt 1. Nov 2003, 09:05
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?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat