So ist besser .. da musst du dich nicht mit dynamischen arrays abquaelen ^^ Code: var i,j,x,y: Integer; a: Array [1..x,1..y] of Integer; // <-- Hier fuer x und y die Maximalwerte einsetzen Begin For i := 1 to x do For j := 1 to y do a[i,j] := i* j; end; Alternativ kannst du das auch auf ein eindimensionales Array ummappen z.B. auf einen Pointer Code: Type PInteger = ^Integer; //Zeiger auf Integertyp Var i,j : integer; // Zaehlvariablen buffer : longint; // Addresse fuer unseren Zeiger // als longint, da damit besser gerechnet werden kann, als mit einem Pointer begin GetMem(Pointer(buffer),MaxX*MaxY*SizeOf(Integer)) ); // Speicher reservieren fuer Breite*Hoehe Elemente // der Speichergroesse eines Integers for i:=0 to MaxX-1 do // Nullindexierte Addressierung des Arrays for j:=0 to MaxY-1 do PInteger( buffer+ (i+j*MaxX)*SizeOf(Integer) )^:=i*j; // Indexpaar in Realaddresse umrechnen und dieser Wert zuweisen FreeMem(Pointer(buffer)); //Speicherfreigabe nicht vergessen, wenn mans nicht mehr braucht end;
var i,j,x,y: Integer; a: Array [1..x,1..y] of Integer; // <-- Hier fuer x und y die Maximalwerte einsetzen Begin For i := 1 to x do For j := 1 to y do a[i,j] := i* j; end;
Type PInteger = ^Integer; //Zeiger auf Integertyp Var i,j : integer; // Zaehlvariablen buffer : longint; // Addresse fuer unseren Zeiger // als longint, da damit besser gerechnet werden kann, als mit einem Pointer begin GetMem(Pointer(buffer),MaxX*MaxY*SizeOf(Integer)) ); // Speicher reservieren fuer Breite*Hoehe Elemente // der Speichergroesse eines Integers for i:=0 to MaxX-1 do // Nullindexierte Addressierung des Arrays for j:=0 to MaxY-1 do PInteger( buffer+ (i+j*MaxX)*SizeOf(Integer) )^:=i*j; // Indexpaar in Realaddresse umrechnen und dieser Wert zuweisen FreeMem(Pointer(buffer)); //Speicherfreigabe nicht vergessen, wenn mans nicht mehr braucht end;
--
Geändert von Ineluki (16.03.2004 um 00:48 Uhr)
Foren-Regeln