Hi!
Ich versuche schon die ganze Zeit ein dynamisches Array dass ein Feld meines Formulars ist in eine lokale Prozedurvariable "echt" zu kopieren.
Zur Zeit mache ich das über eine Doppelschleife (da 2D-Array):
Delphi-Quellcode:
type
TMyType = record
x, y: double;
end;
TForm1 = class(TForm)
...
Grid: array of array of TMyType;
end;
.
.
.
procedure DoSomething;
var x, y: integer;
LGrid: array of array of TMyType;
begin
SetLength(LGrid, Length(Grid), Length(Grid[0]));
for y := 0 to Length(LGrid[0])-1 do
begin
for x := 0 to Length(LGrid)-1 do
begin
LGrid[x,y].x := Grid[x,y].x;
LGrid[x,y].y := Grid[x,y].y;
end;
end;
end;
Das finde ich allerdings ziemlich unschön. Copy aber meckert, dass der Parameter nicht möglich sei (wobei in der
OH steht, dass dyn. Arrays auch gehen (aber wohl keine mehrdim.)), und mit Move produziere ich dauernd Zugriffsverletzungen
So hab ich's versucht:
Delphi-Quellcode:
SetLength(LGrid, Length(Grid), Length(Grid[0]));
Move(Grid, LGrid, Length(Grid) * Length(Grid[0]) * SizeOf(TMyType);
Habe auch mal versucht nicht bei Grid und LGrid "array of array of TMyType" zu schreiben, sondern hab nen Typ dafür gemacht. Aber in beiden Fällen gibt das leider eine
AV an Adresse 0x00000000. Wie kann ich denn mehrdim. dyn. Arrays auf einen Schlag kopieren?
Danke euch schon mal!
dizzy
Fabian K.
INSERT INTO HandVonFreundin SELECT * FROM Himmel