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 1 von 2  1 2      
DieDolly

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 19. Nov 2018, 21:01
Zitat:
und auch schade, dass du ihn wieder entfernt hast.
Weil du dich gegen Neues aussprichst. Neu ist für dich Gift. So fasse ich das jedenfalls auf.
Wenns dir schwer fällt dich darein zu denken, dann nutz doch Google oder F1 oder die online Embarcadero Hilfe oder das Forum oder oder.
Du erfindest das Rad neu, und nicht nur einmal.
Nutzen von Klassen und Listen hat hier nur Vorteile denn du nutzt zusätzlich zum einmaligen Laden der Vokabeln eh eine StringListe. 2 Fliegen mit einer Klappe.

Geändert von DieDolly (19. Nov 2018 um 21:05 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 19. Nov 2018, 23:51
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 20. Nov 2018, 07:00
Moin...
@KetchUp:
Da keine Rückfrage aufgekommen ist, die Frage, ob du das:
https://www.delphipraxis.net/1418380-post46.html
...gelesen hast?
  Mit Zitat antworten Zitat
KetchUp

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 20. Nov 2018, 19: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.458 Beiträge
 
Delphi 12 Athens
 
#5

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 21. Nov 2018, 05: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
 
#6

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 21. Nov 2018, 06: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
 
#7

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 21. Nov 2018, 07: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 07:26 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 21. Nov 2018, 21: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
 
#9

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 22. Nov 2018, 14: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
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.277 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 22. Nov 2018, 14:59
Hallo,

Repetitions: Integer;

Vocab.Repetitions[RandomNumber]


Was soll der Compiler dann machen, wenn das mit [] auf eine Integer-Variable zugreifst.

Und weiter oben hast Du ja korrekt benutzt
Vocabulary[RandomNumber]

Es müsste also heißen:
Vocabulary[RandomNumber].Repetitions:= Vocabulary[RandomNumber].Repetitions-1;
Heiko

Geändert von hoika (22. Nov 2018 um 15:02 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:12 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-2025 by Thomas Breitkreuz