| Autor |
Beitrag |
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Do 12.12.02 17:25
Quelltext
Wenn Du die Zeile rausschmeisst, läuft das Programm bestimmt immer noch. Das kann keinen Unterschied machen.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
a.C.k
      
Beiträge: 93
WIN 2000
Delphi 6 Enterprise ; Delphi 7 Studio
|
Verfasst: Do 12.12.02 17:39
Du hast bestimmt das "TForm1.FormCreate" so eingefügt...
Mach das mal in deinem Hauptformular (sollte Form1 sein..) über den Objektinspektor. Ereignisse -> OnGreate...
_________________ Wer nicht gerne denkt, sollte wenigstens von Zeit zu Zeit seine Vorurteile neu gruppieren.
|
|
01Detlef 
      
Beiträge: 85
|
Verfasst: Do 12.12.02 17:55
Meiine FRage ist jetzt nur, was die 1 da überhaupt soll, ich wollte doch 2 versuche...
und jetzt noch eine andere sache, ich habe 3 forms und nun möchte ich die reihenfolge ändern, in der sie in der .exe aufgerufen werden, wie geht das?? also jetzt ist in der reihenfolge 3-2-1 programmiert, mit den links und so und nun will ich 1-2-3, wie ändere ich das??
Danke Detlef
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Do 12.12.02 18:05
1. Wo hast Du die 1 denn überhaupt her. Da sollte beide Male eine 2 stehen. Und es muss auch mit der 2 funktionieren.
2. Du kannst in den Optionen zum aktuellen Projekt einstelle, in welcher Reihenfolge die Formen erstellt werden sollen. Dann änderst Du noch die Links. Ich würde ja nicht für jede Frage eine neue Form aufrufen. Speichere doch Frage und Antwort in einem Array und ändere bei einer neuen Frage einfach nur das Label, in dem die Frage steht.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
01Detlef 
      
Beiträge: 85
|
Verfasst: Mo 23.12.02 21:40
danke,
sorrey das ich jetzt erst schreibe.
zu 2) ich habe jetzt auch gemerkt, dass ich nicht immer ein form öffnen sollte, viele fehler und speicherplatz!
Nur mit dem array ist das ziemlich schwer, ich muss die fragen darin speichern, die antworten und die korrekten Antworten! Muss ich da einen vierdimensionalen Array aufbauen oder muss ich da was mit type aufbauen?
Kann mir da einer helfen?
Danke Detlef
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Do 26.12.02 20:56
Warum möchtest Du die korrekten Antworten speichern?
Aber sowohl die Idee mit den mehreren Dimensionen als auch das mit dem Type sind gut. In diesem Fall ist es ziemlich egal, welche der beiden Arten du nimmst, aber um den Lerneffekt hoch zu halten, versuche ich jetz mal zu erklären, wie das mit dem Type geht.
Ich würde hier einen Record verwenden. Also so:
Quelltext 1: 2: 3: 4:
| TYPE TFrage = RECORD Frage : STRING[200]; Antwort: Char; END; |
Diese schreibst Du dann in ein Array. So:
Quelltext 1:
| VAR Frage : ARRAY OF TFrage; |
oder, wenn die Anzahl der Fragen bekannt und z.B. 20 ist:
Quelltext 1:
| VAR Frage : ARRAY[0..19] OF TFrage; |
Außerdem solltest Du global speichern, bei welcher Frage du gerade bist.
Quelltext
So, und dann gehst Du ganz einfach alle Fragen durch.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36:
| procedure TForm1.FormCreate(Sender: TObject); begin Versuche:=0; //... //hier musst Du jetzt noch Dein Array füllen. Ich würde mir ein kleines //Programm schreiben, in das Du Frage und Antwort eingeben kannst, //und welches alles in eine Datei speichert, die dann hier gelesen wird. //... nummer:=0; Label_Frage.Caption:=Frage[nummer].Frage; end;
procedure TForm1.Button1Click(Sender: TObject); var antwort: STRING; begin Antwort:=edit1.text[1]; IF Antwort = Frage[nummer].Antwort THEN begin Versuche := 0; inc(nummer); Label_Frage.Caption:=Frage[nummer].Frage; end ELSE begin IF Versuche <1 THEN begin showmessage('leider Falsch....'); Versuche := Versuche +1 ; //bzw. INC(Versuche) end ELSE
IF Versuche >= 1 THEN BEGIN showmessage('Game Over.....'); form1.close; end; end; end; |
So (oder so ähnlich) müsste es gehen. Da mir das Programm drum herum fehlt, konnte ich den Quelltext nicht testen. Ein paar Fehler können sich da also eingeschlichen haben.
MfG,
Peter
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
01Detlef 
      
Beiträge: 85
|
Verfasst: Mo 06.01.03 20:01
frohes neues jahr,
da ich im urlaub war kann ich erst jetzt antworten.
also die prozedur mit den versuchen habe ich modifizert, aber mein problem besteht darin, die fragen bzw. antworten also die arrays in das programm einzufügen!
am besten wäre ja eine eigene datei, die die zuweisungen beinhaltet, aber wie mache ich das mit den arrays?
Danke Detlef
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 06.01.03 20:19
Hi!
Wie Du Arrays in einer Datei speicherst und liest, hatte ich in hier mal erklärt. Wie gesagt: du solltest Dir ein Miniprogramm schreiben, mit dem Du ganz einfach Fragen und Antworten in einer Datei speichern kannst, die von deinem Quizprogramm dann gelesen wird.
Entschuldige, dass ich nicht ausführlicher antworte, aber im Moment habe ich noch einiges zu tun. Aber vielleicht hilft Dir das hier schon mal weiter.
MfG,
Peter
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
01Detlef 
      
Beiträge: 85
|
Verfasst: Di 07.01.03 15:17
danke,
ich denke doch richtig, dass ich in diese datei das type mit den array speichern muss? datein einzulesen muss ich mich erst informieren.
und um die infos den labels zuzuweisen benutze ich die array und die for schleife?
wie weise ich denn den labels einen text zu?
label1.caption:='sdfs';??
Danke Detlef
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Di 07.01.03 16:31
Hi!
So, jetzt habe ich wieder mehr Zeit und kann die Defizite meiner vorigen Antwort ein bisschen aufholen.
Nehmen wir mal an, Deine Fragen und Antworten sind in der Datei "jauch.dat" gespeichert, die im Root-Verzeichnis liegt. Wie die Fragen und Antworten dort hinein kommen, dazu später.
Folgender Code im OnCreate-Ereignis Deiner Hauptform läft die Fragen und Antworten in Dein Array 'frage : ARRAY OF TFrage':
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| VAR my_file : File of TFrage; begin SetLength(Frage,0); //Array 'Frage' soll am Anfang 0 Datensätze enthalten AssignFile(my_file,'jauch.dat'); //Weise der Datei den Dateinamen zu {$I-} //Fehlermeldung "ausschalten" Reset(my_file); //Datei öffnen {$I+} //Fehlermeldung "einschalten" IF IOResult=0 then begin //Wurde die Aktion korrekt ausgeführt? while not eof(my_file) do //Solange das Ende der Datei nicht erreicht wurde... begin SetLength(frage,Length(frage)+1); //Ergänze das Array "Frage" um einen Datensatz Read(my_file,frage[High(frage)]); //Lese den gerade erzeugten Datensatz aus der Datei end; CloseFile(my_file); //Datei wieder schließen end; end; |
Wenn Du eine solche Datei erstellen willst (also die Datensätze eines bestehenden Arrays speichern willst), dann machst Du das so:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| VAR my_file : File of TFrage; begin AssignFile(my_file,'jauch.dat'); //Weise der Datei den Dateinamen zu {$I-} //Fehlermeldung "ausschalten" ReWrite(my_file); //Datei neu schreiben, ACHTUNG: bestehende Datei wird überschrieben!!! {$I+} //Fehlermeldung "einschalten" IF IOResult=0 then begin //Wurde die Aktion korrekt ausgeführt? for i:=0 TO High(frage) DO //Vom ersten bis zum letzten Datensatz des Arrays 'Frage' ... Write(my_file,frage[i]); //...schreibe den Datensatz in die Datei CloseFile(my_file); //Datei wieder schließen end; end; |
Wie Du den Labels dann die Fragen zuweist, steht in meinem Posting vom 26.12.02 19:56h im dort als Code angebeben Button1Click-Ereignis.
Ich hoffe, ich konnte Dir dieses Mal besser helfen!
MfG,
Peter
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
01Detlef 
      
Beiträge: 85
|
Verfasst: Di 07.01.03 18:05
wirklich vielen dank!
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13:
| VAR my_file : File of TFrage; begin AssignFile(my_file,'jauch.dat'); //Weise der Datei den Dateinamen zu {$I-} //Fehlermeldung "ausschalten" ReWrite(my_file); //Datei neu schreiben, ACHTUNG: bestehende Datei wird überschrieben!!! {$I+} //Fehlermeldung "einschalten" IF IOResult=0 then begin //Wurde die Aktion korrekt ausgeführt? for i:=0 TO High(frage) DO //Vom ersten bis zum letzten Datensatz des Arrays 'Frage' ... Write(my_file,frage[i]); //...schreibe den Datensatz in die Datei CloseFile(my_file); //Datei wieder schließen end; end; |
hier kommt jetzt mein array hinein?!?!?!? und mit dem anderen wird das gelesen, alles klar! (verstehen tue ich das noch nicht, aber das werde ich noch versuchen!)
also ich habe mir jetzt überlegt so den array zu füllen:
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| var Nummer: Integer;
Type TFrage = Record Frage : String; Antwort : char; var Frage : Array[1..15] of TFrage; For Frage:=1 to 15 do begin Frage[1].Frage:=.. and Frage[1].Antwort:= .. and nummer = 1 ;// kann man jetzt Frage[1].Frage:=Label1.. schreiben?............ |
reiß mir bitte nicht den kopf ab , auch wenn es komplett falsch ist, bitte!
ich weiss nämlich nicht, wie ich die drei sachen sonst in jede frage einbauen soll
(frage,antwort,nummer)
danke Detlef
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Di 07.01.03 18:49
Hi!
| Zitat: | | reiß mir bitte nicht den kopf ab , auch wenn es komplett falsch ist, bitte! |
Nein, bestimmt nicht. Nur durch ausprobieren lernt man.
| Zitat: | | hier kommt jetzt mein array hinein?!?!?!? |
Damit wird Dein Array in eine Datei gespeichert, damit Du es wiederverwenden kannst.
| Zitat: | | verstehen tue ich das noch nicht, aber das werde ich noch versuchen! |
Immer nachfragen, egal wie oft!
Nun zu Deinem Vorschlag: Sei Du mir nicht böse, aber könntest Du erklären, was Du genau jetzt machen willst? Und auch ein paar Erklärungen zum Quelltext geben? (Ein paar Fehler sind mir schon aufgefallen, aber es ist wahrscheinlich sinnvoller, da erst etwas zu zu sagen, wenn ich genau weiß, was Du machen wolltest.)
MfG,
Peter
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
01Detlef 
      
Beiträge: 85
|
Verfasst: Mi 08.01.03 16:36
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| var Nummer: Integer;
Type TFrage = Record Frage : String; Antwort : char; var Frage : Array[1..15] of TFrage;
For Frage:=1 to 15 do begin Frage[1].Frage:=.. and Frage[1].Antwort:= .. and nummer = 1 ;// kann man jetzt Frage[1].Frage:=Label1.. schreiben?............ |
ich muss doch für 15 fragen, jedem label (5 labels: 1=frage und 4=mögliche Antworten) eine zuweisung machen!
Deshalb habe ich jetzt das array genommen bzw. type um die zuweisungen zu machen.
Quelltext 1: 2:
| Frage[1].Frage:= // muss den labels die erste Frage/Antwort zugewiesen werden! Frage[1].Antwort:=// muss der richtige buchstabe hinein! |
kann das sein, dass du dafür einen array benutzt hast für die nummer?
Quelltext 1:
| IF Antwort = Frage[nummer].Antwort THEN |
dann verstehe ich aber nicht, wie du deinen array aufgebaut hast?
Frage[nummer]? muss in die klammer nicht immer die zahl also hier 1..15?
Danke erstmal Delef
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mi 08.01.03 17:25
| Zitat: | | ich muss doch für 15 fragen, jedem label (5 labels: 1=frage und 4=mögliche Antworten) eine zuweisung machen! |
Ja, aber mit Deinem Code machst Du den gleichen Fehler, wie Du ihn ganz am Anfang gemacht hast: du brauchst diese Schleife nicht.
Das OnClick-Ereignis Deines Buttons ist für Dich die Schleife. Jedesmal, wenn eine Frage richtig beantwortet wurde, lädst Du einen neuen Text in deine Labels. Aber Du musst eigentlich nur Dein Label für die Frage ändern, da Du doch immer die gleichen Antwortmöglichkeiten hast ('a' bis 'd'). {Ich war davon ausgegangen, dass eine Frage beispielswiese so aussieht: "Was ist die Hauptstadt von Deutschland? (a: Düsseldorf, b:Bonn, c:Berlin, d:München)".} Und wie Du das machst, habe ich in meinem Posting vom 26.12. 19:56h bereits beschrieben. (Ich nehme an, daraus hast Du auch die von Dir zitierte IF-Abfrage.)
Nun zu Deiner Frage mit dem Array:
| Peter Lustig hat folgendes geschrieben: | | Folgender Code im OnCreate-Ereignis Deiner Hauptform läft die Fragen und Antworten in Dein Array 'frage : ARRAY OF TFrage': |
Hiermit sollte doch eigentlich schon klar sein, dass ich die Fragen (mit ihren Antworten) in ein Array lade. Das Array hat so viele Elemente, wie es Fragen gibt. Jede Frage ist ein Element.
Mit der Variable'nummer' zähle ich, welche Frage gerade gefragt wird bzw. gefragt werden soll. Wenn ich also Frage 3 stellen möchte, muss ich das dritte Element des Arrays ansprechen. In meinem Beispiel beginne ich die Fragen allerdings ab 0 zu zählen, die Frage 3 hätte also 'nummer' = 2.
Nun, und was das ansprechen von Elementen eines Arrays anbelangt: das kann ich auch mit Variablen machen. Frage[nummer] ist also beispielsweise für nummer=0 das gleiche wie Frage[0], wenn nummer=5 ist, dann ist Frage[nummer] das gleiche wie Frage[5].
Ein Beispiel für Dein Array:
Quelltext 1: 2: 3: 4: 5:
| nummer Frage Antwort ---------------------------------------------------------- 0 Was ist ein Array? a 1 Was ist ein String? b 2 Was ist ein Integer? c |
In die Fragen würde jetzt noch die Aufzählung der Möglichkeiten gehören, aber dass ist ja nicht so wichtig jetzt. Wenn ich jetzt also eine Information aus dem Array abfragen möchte, muss ich zuerst angeben, welches Element (welche Zeile) des Arrays ich ansprechen möchte, und dann welche Eigenschaft des Record ich abfragen möchte. Nehmen wir an, ich möchte von 2. Element die Antwort wissen. Dann sieht das so aus:
Frage[1].Antwort
Ich hoffe, das klärt schon einiges (wenn wahrscheinlich auch nicht alles).
MfG,
Peter
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
01Detlef 
      
Beiträge: 85
|
Verfasst: Fr 10.01.03 19:33
hallo,
Aber ich muss doch nicht nur das label von der Frage ändern, die 4 Möglichkeiten sind doch von Frage zu Frage auch verschieden, nur a bis d bleibt gleich! a bis d wollte ich ja in eine edit-Kompo schreiben, wo das dann kontrolliert wird!
Also deinen Vorschlag habe ich verstanden, auch das der Buttonklick die schleife ist! Aber die ganze Umsetzung:
Die Daten müssen in einem Array gespeichert werden, Fragen und Antworten.
Die Nummer der Frage muss mit dem klick(wenn es richtig ist) um eins erhöht werden!
Nur diese ganzen Infos muss ich ja nun zusammenfassen! Wie mache ich das, mit dem array aufruf ohne eine for-schleife?
ich weiss, dass man die einzelnen nummern ansprechen kann mit [...]?!
Eine Sache habe ich noch gar nicht verstanden, wie füge ich meine eigenen Fragen dem Quiz zu (besser den Labels)??
Danke Detlef
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Fr 10.01.03 19:55
Na dann mal los....
1. Das mit den Antworten war von mir falsch gedacht. So, wie Du es jetzt beschreibst, musst Du den Aufbau Deines Records noch umgestalten. Es sollte statt:
Quelltext 1: 2: 3: 4:
| TYPE TFrage = RECORD Frage : String; antwort : Char; END; |
jetzt so aussehen:
Quelltext 1: 2: 3: 4: 5:
| TYPE TFrage = RECORD Frage : String; a,b,c,d : String; antwort : Char; END; |
In 'Frage' ist weiterhin die Frage gespeichert, die 'a' bis 'd' enthalten die möglichen Antworten, 'antwort' entält weiterhin den Buchstaben, der der richtigen Antwort zugeordnet ist.
Damit muss sich dann auch Dein ButtonClick ändern, da Du da drin ja auch mehr Informationen verbraten musst.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31:
| procedure TForm1.Button1Click(Sender: TObject); var antwort: STRING; begin Antwort:=edit1.text[1]; IF Antwort = Frage[nummer].Antwort THEN begin Versuche := 0; inc(nummer); Label_Frage.Caption:=Frage[nummer].Frage; with Frage[nummer] do //ERKLRÄRUNG IM POSTING begin Label_a.Caption:=a; Label_b.Caption:=b; Label_c.Caption:=c; Label_d.Caption:=d; end; end ELSE begin IF Versuche <1 THEN begin showmessage('leider Falsch....'); Versuche := Versuche +1 ; //bzw. INC(Versuche) end ELSE
IF Versuche >= 1 THEN BEGIN showmessage('Game Over.....'); form1.close; end; end; end; |
So, wie Du siehst werden nun mehr Labels aktualisiert und auch auf eine ein bisschen andere Weise als vorher.
Ich habe den Code dahingehend vereinfacht, dass ich die WITH..DO-Funktion verwendet habe, die bei Objekten/Records einiges an Schreibarbeit spart. Diese Funktion sagt dem Compiler einfach, dass er Variablen, die nicht anderweitig definiert sind, in dem Record/Objekt suchen soll, welches in der WITH..DO-Zeile steht. In unserem Fall: die Variablen a,b,c,d stehen in keiner VAR-Zeile, sind also auch nicht definiert. Also sucht der Compiler sie in dem Record 'Frage[nummer]' und wird dort auch fündig.
| Zitat: | | Wie mache ich das, mit dem array aufruf ohne eine for-schleife? |
Über die Variable nummer. Sie wird immer dann erhöht, wenn eine neue Frage geladen werden soll und damit auch der Index, der beim Array angesprochen wird, da ja Frage[nummer] angesprochen wird.
| Zitat: | | Eine Sache habe ich noch gar nicht verstanden, wie füge ich meine eigenen Fragen dem Quiz zu (besser den Labels)?? |
Wie ich schon mehrmals erwähnte, musst Du Dir dafür ein Miniprogramm schreiben. Aber das kann man (wenn man es nicht zu komfortabel macht) ziemlich einfach machen. Und Du musst es ja auch nicht alleine schreiben.
MfG,
Peter
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
01Detlef 
      
Beiträge: 85
|
Verfasst: Mo 13.01.03 14:48
hallo,
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18:
| TYPE TFrage = RECORD Frage : String; a,b,c,d : String; antwort : Char; END;
var Frage = array[0..15] of TFrage;
if nummer = 0 THEN TFrage[0].Frage:= 'Was ist ...'; TFrage[0].a:='...'; TFrage[0].b:='..'; TFrage[0].c:='..'; TFrage[0].d:='..'; TFrage[0].antwort:=a; if nummer = 1 THEN ........ // den Antworten a..d sind doch schon die Labels zugeordnet mit der with do anweisungen?? |
Das ist jetzt meine idee das array zu füllen!
Muss jetzt die datei, wo das hinein soll ein neues formular sein oder wie mache ich das?
Danke Detlef
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 13.01.03 16:58
1. Die IF-Anweisungen erscheinen mir nicht sehr sinnvoll. Die kann man auch weglassen.
2. Selbst wenn sie sinnvoll wären, würden dem ganz ein paar BEGINs und ENDs gut tun.
Was den Kommentar im Quelltext anbelangt: mit der with..do-Anweisung werden die Labels genau dann mit neuem Text gefüllt, wenn eine richtige Antwort gegeben wurde und auch nur dann. Der Text, der dabei in die Labels "eingefüllt" wird, wird dabei aus dem Array gelesen.
Das Füllen des Arrays, wie Du es machst, ist natürlich möglich. Aber es ist nicht sehr flexibel. Wenn neue Fragen in ein Quiz eingebunden werden sollen, musst Du jedesmal das Programm neu kompilieren. Das ist unkomfortabel.
Wenn Du es trotzdem so machen willst: wenn Du den Quelltext von Dir korrigierst, dann gehört er in das OnCreate-Ereignis der Form.
MfG,
Peter
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
01Detlef 
      
Beiträge: 85
|
Verfasst: Mo 13.01.03 17:39
OK, also das ist eine Möglichkeit, aber eine anfängerhafte!
Im moment weiss ich noch nicht, wie ich das mit der datei einlesen und den array da einbringen machen soll, deswegen war ich schon glücklich, dass ich diese methode gefunden habe*G*.
Quelltext 1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| VAR my_file : File of TFrage; begin SetLength(Frage,0); //Array 'Frage' soll am Anfang 0 Datensätze enthalten AssignFile(my_file,'jauch.dat'); //Weise der Datei den Dateinamen zu {$I-} //Fehlermeldung "ausschalten" Reset(my_file); //Datei öffnen {$I+} //Fehlermeldung "einschalten" IF IOResult=0 then begin //Wurde die Aktion korrekt ausgeführt? while not eof(my_file) do //Solange das Ende der Datei nicht erreicht wurde... begin SetLength(frage,Length(frage)+1); //Ergänze das Array "Frage" um einen Datensatz Read(my_file,frage[High(frage)]); //Lese den gerade erzeugten Datensatz aus der Datei end; CloseFile(my_file); //Datei wieder schließen end; end; |
Dieser obige Code läd die Fragen und Antworten aus meinem Array!
Der andere ode, der die Fragen speichert, müssen da die Zuweisungen erfolgen, sprich das array füllen? Aber muss ich das Array dort nicht auch so deklarieren, wie ich das im letzten Posting gesagt habe??
Danke Detlef
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Mo 13.01.03 18:08
| Zitat: | | Dieser obige Code läd die Fragen und Antworten aus meinem Array! |
Nein. Wie an der Kommentaren im Quelltext unschwer zu erkennen ist, lädt dieser Code Daten aus einer Datei in Dein Array. Wenn Du es so machst, wie Du es in Deinem vorigen Posting vorgeschlagen hast (die "Anfängermethode"  ), ist dieser Quelltext nicht nötig. Wozu noch etwas aus einer Datei laden?
| Zitat: | | Der andere ode, der die Fragen speichert, müssen da die Zuweisungen erfolgen, sprich das array füllen? |
Von welchem anderen Code sprichst Du? Von Deinem zuletzt geposteten oder von dem Code, den ich geschrieben habe?
| Zitat: | | Aber muss ich das Array dort nicht auch so deklarieren, wie ich das im letzten Posting gesagt habe?? |
Das Array muss auf jeden Fall global deklariert werden, damit alle Prozeduren / Funktionen darauf zugreifen können.
MfG,
Peter
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
|