Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

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

Re: Objekt kopieren

  Alt 30. Mai 2007, 15:29
Ich glaube ich habs:
Delphi-Quellcode:
procedure TKontakt.Assign(Source: TKontakt);
begin
  Name := Source.Name;
  Alter := Source.Alter;
end;
Und:
Delphi-Quellcode:
procedure TKontaktCollection.Assign(Source: TKontaktCollection);
var
  i: Integer;
  kontakt: TKontakt;
begin
  for i := 0 to source.count-1 do
  begin
    kontakt := TKontakt.Create;
    kontakt.Assign(source.Items[i]);
    Add(kontakt);
  end;
end;
Der Test:
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
var
  TempCollection: TKontaktCollection;
  i: Integer;
begin
  TempCollection := TKontaktCollection.Create;
  try
    TempCollection.Assign(Adressen);
    for i := 0 to TempCollection.Count - 1 do
    begin
      TempCollection.Items[i].Name := TempCollection.Items[i].Name + ' ist doof.';
      ListBox2.Items.Add(TempCollection.Items[i].Name);
    end;
  finally
    TempCollection.Free;
  end;
end;
und:
Delphi-Quellcode:
procedure TForm1.UpdateLB1;
var
  i: Integer;
begin
  Listbox1.Clear;
  for i := 0 to Adressen.Count - 1 do
    ListBox1.Items.Add(Adressen.Items[i].Name + ', ' + IntToStr(Adressen.Items[i].Alter));
end;
Die TempCollection wird am Ende der Procedure ja freigegeben. Wären jetzt nur Pointer in der Liste, würde Prozedur UpdateLB1 gar nichts mehr ausgeben - tut sie aber. Ergo wurden die Objekte kopiert und nicht nur die Pointer. Oder sehe ich das falsch?

Im Anhang das ganze Projekt.
Angehängte Dateien
Dateityp: zip demo_128.zip (3,7 KB, 3x aufgerufen)
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat