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 7 von 11   « Erste     567 89     Letzte »    
KetchUp

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 20. Nov 2018, 20:41
Da keine Rückfrage aufgekommen ist, die Frage, ob du das:
...gelesen hast?
Deinen Post hab ich gelesen aber nicht den ganzen Styleguide. Ich stimme auch allen Punkten zu nur die Bezeichnung "L_CorrectAnswer" sollen wir so machen. Das L steht für "Label". Mit dem Unterstrich finde ich es besser lesbar, das war also mein "Verschulden".

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.
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#62

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 21. Nov 2018, 06:47
Moin...

...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.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#63

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 21. Nov 2018, 07:13
Zitat:
"L_CorrectAnswer" sollen wir so machen. Das L steht für "Label".
Sehe persönlich kein Problem dabei..
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
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#64

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 21. Nov 2018, 08:21
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
Gruß vom KodeZwerg

Geändert von KodeZwerg (21. Nov 2018 um 08:26 Uhr)
  Mit Zitat antworten Zitat
KetchUp

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 21. Nov 2018, 19:18
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:
    
var
  VocabLanguage: TVocabLanguage;
Compiler meckert aber. "Undeclared identifier" Wie muss ich es denn richtig machen?

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

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

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 21. Nov 2018, 19:29
Zitat:
Ok, ich versuch das jetzt mit Records. Ein Record scheint ja einfach nur den Variablennamen mit einem T davor als Datentyp zu haben
Hättest du dir mein Beispiel vor langer Zeit wenigstens angeguckt dann wüsstest du, dass das nicht der Wahrheit entspricht.

Ruder mal ein paar Seiten zurück und ließ dir alles durch was du finden kannst.
  Mit Zitat antworten Zitat
KetchUp

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 21. Nov 2018, 22:01
Ok, Deklaration klappt.

Delphi-Quellcode:
  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;
So ganz Unrecht hatte ich nicht, musste nur type auf record setzen.

Delphi-Quellcode:
  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
Jetzt hängt es am "TVocab.Create;". Das verstehe ich noch nicht.
  Mit Zitat antworten Zitat
DieDolly

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 21. Nov 2018, 22:23
Records alleine bringen dir nichts. Du brauchst auch eine Liste wo du die reinstecken und von abfragen kannst.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#69

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 21. Nov 2018, 22:44
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.

Dann versuche ich mal eine Erklärung.
Du hast eine Vokabel und die zugehörige Übersetzung. Weiterhin benötigst Du eine Zählung für die korrekte Übersetzung.
Du könntest mit drei Arrays (Vokabel,übersetzung,zählung) arbeiten. Das ist aber arg aufwendig und fehleranfällig. Eine andere Möglichkeit wäre es ein Record zu nutzen z.b.
Delphi-Quellcode:
type
myrecord = record
             Vokabel : string;
             Uebersetzung : string;
             Zaehler : integer;
          end;
In diesem Falle hast Du alle notwendigen Daten in einem Datensatz zusammen gefasst. Da hast Du keinen Aufwand mit der Synchronisation.
Jetzt packst Du die Records noch in eine Liste, die nicht nur die Daten sondern auch alle notendigen Funktionen enthält und Das halbe Programm ist fertig.
Die andere Hälfte ist die Darstellung und die Benutzereingaben. Mit den Daten hast Du dann nichts mehr zu tun, da die Auswahl der Datensätze, die Zählung, die Initialisierung etc. in der Liste enthalten sind.

Gruß
K-H
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
KetchUp

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 22. Nov 2018, 15:46
Das ist mein momentaner Stand.
Delphi-Quellcode:
  private
    { Private declarations }
  public
    { Public declarations }
  type
    TVocab = record
    German, English: string;
    Repetitions: Integer;
  end;
Delphi-Quellcode:
          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;
Jetzt kann ich meine Zufallszahl nicht mehr nutzen. Compiler sagt Array type required.
Meinst du mit in Liste packen sowas: List.Add(Vocab);?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 7 von 11   « Erste     567 89     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 20:15 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