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 3 von 11     123 45     Letzte »    
DieDolly

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 17. Nov 2018, 14:24
Heute will ich mal nett sein. Hier ein Beispiel mit generischer TList und Klasseninstanzen.
Gelöscht weil der TE sich nur für deine StringListe interessiert

Geändert von DieDolly (18. Nov 2018 um 13:20 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 17. Nov 2018, 14:39
Stringlisten werden von 0 bis Count - 1 gezählt.

Bei drei Worten in der Stringliste darf WordCount daher nur 2 sein.

Maximalwert für WordCount = Anzahl der Wörter in der Liste - 1;

WordCount solltest Du nach dem Laden der Stringliste auf Stringliste.Count - 1 setzen und nicht irgendwo am Programmstart auf den vermutet richtigen Wert.
  Mit Zitat antworten Zitat
HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#23

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 17. Nov 2018, 15:55
Hmm..

Delphi-Quellcode:
Begin
      Input:= E_UserGuess.Text;
      E_UserGuess.Text:= '';

// Hier greifst Du auf Vocabulary zu. Wann wurde dort etwas reingeladen?
      Answer:=AnsiCompareStr(Vocabulary.Names[RandomNumber], Input);

          RepetitionCheck:=RandomNumber;
          While RepetitionCheck = RandomNumber Do RandomNumber:=random(WordCount);

          try
// Hier wird Vocabulary 'Überschreiben'
            Vocabulary:= TStringList.Create;
            Vocabulary.LoadFromFile('Vocabulary.txt');
            L_UnknownWord.Caption:= Vocabulary.ValueFromIndex[RandomNumber];
            finally
// Hier wird Vocabulary 'weggeschmissen
            Vocabulary.Free;
          end;

    end

Siehe meine Kommentare..

Woher kommt beim ersten Zugriff auf Vocabulary der Inhalt und was meinst Du passiert beim nächsten Zugriff auf Vocabulary?
  Mit Zitat antworten Zitat
DieDolly

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 17. Nov 2018, 16:07
Zitat:
Woher kommt beim ersten Zugriff auf Vocabulary der Inhalt und was meinst Du passiert beim nächsten Zugriff auf Vocabulary?
Post 21 löst viele der Probleme
  Mit Zitat antworten Zitat
KetchUp

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 17. Nov 2018, 16:27
Post 21 löst viele der Probleme
Vielen Dank @ DieDolly für die ausführliche Erklärung.
Kann ich Vokabeln auch wieder aus der txt Datei laden, sodass man die ständig wechseln kann?


Delphi-Quellcode:
// Hier greifst Du auf Vocabulary zu. Wann wurde dort etwas reingeladen?
      Answer:=AnsiCompareStr(Vocabulary.Names[RandomNumber], Input);
Vocabulary wird in FormCreate erstellt. Aber es wird nicht an die Prozedur weitergegeben obwohl Vocabulary global deklariert ist.
Delphi-Quellcode:
     
            finally
// Hier wird Vocabulary 'weggeschmissen
            Vocabulary.Free;
          end;

    end
Oh, das wusste ich nicht. Was ist denn die genaue Funktion von ".Free" ?
  Mit Zitat antworten Zitat
DieDolly

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 17. Nov 2018, 16:29
Zitat:
Kann ich Vokabeln auch wieder aus der txt Datei laden, sodass man die ständig wechseln kann?
Wofür erneut aus der Textdatei laden?

Ich hab dir bei Eine zufällige englische Vokabel anzeigen doch gezeigt wie man eine Vokabel aus den Klassen lädt. Die Txt-Datei brauchst du nach Programmstart nur ein einziges mal laden. Danach nie wieder. Das ist ja der Sinn der Sache.
  Mit Zitat antworten Zitat
KetchUp

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 17. Nov 2018, 16:37
Zitat:
Kann ich Vokabeln auch wieder aus der txt Datei laden, sodass man die ständig wechseln kann?
Wofür erneut aus der Textdatei laden?
Ich meinte weil Du die Vokabeln direkt im Quellcode stehen hast. Die müssen variabel sein.


PS: Ich hab gerade das Problem gefunden. Es lag tatsächlich am .Free nach finally. Jetzt funktioniert es scheinbar.
  Mit Zitat antworten Zitat
DieDolly

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 17. Nov 2018, 16:39
Zitat:
Die müssen variabel sein.
Du musst du ja auch selber reinladen. Das war nur ein Beispiel.
Du kannst 99% von meinem Code übernehmen. Du musst sie nur selber reinladen.

Ungefähr so

Delphi-Quellcode:
try
 Vocabulary:= TStringList.Create;
 Vocabulary.LoadFromFile('Vocabulary.txt');
 
 for i := 0 to Vocabulary.Count - 1 do
  begin
   Vocab := TVocab.Create;
   Vocab.SolvedCount := 0;
   Vocab.German := Vocabulary.Names[i];
   Vocab.English := Vocabulary.ValueFromIndex[i];
   VokabelListe.Add(Vocab);
  end;
finally
 Vocabulary.Free;
end;

Geändert von DieDolly (17. Nov 2018 um 16:57 Uhr)
  Mit Zitat antworten Zitat
KetchUp

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 17. Nov 2018, 16:48
Delphi-Quellcode:

finally
 Vocabulary.Free;
end;
Was hat denn das .Free am Ende für eine Bedeutung/Funktion?
  Mit Zitat antworten Zitat
DieDolly

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 17. Nov 2018, 16:49
Du gibst den reservierten Speicher der StringListe wieder frei.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 11     123 45     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 06:21 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