Most hirtelen nem értem mire gondolsz. Ha azt szeretnéd, hogy egy számmal választasz ki egy listából valamit, akkor azt tömbnek (array) hívják.var kecske: array[0..2] of integer;
begin
kecske[0] := 1;
kecske[1] := 42;
kecske[2] := 666;
end. Ha arra gondolsz, hogy egy változóban több különböző váltózó lehet, azt meg (C-ben) struktúrának vagy (Pascalban) rekordnak hívják.var kecske: record
fasz_van: boolean;
hany_darab: integer;
end;
begin
kecske.fasz_van := true;
kecske.hany_darab := 4;
end. Rekordot tipizálni is lehet, azaz nem helyben deklarálsz változóként egy egyedi rekordot, hanem definiálsz egy rekordtípust és azzal deklarálsz változókat.type kecske = record
gyilkos: boolean;
aldozatok_szama: integer;
end;
var balfasz_ede, mekk_elek: kecske;
begin
mekk_elek.gyilkos := true;
mekk_elek.aldozatok_szama := 4;
balfasz_ede.gyilkos := false;
balfasz_ede.aldozatok_szama := 4567112;
end. Természetesen van rekordokból álló tömb is. Tipizálatlan is, meg tipizált is.var kecskefasz: array[0..1] of record
anyad: integer;
end;
type kecskesegg = record
mocskostelapo: boolean;
end;
var rohadas: array[0..2] of kecskesegg;
begin
kecskefasz[0].anyad := 111;
kecskefasz[1].anyad := 444;
rohadas[0].mocskostelapo := true and false;
rohadas[1].mocskostelapo := true xor true;
rohadas[2].mocskostelapo := not true;
end. Amit a kódodból láttam neked az utolsó kellene.type tlabel = record
caption: string;
end;
var label: array[1..9] of tlabel;
var i: integer;
begin
for i := 1 to 9 do
begin
label[i].caption := 'HAHA';
end;
end. Vagy. Amennyiben épp a GUI-t basztatod Delphiből vagy Lazarusból és nem tömbösített rekordról volt szó, hanem arról, hogy vannak a sorszámozott labeljeid (Label1, Label2, Label3, etc...) és a nevüket akarod indexelni (Labeli), nos olyat nem lehet.
Lehet helyette viszont dinamikusan létrehozni őket, kódból.var Label: array[1..9] of tcaption;
procedure init_labels;
begin
label[1] := tcaption.create;
label[1].width := 100;
label[1].height := 16;
label[1].top := 200;
label[1].left := 300;
label[1].visible := true;
// es ugyanigy az osszes tobbire
end;
procedure mittudomen;
var i: integer;
begin
for i := 1 to 9 do
begin
label[i].caption := 'HAHA';
end;
end; Aztán van még olyan, hogy pointerlistából hivatkozol rájuk. Olyankor ugyanúgy megcsinálod a labeljeidet a formon, viszont a kódban csinálsz róluk egy pointerlistát.var label: array[1..9] of ^tcaption;
procedure init_ptrs;
begin
label[1] := @Label1;
label[2] := @Label2;
label[3] := @Label3;
//etc
end;
procedure mittudomen;
var i: integer;
begin
for i := 1 to 9 do
begin
label[i]^.caption := 'HAHA';
end;
end; 'Sztannyi. |