Zitat:
Bei meinem Record funktioniert auch alles glatt,
aber auch nur scheinbar, auch hier werden Stringreferenzen und nicht Inhalte kopiert.
Im Debugger sieht alles gut aus, aber wehe Du fasst einen der Strings an.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
const
C='Vergleichsstring';
var
i:Integer;
begin
SetLength(meinRecord,100);
meinRecord[0].id := 1;
meinRecord[0].timestamp := C;
meinRecord[0].nr := 1;
for i := 1 to High(meinRecord) do move(meinRecord[0],meinRecord[i],SizeOf(TRecord));
meinRecord[0].timestamp := 'Wurscht'; // jetzt machen wir alles kaputt
memo1.Lines.Add( meinRecord[1].timestamp);
end;
gültige Kopien bekommst Du durch direkte Zuweisung
meinRecord[x] := meinRecord[y];
analog für matrix
Delphi-Quellcode:
begin
SetLength(Matrix,10,10);
for I := 0 to 9 do Matrix[0][i] := IntToStr(i);
Matrix[1]:=Matrix[0];
for I := 0 to 9 do Memo1.Lines.Add(Matrix[1][i]);
end;