Ich benötige in einem Programm 500 Variablen (also z.B. K1,K2…K500) vom Typ Integer. Ich brauche sie nur zur Laufzeit.
Allerdings habe ich keine Lust alle 500 Variablen einzeln zu deklarieren.
Deshalb möchte ich sie in einem statischen Array anlegen, damit ich über den Index darauf zugreifen kann.
Später im Programm soll das z.B. so aussehen:
… for M:= 1 to 500 do
… (FindComponent(Prefix + IntToStr(M))).Position:= AArray[index].K[M];
Geht das irgendwie?
Sonst müsste ich 500 Programmzeilen schreiben.
Ich programmiere mit Delphi 5. Danke schon mal.
Hi Papa-L
Klar, kein Problem
1.Variante mit einfach verschalteltem Array:
var
AArray:array[1…500] of integer;
2.Variante mit zweifach verschaltetem Array analog zu deiner Zeile:
(FindComponent(Prefix + IntToStr(M))).Position:= AArray[index].K[M];
var
AArray:array[1…4,1…500] of integer;
Die 4 müsste mit der gewünschten max. Anzahl von [Index] festgelegt werden. Aber vorsicht, pro Wert vorne werden x mal 500 Integer-Werte im RAM reserviert. Gibt also recht schnelle grossen Speicherbedarf.
Gruss
Sam
Danke für die schnelle Antwort.
Das mit dem Array war mir schon klar. Habe es angelegt.
Wenn ich z.B. „LB1.Caption:= IntToStr(Kanal[12].Nr);“ ausführen lasse, klappt alles.
Wenn ich aber z.B. LB1.Caption:= Sequenzen[12].Kanal[12].Nr;" ausführe, meldet der Compiler: „Undefinierter Bezeichner: Kanal“.
Der Quelltext am Anfang sieht so aus:
{$R *.DFM}
const pmax= 20;
type TSequenz= record
Szene: byte;
end;
const pKanal= 24; type TKanal= record
V: string[5];
Nr: integer;
end;
//Kanal1, Kanal2…Kanal500 : byte; (das will ich vermeiden)
//end;
var
Sequenzen: array[1…pmax] of TSequenz;
index: Byte= 1;
Kanal: array[1…pKanal] of TKanal;
IndexKanal: Byte= 1;
Hast Du eine Lösung?
Hi Papa_l
Hast Du eine Lösung?
Klar… der Trick ist, dass die Records verschachtelt werden. Die Reihenfolge der Definizionen der Records ist dabei wichtig. Zuerst TKanal danach TSequenz.
Versuchs mal so:
const
pmax= 20;
pKanal= 24;
type TKanal= record
V: string[5];
Nr: integer;
end;
type TSequenz= record
Szene: byte;
Kanal:Array[1…pKanal] of TKanal;
end;
var
Sequenzen: array[1…pmax] of TSequenz;
index: Byte;
IndexKanal: Byte;
begin
{ Die Eigentliche Routine }
Sequenzen[1].Kanal[2].Nr:=23;
end;
PS: Klingt nach einem Audio-Programm?!
Gruss
Sam