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
HolgerX

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 24. Nov 2018, 10:42
Hmm..

(Wieso immer mit Records bei Listen gearbeitet wird... )

Angehängt ein 'einfaches' Beispiel, wie mann mit einer TObjectList und einer Klasse für die Vokabeln einen einfaches Übungsprogramm machen kann.

Inklusive der Option, das eine falsche Lösung 3x für das Wort wiederholt werden kann und es erst dann aus der Liste entfernt wird.

Auf grafische Spielereien habe ich zunächst verzichtet, da es nur um die 'Funktion' als Beispiel geht...

Viel Spaß damit..

( Mit D6 mal so zusammen getippt )
Angehängte Dateien
Dateityp: zip VocableTest.zip (1,37 MB, 9x aufgerufen)
  Mit Zitat antworten Zitat
DieDolly

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 24. Nov 2018, 12:33
Also einfach sieht für einen Anfänger bestimmt anders aus
Dafür ist es aber korrekt und der richtige Weg.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 24. Nov 2018, 12:47
Hmm..

(Wieso immer mit Records bei Listen gearbeitet wird... )
Einfach und relativ einfach zu verstehen. OK ein Array of Record ist noch simpler, aber nach meiner Erfahrung ist eine TObjectlist/TList effizienter.

Ist aber vielleicht auch der Vorstellung geschuldet, daß ein Object komplexer ist als ein Record?

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector

Geändert von p80286 (24. Nov 2018 um 12:48 Uhr) Grund: Tippfehler
  Mit Zitat antworten Zitat
KetchUp

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 24. Nov 2018, 13:07
Angehängt ein 'einfaches' Beispiel, wie mann mit einer TObjectList und einer Klasse für die Vokabeln einen einfaches Übungsprogramm machen kann.
Vielen Dank dafür. Jetzt müssen wir aber mal bei einer Herangehensweise bleiben (classes, records, Array of Record ) Das Programm muss nächste Woche fertig werden.

Meinetwegen mit classes. Ich hab versucht das Programm bei mir zu implementieren. Da gibt es gleich den ersten Fehler. Compiler meint TVocableList ist nicht deklariert. Dabei stehts aber drinne.
Delphi-Quellcode:
  private
    { Private declarations }
  public
    { Public declarations }
    FWordCount : integer;
    FWordCorrect : integer;
    FRandomNumber : integer;
    FVocableList : TVocableList;
  end;

  var
    Vocabulary: TStringList;
    RandomNumber, Abfragen: Integer;
    jpgFlag, jpgCorrect, jpgWrong: TJpegImage;
    StartTime: TDateTime;
    Duration: TDateTime;
  end;
Oder wenn Records einfacher sind, kann jemand das Programm für records umschreiben?
  Mit Zitat antworten Zitat
DieDolly

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 24. Nov 2018, 13:10
Zitat:
Meinetwegen mit classes.
Ist ja nicht so als ob ich das schon vor einigen Tagen mehrfach empfohlen habe

Korrekt heißt es übrigens mit Klassen. Auch wenn sich classes cooler anhört.


Zitat:
Ich hab versucht das Programm bei mir zu implementieren. Da gibt es gleich den ersten Fehler. Compiler meint TVocableList ist nicht deklariert. Dabei stehts aber drinne.
Typischer Copy&Paste. Das ist der Beweis, dass du dir den Code vorher nicht ordentlich genug angeguckt hast.
  Mit Zitat antworten Zitat
HolgerX

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 24. Nov 2018, 14:35
Hmm..

und wenn Du dir die Units angesehen hättest, dann währe dir die Unit UVocableList aufgefallen, diese enthält die Classendeclarationund die TVocableList.

So ist nicht alles in die Unit der Form geklatscht...

Hmm..

(Wieso immer mit Records bei Listen gearbeitet wird... )
Einfach und relativ einfach zu verstehen. OK ein Array of Record ist noch simpler, aber nach meiner Erfahrung ist eine TObjectlist/TList effizienter.

Ist aber vielleicht auch der Vorstellung geschuldet, daß ein Object komplexer ist als ein Record?

Gruß
K-H
Wenn ich mir die Records von heute anschaue, ist da auch nicht mehr viel Unterschied zu einer Class..
constructor/functionen und so weiter...

Ich finde Klassen sauberer, da es ein 'create' / Benutzten und definiertes 'Free' gibt..
Bei Records sind diese mit der Variablendeklaration 'einfach' da.. (OK, wenn man nicht gerade mit Pointer auf Record arbeitet)
Und wenn der Scope weg ist, dann sind diese (hoffentlich) auch wieder sauber weg

Durch die Verwendung der ObjectList habe hier in diesem Beispiel nur das Herumkopieren von Array Teilen beim Löschen von Elementen mitten heraus umgangen...
Auch kümmert diese sich sauber um das Löschen der Objecte..

Im Beispiel habe ich dann nur noch das Visuelle in eigene Proceduren ausgelagert, weil ich keine langen Spaghetticode mag..
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#7

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 24. Nov 2018, 15:58
Zitat:
Das Programm muss nächste Woche fertig werden.
Ich hoffe du schaffst es auch..
Alle Leute die dir bisher geholfen haben sind nicht auf müssen aus und denen ist es egal ob du das in der nächsten Woche fertig haben musst.

Die machen es auf freiwilliger Basis.
Ein müssen seitens der Helfenden Hände hier gibt es nicht!

gruss
  Mit Zitat antworten Zitat
DieDolly

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 24. Nov 2018, 17:48
Klare Worte müssen ab und zu auch mal sein.
Klingt vielleicht hart, aber es ist die Wahrheit.

Häng dich rein, dann hast du nächste Woche den technisch wohl besten Vokabeltrainer der ganzen Klasse.
  Mit Zitat antworten Zitat
KetchUp

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 25. Nov 2018, 15:47
Ich hab jetzt wirklich viele Stunden versucht @HolgerX QUellcode zu verstehen und auch die Erklärung zu Klassen im Delphi Treff gelesen.

Aber an dem Punkt an dem ich gemerkt habe, dass Klassen auch so was wie Prozeduren sind bin ich ausgestiegen.

Deswegen will ich jetzt noch mal komplett von vorne anfangen und das Ganze mit Records aufbauen. Soweit bin ich mit den Erklärungen vom Delphi Treff gekommen (sieht auch Euren Vorschlägen ähnlich). Wenn ich aber meinem Record VocabularyList.German seine Vokabeln zuordnen will meckert der Compiler: Incompatible types TStringList and string.

Delphi-Quellcode:
type
  TForm1 = class(TForm)
    Button1: TButton;
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel5: TPanel;
    Panel6: TPanel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type
  TVocabulary = record
    German : TStringList;
    English : TStringList;
    Repetitions : Integer;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  VocabularyList: TVocabulary;
  Vocabulary: TStringList;
  index: Integer;

begin
  Vocabulary.LoadFromFile('Vocabulary.text');

  for index:= 0 to Vocabulary.Count -1 do
  begin
    VocabularyList.Repetitions:= 3;
    VocabularyList.German:= Vocabulary.ValueFromIndex[index];
    VocabularyList.English:= Vocabulary.Names[index];
  end;

end;
Jemand ne Idee warum er das macht?
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:02 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