Entwickler-Ecke
Dateizugriff - Erstellen eines Lernmodus für Vokabeltrainer
Sauerbraten - Mo 24.05.10 19:23
Titel: Erstellen eines Lernmodus für Vokabeltrainer
Hallo liebes Forum.
Hab eine kleine Hürde, undzwar möchte ich ein Vokabeltrainer programmieren, wo der Nutzer über eine Eingabemaske das Deutsch und das dazugehörige Fremdwort speichert (über 2 Editfelder) und diese in ein .txt Dokument schreibt. Das Funktioniert auch ganz gut. Nur möchte ich einen Lernmodus dafür erstellen, indem ein zufälliger deutscher Begriff aus der .txt ausgelesen wird und man das entsprechende Fremdwort eigibt und auf "Überprüfen" klickt.
Wie schreibe ich dieses zufällige auslesen? Auch dass der Nutzer mal den Deutschen und dann das Fremdwort Raten muss?
By the Way: So werden Daten in der Textdatei gespeichert:
----------
der Hund
the dog
----------
die Gitarre
the guitar
----------
sich kratzen
to scratch
...also zuerst eine Line mit Strichen (zur Orientierung), dann der Deutsche Begriff und dann das Fremdwort.
Vielen Dank im Vorraus
elundril - Mo 24.05.10 19:29
Hallo und :welcome: im Delphi-Forum!
Am besten wäre es wenn du nicht immer bei einer neuen Runde das Wort aus der Textdatei lädst, sondern dir ein dynamisches Array machst von einem Datentyp (Record zb) in der du die Wortpaare speicherst. So kannst du das ganze viel effizienter Verwalten und könntest auch so was schönes implementieren wie das wörter die falsch übersetzt wurden öfter dran kommen.
lg elundril
Sauerbraten - Mo 24.05.10 20:20
^^ Ohjeh, wusste dass das kommt...
Wenn ich gesteh, bin ich noch n Delphi Neuling und hab erst dieses Schuljahr Delphi im Unterricht. Arrays hatte ich schon, aber erst vom Typ String und Integer...
Mein theoretischer Gedankengang war, dass er beim Eintreten in den Lernmodus (übers Hauptmenü) eine EOF schleife laufen lässt, in der er zählt, wie viele Zeilen die Datei hat, durch 3 teilt (Weil beim hinzufügen immer 3 zeilen erstellt werden, s.o.) und das als max. anzahl für random speichert. Und daraus die Randomzahl dann als Zeile in dem Dokument aufruft und 1 teil davon läd...
geht dass denn auch sorum? auch wenns komplizierter ist ;-)
jaenicke - Mo 24.05.10 21:56
Nimm lieber eine TStringList. Dann kannst du die Daten einfach mit = getrennt in die Datei speichern und kannst direkt auf die Daten zugreifen ohne dazu eigenen Code schreiben zu müssen...
Siehe
TSTRINGS.NAMES,
TSTRINGS.VALUEFROMINDEX,
TSTRINGS.VALUES. Zum Laden und Speichern reicht dann LoadFromFile bzw. SaveToFile.
Sauerbraten - Di 25.05.10 07:38
Cool, danke!
Und werden diese Daten auch in einer .txt Datei gespeichert? Oder im Programm selber? Könnt ihr dafür vieleicht ein Code Beispiel schreiben, für das Speichern, bzw. zufällige laden?
MaPsTaR - Di 25.05.10 10:03
Hallo, die Delphi-Hilfe [F1] hätte dir zwar das gleiche verraten können, aber okay...
Die Daten stehen vorerst im Speicher und werden dann über SaveToFile() in einer txt-Datei gespeichert.
Delphi-Quelltext
1: 2: 3: 4: 5:
| [...] public Daten: TStringList; end; |
Eintrag hinzufügen
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.BSaveWordClick(Sender: TObject); begin Daten.Add(EDeutsch.Text + '=' + EEnglisch.Text); end; |
Speichern der Daten
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.BSpeichernClick(Sender: TObject); begin Daten.SaveToFile(ExtractFilePath(ParamStr(0)) + 'de-en.txt'); end; |
Du lädst nicht die einzelnen Werte zufällig, sondern erst einmal die komplette Datei:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure TForm1.FormCreate(Sender: TObject); begin Daten := TStringList.Create; Daten.NameValueSeparator := '='; if FileExists(ExtractFilePath(ParamStr(0)) + 'de-en.txt') then Daten.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'de-en.txt'); end; |
Dann kannst du mit den von
jaenicke genannten Funktionen auf die einzelnen Einträge zugreifen.
Delphi-Quelltext
1: 2: 3: 4:
| procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Daten.Free; end; |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!