Archiv verlassen und diese Seite im Standarddesign anzeigen : delphi--noob-frage/for-schleife+variablen
starlight86
14.03.2004, 16:11
ich will folgendes machen:
in einer for-schleife innerhalb einer 2. for-schleife eine variable machen, deren name von den zählvariablen abhängt. wie mahce ich das?
ich dachte etwa an sowas:
for i=1 to x do
begin
for j=1 to y do
a(i;j):=i*j;
end;
aber so funktioniert das net und ich müsste noch wissen, wie ich a definieren muss, also was für nen typ variable.
danke im oraus für die hilfe
Du deklarierst alles bis auf "a" als Integer. Aus "a" selbst machst du nen 2 Dimensionalen Array:
var i,j,x,y: Integer;
a: Array of Array of Integer;
Begin
Setlength(a,x,y); //Setz die länge des Arrays - ob das so funzt weis ich jetzt nicht genau
For i := 1 to x do
For j := 1 to y do
a[i,j] := i* j;
end;
Mit "a" hast du sozusagen ein 2 Dimensionales Raster in das du Zahlen reinschreiben kannst. Mit "i" und "j" gibst du die Zelle an in der du was machen willst.
So ist besser .. da musst du dich nicht mit dynamischen arrays abquaelen ^^
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
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;
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.