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.