![]() |
Array-Problem
Hallo,
wir sollen ein Quiz für die Schule schreiben. Nun stoße ich jedoch auf ein Problem: Ich wollte die Reihenfolge der Fragen zufällig in einem Array anordnen und mir davon die ersten 10 Fragen nehmen, die gestellt werden sollen, somit vermeide ich, dass eine Frage doppelt kommt.
Delphi-Quellcode:
zahl ist hierbei meine Randomzahl.
private
zahl: Integer; v: Integer; Fragenanzahl: Integer; frg: Array of Integer; { Private-Deklarationen }
Delphi-Quellcode:
Soweit klappt das alles auch schon ganz gut.
procedure TForm1.FormCreate(Sender: TObject);
var i,j: Integer; begin Randomize; memo1.Lines.LoadFromFile('Geschifragen.txt'); neue_frage; Fragenanzahl := Memo1.Lines.Count div 6; SetLength(frg, Fragenanzahl); for j := 0 to Fragenanzahl do frg[j] := 0; zahl := random(Fragenanzahl); frg[zahl] := 0; for i := 1 to Fragenanzahl do begin repeat zahl := random(Fragenanzahl); until frg[zahl] = 0; frg[zahl] := i; end; v := 0; end; jetzt kommt aber mein Problem:
Delphi-Quellcode:
Will ich das Programm jetzt aber compillieren, kommt folgende Fehlermeldung:
procedure TForm1.neue_frage;
begin Inc(v); Memo1.Lines[(frg[v]*6)+6] := Memo1.Lines[StrToInt(Memo1.Lines[(frg[v]*6)+6])]; //hier wandel ich die Textdatei ein wenig um, weil in der Textdatei an Stelle der Antworten nur die absolute Zeile der Textdatei steht, wo die jeweilig richtige Antwort zu finden ist label1.Caption := memo1.Lines[(frg[v]*6)+1]; label2.Caption := memo1.Lines[(frg[v]*6)+2]; label3.Caption := memo1.Lines[(frg[v]*6)+3]; label4.Caption := memo1.Lines[(frg[v]*6)+4]; label5.Caption := memo1.Lines[(frg[v]*6)+5]; end; procedure TForm1.LabelClick(Sender: TObject); var Antwort: string; begin Antwort := memo1.Lines[frg[v]*6+6]; if (Sender as TLabel).Caption = Memo1.Lines[((frg[v]*6)+6)] then begin //wenn die Frage richtig beantwortet wird. end else //wenn sie falsch beantwortet wird. end; Zitat:
Er zeigt den Fehler bei allen Zeilen wo
Delphi-Quellcode:
vorkommt.
memo1.Lines[frg[v]*6+6]
Sorry, wegen meinem Quellcode. Für Profis muss der katastrophal aussehen :spin: |
Re: Array-Problem
Delphi-Quellcode:
for j := 0 to Fragenanzahl-1 do
Delphi-Quellcode:
Memo1.Lines[(frg[v]*6)+5] := Memo1.Lines[StrToInt(Memo1.Lines[(frg[v]*6)+5])];
... label1.Caption := memo1.Lines[(frg[v]*6)]; label2.Caption := memo1.Lines[(frg[v]*6)+1]; label3.Caption := memo1.Lines[(frg[v]*6)+2]; label4.Caption := memo1.Lines[(frg[v]*6)+3]; label5.Caption := memo1.Lines[(frg[v]*6)+4]; |
Re: Array-Problem
Die erste Zeile in der Textdatei war das Thema, daran lags nicht.
Habe das Problem jetzt aber gelöst :wink: Danke |
Re: Array-Problem
Viel eleganter ist es übrigens, die Fragen zufällig zu mischen (bzw. deren Nummer) und dann einfach die ersten X Fragen zu nehmen.
[edit] Aber Hauptsache, es läuft :thumb: [/edit] |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:39 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz