AGB  ·  Datenschutz  ·  Impressum  







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

Elemente aus TStringList in Laufzeit entfernen

Ein Thema von KetchUp · begonnen am 16. Nov 2018 · letzter Beitrag vom 25. Nov 2018
Antwort Antwort
Seite 2 von 11     12 34     Letzte »    
KetchUp

Registriert seit: 16. Nov 2018
31 Beiträge
 
#11

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 16. Nov 2018, 20:06
Das stammt noch aus den Windowsanfangszeiten, als Konfigurationen (fast ausschließlich) in INI-Dateien gespeichert wurden.

Vor dem Gleichheitszeichen steht der Name (Mehrzahl = Namen -> englisch = Names) des zu konfigurierenden "Teils" und hinter dem Gleichheitszeichen sein Wert (eine mögliche Übersetzung von Wert ins Englische ist Value (Einzahl) -> Values (Mehrzahl)).
Vielen Dank! Das war genau die Hintergrundinformation die ich wissen wollte.
  Mit Zitat antworten Zitat
KetchUp

Registriert seit: 16. Nov 2018
31 Beiträge
 
#12

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 17. Nov 2018, 13:01
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:
 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
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.

Gibt es noch eine Möglichkeit die zu vergleichen?

Geändert von KetchUp (17. Nov 2018 um 13:14 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.431 Beiträge
 
Delphi 7 Professional
 
#13

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 17. Nov 2018, 13:19
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.

  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.
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#14

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 17. Nov 2018, 13:37
Zitat:
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.
Viele Fehler lassen sich schon alleine durch ordentliches Einrücken und respektieren des Delphi Styleguides auffinden.
  Mit Zitat antworten Zitat
KetchUp

Registriert seit: 16. Nov 2018
31 Beiträge
 
#15

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 17. Nov 2018, 13:40
Woher kommt WordCount, das darf maximal Vocabulary.Count - 1 sein.
WordCount wird unter "FormCreate" auf 3 Festgelegt (nur zum testen). Es sind auch genau 3 Vokabeln in der TXT-Datei die im Moment so aussieht:

Code:
black=schwarz
red=rot
blue=blau
In FormCreat steht noch folgendes damit die erste Vokabel sofort bei Programmstart angezeigt wird:

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

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.
Der Fehler tritt IMMER auf. Das ist ja das Komische.



Die Vokabeln für jede einzelne Abfrage neu zu laden, halte ich nicht für so eine besonders gute Idee.
Jap, das hab ich mir auch gedacht, ist aber im Moment die einzige Möglichkeit das Programm zum Laufen zu bekommen
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#16

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 17. Nov 2018, 13:50
gelöscht

Geändert von DieDolly (18. Nov 2018 um 13:21 Uhr)
  Mit Zitat antworten Zitat
KetchUp

Registriert seit: 16. Nov 2018
31 Beiträge
 
#17

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 17. Nov 2018, 14:00
[QUOTE=DieDolly;1418306]
Zitat:
Beispielhaft das Record
Delphi-Quellcode:
TVocab = record
 German, English: string;
end;
Beim Laden des Programms erzeugst du für jede Vokabel ein Record und packst sie alle in eine Liste.
Danke für den Tipp, ich hab zwar keine Ahnung von Records, werde mich aber jetzt mal einlesen.
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#18

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 17. Nov 2018, 14:02
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.

http://www.delphibasics.co.uk/Article.asp?Name=Records
https://stackoverflow.com/questions/...ist-of-records
  Mit Zitat antworten Zitat
KetchUp

Registriert seit: 16. Nov 2018
31 Beiträge
 
#19

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 17. Nov 2018, 14:09
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.
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#20

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 17. Nov 2018, 14:12
gelöscht

Geändert von DieDolly (18. Nov 2018 um 13:21 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 11     12 34     Letzte »    


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 03:40 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