Habe es zuerst seeeehr lange mit einer ListBox versucht, und weil es nicht funktioniert hat dann mit einer RadioGroup, aber das Problem war immer das selbe.
Das Record habe ich so definiert (vor dem Variabel-Teil im interface (<- so nennt man das doch?))
Delphi-Quellcode:
type TDb = record
rechenart, variante: integer;
name: string;
end;
Und die "Datenbank" ist eine inc-datei, die unmittelbar vor dieser schlaufe eingefügt wurde.
Sie sieht so aus:
Delphi-Quellcode:
with programm[1] do begin
rechenart := 1;
variante := 1;
name := '...bis 100';
end;
with programm[2] do begin
rechenart := 2;
variante := 1;
name := '...bis 100';
end;
with programm[3] do begin
rechenart := 3;
variante := 1;
name := 'Kleines 1x1';
end;
with programm[4] do begin
rechenart := 4;
variante := 1;
name := 'Kleines 1x1';
end;
with programm[5] do begin
rechenart := 1;
variante := 2;
name := '..bis 1000';
end;
with programm[6] do begin
rechenart := 2;
variante := 2;
name := '...bis 1000';
end;
with programm[7] do begin
rechenart := 3;
variante := 2;
name := 'Mittleres 1x1';
end;
with programm[8] do begin
rechenart := 4;
variante := 2;
name := 'Mittleres 1x1';
end;
with programm[9] do begin
rechenart := 3;
variante := 3;
name := 'Grosses 1x1';
end;
with programm[10] do begin
rechenart := 4;
variante := 3;
name := 'Grosses 1x1';
end;
Vielleicht zur Erläuterung: Ich bin daran, ein Rechnungsübungsprogramm für Primarschüler zu machen. Die Rechenart (1-4) ist Addition, Subtraktion, Multiplikation und Division. Jede Rechenart hat verschiedene Varianten, (1-???), also bspw. "Kleines 1x1" (= Variante 1) und "Mittleres 1x1" (= Variante 2).
Und die ganze Prozedur sieht so aus:
Delphi-Quellcode:
procedure TForm2.FormPaint(Sender: TObject);
var i: integer;
begin
Label2.Caption := rechenartStr;
Label2.Font.Color := Farbe;
anzAufg := 10;
if rechenart = 0
then ShowMessage('
Wähle eine Rechenart!');
// RadioGroup mit Auswahlmöglichkeiten füllen
{$I db.inc}
i := 1;
j := 0;
while i < 11
do begin
if programm[i].rechenart = rechenart
then
begin
RadioGroup2.Items.Add(programm[i].
name);
j := j + 1;
end;
i := i + 1;
end;
Mir ist gerade aufgefallen, dass ich im interface, eine Variable i eingeführt habe und in der Prozedur ebenfalls. Könnte das Problem damit zusammenhangen?