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 6 von 11   « Erste     456 78     Letzte »    
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#51

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 18. Nov 2018, 21:58
Wenn die Vokabeln, nachdem sie erfolgreich "erraten" wurden, aus der Liste entfernt werden, ist Count irgendwann = 0. Dann ist die Liste leer.

Ist Count = 1, ist nur noch eine Vokabel enthalten, dann läuft die Schleife wirklich weiter, bis der Strom ausfällt

Wenn man per Index auf 'ne Stringliste zugreift, sollte man ggfls. vorher abfragen, ob Index >= 0 und kleiner Count ist. Nur dann "greift" man auf einen vorhandenen Wert zu.

Wenn also nur noch eine Vokabel in der Liste ist, könnte man z. B. sowas in der Art machen:
Delphi-Quellcode:
if Vocabulary.Count = 0 then begin
  ShowMessage(Format('Die letzte Vokabel ist: %s',[Vocabulary.ValueFromIndex[0]]);
  // Oder hier das "Fertigformular" (Form3) aufrufen ...
end else begin
  RepetitionCheck:=RandomNumber;
  While RepetitionCheck = RandomNumber Do RandomNumber:=random(Vocabulary.Count);
...
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#52

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 18. Nov 2018, 22:06
Wenn aus der Liste ein zufälliges Element ausgewählt wurde, dann wird es auch aus der Liste entfernt.

Wozu gibt es jetzt diesen RepetitionCheck? Was nicht mehr in der Liste ist, kann auch nicht wieder gezogen werden. Am Index 17 steht ein anderer Wert als vorher (weil die 17 wurde ja entfernt). Wo wäre also das Problem, wenn zweimal hintereinander die 17 gezogen wird?
  Mit Zitat antworten Zitat
KetchUp

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 19. Nov 2018, 20:24
Wenn aus der Liste ein zufälliges Element ausgewählt wurde, dann wird es auch aus der Liste entfernt.
Wozu gibt es jetzt diesen RepetitionCheck? Was nicht mehr in der Liste ist, kann auch nicht wieder gezogen werden. Am Index 17 steht ein anderer Wert als vorher (weil die 17 wurde ja entfernt). Wo wäre also das Problem, wenn zweimal hintereinander die 17 gezogen wird?
Man soll die Vokabel 3 mal hintereinander richtig eingeben müssen, bis sie gelöscht wird. Deswegen will ich verhindern, dass er mehrmals die Gleiche abfragt. Aber ich weiß noch nicht, wie ich jeder Vokabel eine Variable zuweißen kann die dann von 3 runter zählt.
  Mit Zitat antworten Zitat
DieDolly

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 19. Nov 2018, 21:08
Zitat:
Aber ich weiß noch nicht, wie ich jeder Vokabel eine Variable zuweißen kann die dann von 3 runter zählt.
Klassen, SolvedCount
  Mit Zitat antworten Zitat
KetchUp

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 19. Nov 2018, 21:17
Zitat:
Aber ich weiß noch nicht, wie ich jeder Vokabel eine Variable zuweißen kann die dann von 3 runter zählt.
Klassen, SolvedCount
Ich finde es wirklich toll, dass du dir die mühe gemacht hast den Quellcode dafür zu schreiben und auch schade, dass du ihn wieder entfernt hast. Das hätte auch anderen helfen können.

Es fällt mir aber sehr schwer mich in das System reinzudenken und ich kann (und möchte auch nicht) einfach Quellcode kopieren, da ich jede Zeile Quellcode in einem Vortrag erklären können muss. Mir liegt das Programmieren nicht so, bin eher der Grafiker. Ich finde es aber interessant und will eine gute Arbeit abliefern.
  Mit Zitat antworten Zitat
Schokohase
(Gast)

n/a Beiträge
 
#56

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 19. Nov 2018, 21:50
Dann mal einen Vorschlag ohne Klassen.

Lade die Liste und arbeite diese ab (Eintrag wird sofort gelöscht). Wenn die leer ist dann wieder aus der Datei laden, und nochmal durch, laden und nochmal durch und fertig.
  Mit Zitat antworten Zitat
DieDolly

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 19. Nov 2018, 22: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 22:05 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 20. Nov 2018, 00: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.388 Beiträge
 
Delphi 12 Athens
 
#59

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 20. Nov 2018, 08: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
Schokohase
(Gast)

n/a Beiträge
 
#60

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 20. Nov 2018, 08:21
[OT]
* leilweise nicht sprechende Namen jpg besser ImageAnswer
Diese Logik der Bezeichnung habe ich aber noch nie verstanden.
  • Es gibt eine Eigenschaft Application.MainForm und keine Aplication.FormMain
  • Es gibt eine EArgumentException und keine ExcpetionArgument
  • Der Styleguide sagt AnswerForm ist toll und nicht FormAnswer oder frmAnswer
Wenn man diesen Styleguide und Sourcecode-Regeln weiter folgen würde, dann müsste die Bezeichnung für ein TImage , das für die Antwort verwendet wird AnswerImage lauten.
[/OT]
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 6 von 11   « Erste     456 78     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 10:55 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