Witam.
W osobnym unitcie chcę stworzyć tablicę stałych wartośći. A nie wiem jak zrobić aby poniższy kod zadziałął. Prosił bym
o jakiś przykład co wstawić w miejsce "???" żeby się skompilowało. Chodzi mi o coś takiego żę TWItemDesc.Col będzie
równe sześć, a następnie będzie tablica TItemList [0..7] i w niej elementy Txt: 'None'; IRes: 0; później drugi element ma
mieć Txt: 'Personnel" IRes: 1; i tak dalej. Po czym kolejny element tablicy TWItemDesc w analoficzny sposób ale już
TItemList może mieć inną ilośc elementów. a i przy okazji jeszcze jedno pytanie czy można zadeklarować taką stałą
const A : TStringList = i jak to później wypełenić czy się nie da w Delphi? Poniżej kodu z "???" obecny mój zły sposób.
type
TItemRec = record
Txt : string;
IRes : integer;
end;
TItemList = array of TItemRec;
TWItemDesc = record
Col : integer;
Itms : TItemList
end;
const
Tab : array[1..3] of TWItemDesc =
(
(Col: 0;
Itms : ???)
);
begin
end;
Może uproszczę na przykładzie, teraz mam tymczasowo taki kod jak poniżej. Jak wiadomo jest on
w ogółe nieoptymalny oraz mało elastyczny. Jak właśnie to można uprościć aby nie trzeba było w
stałcyh definiować dówch osobnych tablic, tylko zrobić tak aby mieć wszystko w jednej tablicy, ale
z możliwością przechowania numeru kolumny i listą o róznej ilości rekordów TWeapVal. Da się i jak?
type
TWeapVal = record
R : integer;
T : string;
end;
const
WeapCol6 : array[0..7] of TWeapVal =
(
(R : 0; T : 'None'),
(R : 1; T : 'Personnel'),
(R : 2; T : 'Vehicle'),
(R : 3; T : 'Vehicle & Personnel'),
(R : 4; T : 'Terrain'),
(R : 5; T : 'Personnel & Terrain'),
(R : 6; T : 'Vehicle & Terrain'),
(R : 7; T : 'All')
);
WeapCol18 : array[0..1] of TWeapVal =
(
(R : 0; T : 'False'),
(R : 1; T : 'True')
);
procedure GenerateWeapComboList(Col : integer; var Combo : TComboBox);
implementation
procedure GenerateWeapComboList(Col : integer; var Combo : TComboBox);
var
I : Byte;
begin
case Col of
6 :
begin
Combo.Clear;
for I := Low(WeapCol6) to High(WeapCol6) do
begin
Combo.Items.AddObject(WeapCol6[I].T, TOBject(WeapCol6[I].R));
end;
end;
18 :
begin
Combo.Clear;
for I := Low(WeapCol18) to High(WeapCol18) do
begin
Combo.Items.AddObject(WeapCol18[I].T, TOBject(WeapCol18[I].R));
end;
end;
end;
end;
end.