AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Array-Problem

Ein Thema von larsder4 · begonnen am 1. Mai 2008 · letzter Beitrag vom 1. Mai 2008
Antwort Antwort
larsder4

Registriert seit: 13. Feb 2008
Ort: Kellinghusen
24 Beiträge
 
#1

Array-Problem

  Alt 1. Mai 2008, 11:06
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:
private
   zahl: Integer;
   v: Integer;
   Fragenanzahl: Integer;
   frg: Array of Integer;
    { Private-Deklarationen }
zahl ist hierbei meine Randomzahl.

Delphi-Quellcode:
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;
Soweit klappt das alles auch schon ganz gut.

jetzt kommt aber mein Problem:

Delphi-Quellcode:
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;
Will ich das Programm jetzt aber compillieren, kommt folgende Fehlermeldung:

Zitat:
Im Projekt Project1.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: ‚Zugriffsverletzung bei Adresse 0046F95 in Modul ‚Project1.exe’. Lesen von Adresse 00000004’. Prozess wurde angehalten. Mite Einzelne Anweisun oder Start fortsetzen.
Ich habe überhaupt keine Ahnung, was das bedeutet
Er zeigt den Fehler bei allen Zeilen wo
memo1.Lines[frg[v]*6+6] vorkommt.

Sorry, wegen meinem Quellcode. Für Profis muss der katastrophal aussehen
Fehler vermeidet man, indem man Erfahrungen sammelt,
Erfahrungen sammelt man, indem man Fehler macht
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Array-Problem

  Alt 1. Mai 2008, 12:14
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];
Markus Kinzler
  Mit Zitat antworten Zitat
larsder4

Registriert seit: 13. Feb 2008
Ort: Kellinghusen
24 Beiträge
 
#3

Re: Array-Problem

  Alt 1. Mai 2008, 12:17
Die erste Zeile in der Textdatei war das Thema, daran lags nicht.
Habe das Problem jetzt aber gelöst

Danke
Fehler vermeidet man, indem man Erfahrungen sammelt,
Erfahrungen sammelt man, indem man Fehler macht
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Array-Problem

  Alt 1. Mai 2008, 12:28
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 [/edit]
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz