![]() |
AW: Elemente aus TStringList in Laufzeit entfernen
Zitat:
Den Code schau ich mir erst morgen wieder an, muss noch lernen. Es sieht ja aus als komme ich um Record oder Classes nicht drum herum. |
AW: Elemente aus TStringList in Laufzeit entfernen
Moin...8-)
...alles gut. Mir ging es darum, daß man sich nicht was angewöhnt was später hinderlich ist, wenn man z.B. in ein neues Team wechselt. :wink: |
AW: Elemente aus TStringList in Laufzeit entfernen
Zitat:
Ich benenne meine Labels auch mit einer Abkürzung davor lblCorrectAnswer wie man es macht bleibt jedem selbst überlassen. Letztendlich musst du selbst damit klar kommen. gruss |
AW: Elemente aus TStringList in Laufzeit entfernen
Liegt an der Art und Weise wie es einem beigebracht / vorgeschrieben wird.
Ich hab auch für labels die ich während der Laufzeit ändern muss ein "lblName" da bei mir "LName" für Lokale Dinge stehen :) An TE: Ich find es Klasse das Du Dir alles selbst erarbeiten und nichts fertiges benutzen möchtest! Aber den Tipp es über Klassen oder mindestens einen Record laufen zu lassen, darüber würde ich nochmal nachdenken. Mit dem Record ist am einfachsten in Deinem Falle zu übertragen/anzuwenden/einzubauen. Ist ja keine Kopie da Du kompletten Source dafür selbst noch anpassen müsstest wobei wir gerne helfen können :-) |
AW: Elemente aus TStringList in Laufzeit entfernen
Ok, ich versuch das jetzt mit Records. Ein Record scheint ja einfach nur den Variablennamen mit einem T davor als Datentyp zu haben. Ich hab das global so Deklariert
Delphi-Quellcode:
Compiler meckert aber. "Undeclared identifier" Wie muss ich es denn richtig machen?var VocabLanguage: TVocabLanguage;
Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
var i: Integer; begin Vocabulary:= TStringList.Create; Vocabulary.LoadFromFile('Vocabulary.txt'); RandomNumber:= random(Vocabulary.Count); L_RemainingWords.Caption:= 'Verbleibende Vokabeln: '+IntToStr(Vocabulary.Count); If GermanEnglish Then try L_HeadingTrainerDescription.Caption:= 'Deutsch -> Englisch | '+IntToStr(Repititions)+' Wiederholungen | 10 Vokabeln'; for i:= 0 to Vocabulary.Count - 1 do Begin VocabLanguage = record VocabLanguage:= TVocabLanguage.Create; VocabLanguage.English:= Vocabulary.Names[i] VocabLanguage.German:= Vocabulary.ValueFromIndex[i] VocabLanguage.SolvedCount:= 0; L_UnknownWord.Caption:= VocabLanguage.English[RandomNumber]; L_CorrectAnswer.Caption:= ''; End; finally end |
AW: Elemente aus TStringList in Laufzeit entfernen
Zitat:
Ruder mal ein paar Seiten zurück und ließ dir alles durch was du finden kannst. |
AW: Elemente aus TStringList in Laufzeit entfernen
Ok, Deklaration klappt.
Delphi-Quellcode:
So ganz Unrecht hatte ich nicht, musste nur type auf record setzen.
private
{ Private declarations } public { Public declarations } type TVocab = record German, English: string; end; var Vocab: TVocab; Vocabulary: TStringList; RandomNumber, Abfragen: Integer; jpgFlag, jpgCorrect, jpgWrong: TJpegImage; StartTime: TDateTime; Duration: TDateTime; end;
Delphi-Quellcode:
Jetzt hängt es am "TVocab.Create;". Das verstehe ich noch nicht.
If GermanEnglish
Then try L_HeadingTrainerDescription.Caption:= 'Deutsch -> Englisch | '+IntToStr(Repititions)+' Wiederholungen | 10 Vokabeln'; for i:= 0 to Vocabulary.Count - 1 do Begin Vocab:= TVocab.Create; Vocab.English:= Vocabulary.Names[i]; Vocab.German:= Vocabulary.ValueFromIndex[i]; Vocab.SolvedCount:= 0; L_UnknownWord.Caption:= Vocab.English[RandomNumber]; L_CorrectAnswer.Caption:= ''; End; finally end |
AW: Elemente aus TStringList in Laufzeit entfernen
Records alleine bringen dir nichts. Du brauchst auch eine Liste wo du die reinstecken und von abfragen kannst.
|
AW: Elemente aus TStringList in Laufzeit entfernen
Als kleine Gedankenstütze, diesen Tipp mit Records meinte ich, damit es keine Kopie wird benenn halt alles um aber bleibe beim Konstrukt, das wäre eine gute Ausgangslage.
Zitat:
|
AW: Elemente aus TStringList in Laufzeit entfernen
Das ist mein momentaner Stand.
Delphi-Quellcode:
private
{ Private declarations } public { Public declarations } type TVocab = record German, English: string; Repetitions: Integer; end;
Delphi-Quellcode:
Jetzt kann ich meine Zufallszahl nicht mehr nutzen. Compiler sagt Array type required.
Input:= E_UserGuess.Text;
E_UserGuess.Text:= ''; Answer:=AnsiCompareStr(Vocabulary.Names[RandomNumber], Input); If Answer=0 Then //Antwort ist richtig Begin L_CorrectAnswer.Caption:=''; Img_FeedBack.Picture.Bitmap.Assign(jpgCorrect); //Vocabulary.Delete(RandomNumber); Vocab.Repetitions[RandomNumber]:= Vocab.Repetitions[RandomNumber] - 1; End Else //Antwort ist falsch Begin L_CorrectAnswer.Caption:='Richtig wäre: '+(Vocabulary.Names[RandomNumber]); Img_FeedBack.Picture.Bitmap.Assign(jpgWrong); Vocab.Repetitions[RandomNumber]:= RepititionValue; End; Meinst du mit in Liste packen sowas: List.Add(Vocab);? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:49 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