![]() |
AW: Elemente aus TStringList in Laufzeit entfernen
Zitat:
|
AW: Elemente aus TStringList in Laufzeit entfernen
So ganz scheint es doch nicht mit "Names" und "ValueFromIndex" zu funktionieren. Ich hab jetzt alles darauf umgeschrieben, bekomme auch keinen Compiler Error aber wieder ein "List Index out of Bounds" Fehler. Der tritt genau in der Zeile auf wo die Eingabe der Vokabel mit der in der TXT-Datei hinterlegten verglichen wird.
Code:
Wenn ich "Answer:=AnsiCompareStr(Vocabulary.Names[RandomNumber], Input);" auskommentiere geht es aber ich muss die Wörter vergleichen. Es liegt auch nicht an "RandomNumber", wenn ich das durch eine Zahl ersetze kommt der gleiche Fehler.
Begin
Input:= E_UserGuess.Text; E_UserGuess.Text:= ''; Answer:=AnsiCompareStr(Vocabulary.Names[RandomNumber], Input); RepetitionCheck:=RandomNumber; While RepetitionCheck = RandomNumber Do RandomNumber:=random(WordCount); try Vocabulary:= TStringList.Create; Vocabulary.LoadFromFile('Vocabulary.txt'); L_UnknownWord.Caption:= Vocabulary.ValueFromIndex[RandomNumber]; finally Vocabulary.Free; end; end Gibt es noch eine Möglichkeit die zu vergleichen? |
AW: Elemente aus TStringList in Laufzeit entfernen
Woher kommt WordCount, das darf maximal Vocabulary.Count - 1 sein.
Wenn Du aber erst eine Zufallszahl im Bereich bis WordCount "würfelst", aber WordCount zufällig größer als Vocabulary.Count - 1 ist, kann es sporadisch Fehler geben.
Delphi-Quellcode:
While RepetitionCheck = RandomNumber Do RandomNumber := Random(Vocabulary.Count - 1);
Achso: Die Vokabeln für jede einzelne Abfrage neu zu laden, halte ich nicht für so eine besonders gute Idee. Das sollte einmal (z. B. beim Programmstart) geschehen, ebenso das Freigeben der Vokabelliste. |
AW: Elemente aus TStringList in Laufzeit entfernen
Zitat:
|
AW: Elemente aus TStringList in Laufzeit entfernen
Zitat:
Code:
In FormCreat steht noch folgendes damit die erste Vokabel sofort bei Programmstart angezeigt wird:
black=schwarz
red=rot blue=blau
Code:
WordCount:= 3;
RandomNumber:= random(WordCount); try Vocabulary:= TStringList.Create; Vocabulary.LoadFromFile('Vocabulary.txt'); L_UnknownWord.Caption:= Vocabulary.ValueFromIndex[RandomNumber]; L_CorrectAnswer.Caption:= ''; finally Vocabulary.Free; end Zitat:
Zitat:
|
AW: Elemente aus TStringList in Laufzeit entfernen
gelöscht
|
AW: Elemente aus TStringList in Laufzeit entfernen
[QUOTE=DieDolly;1418306]
Zitat:
|
AW: Elemente aus TStringList in Laufzeit entfernen
Es wird sich lohnen. Das sage ich immer wieder.
Am besten gleich richtig machen denn sonst wirst du deinen Code später hassen. Stell dir ein Record vor wie eine Kiste für Schrauben. In der Kiste gibt es Fächer für jede Schraubenart. Deine Kiste heißt TVocab (wovon du eine "Instanz" erstellst die dann in die Liste [die Liste ist dein Schrank wo all die Kisten drin sind] kommt) in deine Kiste kann zwei Arten von Schrauben fassen: Deutsche und Englische. Das sind natürlich Strings. ![]() ![]() |
AW: Elemente aus TStringList in Laufzeit entfernen
Funktioniert das noch mit der TStringList? Denn ich muss die Vokabeln während der Laufzeit entfernen können und jeder Vokabel eine Variable zuordnen können um zu überprüfen, wie oft sie schon richtig eingegeben wurde.
|
AW: Elemente aus TStringList in Laufzeit entfernen
gelöscht
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:48 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 by Thomas Breitkreuz