Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

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

Re: Objekt kopieren

  Alt 30. Mai 2007, 14:53
@Udontknow: Meine Item-Klasse ist vom Typ TList:
Delphi-Quellcode:
TPageCollection = Class(TObject);
  private
    FInnerList: TList;
    x: Double;
    // ...;
    // ...;
  public
    procedure Add;
    // ...;
    // ...;
end;
oder meinst du den Typ der Objekte in der Liste? Die sind vom Typ TImageEnvect (so was wie ein TImage) und kennt die Methode Assign (falls das hilft).

Lösen wir uns mal von dem TImage. Ich habe eben mal schnell eine Demo erstellt:
Delphi-Quellcode:
unit Adressen;

interface

uses
  Classes;

type
  TKontakt = class(TObject)
  private
    FName: String;
    FAlter: Integer;
    function GetAlter: Integer;
    function GetName: String;
    procedure SetAlter(const Value: Integer);
    procedure SetName(const Value: String);
  public
    property Name: String read GetName write SetName;
    property Alter: Integer read GetAlter write SetAlter;
  end;

  TKontaktCollection = class(TObject)
  private
    FInnerList: TList;
    function GetItem(Index: Integer): TKontakt;
    procedure SetItem(Index: Integer; const Value: TKontakt);
  public
    constructor Create;
    destructor Destroy; override;
    procedure Add(Item: TKontakt);
    function Count: Integer;
    property Items[Index: Integer]: TKOntakt read GetItem write SetItem;
  end;

implementation

{ TKontakt }

function TKontakt.GetAlter: Integer;
begin
  Result := FAlter;
end;

function TKontakt.GetName: String;
begin
  Result := FName;
end;

procedure TKontakt.SetAlter(const Value: Integer);
begin
  FAlter := Value;
end;

procedure TKontakt.SetName(const Value: String);
begin
  FName := Value;
end;

{ TCollection }

procedure TKontaktCollection.Add(Item: TKontakt);
begin
  FInnerList.Add(Item);
end;

function TKontaktCollection.Count: Integer;
begin
  Result := FInnerLIst.Count;
end;

constructor TKontaktCollection.Create;
begin
  inherited;
  FInnerList := TLIst.Create;
end;

destructor TKontaktCollection.Destroy;
var
  i : Integer;
begin
  if FInnerList.Count > 0 then
  begin
    for i := FInnerList.Count - 1 to 0 do
    begin
      TObject(FInnerList.Items[i]).Free;
    end;
  end;
  inherited;
end;

function TKontaktCollection.GetItem(Index: Integer): TKontakt;
begin
  Result := FInnerList.Items[Index];
end;

procedure TKontaktCollection.SetItem(Index: Integer; const Value: TKontakt);
begin
  FInnerList.Items[Index] := Value;
end;

end.
Wie stelle ich jetzt eine Kopie von TKontaktCollection her mitsamt der inneren List? Das ist das Problem. Den bisherigen Code hab eich leider nicht ganz verstanden, weil es doch irgendwie immer etwas durcheinander ging.

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