Einzelnen Beitrag anzeigen

Benutzerbild von dizzy
dizzy

Registriert seit: 26. Nov 2003
Ort: Lünen
1.932 Beiträge
 
Delphi 7 Enterprise
 
#1

Mehrdim. Dyn. Array of TMyType echt kopieren

  Alt 18. Jul 2004, 18:26
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
  Mit Zitat antworten Zitat