Einzelnen Beitrag anzeigen

moelski

Registriert seit: 31. Jul 2004
1.110 Beiträge
 
Delphi 2010 Professional
 
#1

TObjectList - Element austauschen

  Alt 18. Sep 2010, 16:51
Delphi-Version: 2010
Moin !

Ich habe da zwei Objectlisten - Input und Output.
In Input habe ich Referenzen auf zwei Klassen.

Dann möchte ich Output Elemente von Input zuweisen.
Das geht auch soweit mit z.B. Output.Add(Input.Items[0]);

So nun würde ich aber gerne ein Item der Outputliste ändern.

Ich habe es so versucht:
Output.Items[1] := Input.Items[1];
Aber das ist nicht korrekt.

Nur wie ist das richtige Vorgehen?
Die Items in Input sollen bestehen bleiben, ich will die also nicht in Output kopieren.

Anbei mal mein Testcode:
Delphi-Quellcode:
unit Test;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Contnrs, StdCtrls;

type
  TForm3 = class(TForm)
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

TItem = class
  private
    FValueString : string;
  public
    property ValueAsString : string read FValueString write FValueString;
  end;

var
  Form3 : TForm3;
  Input, Output : TObjectList;

implementation

{$R *.dfm}

procedure TForm3.FormCreate(Sender: TObject);
var item : TItem;
    text : string;
    I : Integer;
begin
  Input := TObjectList.Create;
  Output := TObjectList.Create;

  item := TItem.Create;
  item.FValueString := 'Test 1';
  Input.Add(item);

  item := TItem.Create;
  item.FValueString := 'Test 2';
  Input.Add(item);

  Output.Add(Input.Items[0]);
  Output.Add(Input.Items[0]);
  Output.Add(Input.Items[1]);

  for I := 0 to Output.Count - 1 do
    text := text + TItem(Output.items[i]).ValueAsString +#13#10;
  ShowMessage(text);
end;

procedure TForm3.Button1Click(Sender: TObject);
var i : smallint;
begin
  Output.Items[1] := Input.Items[1];

  for I := 0 to Output.Count - 1 do
    text := text + TItem(Output.items[i]).ValueAsString +#13#10;
  ShowMessage(text);
end;

end.
Dominik Schmidt
Greetz Dominik

I love Delphi 2007/2010
  Mit Zitat antworten Zitat