AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Elemente aus TStringList in Laufzeit entfernen

Ein Thema von KetchUp · begonnen am 16. Nov 2018 · letzter Beitrag vom 25. Nov 2018
Antwort Antwort
KetchUp

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

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
HolgerX

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 25. Nov 2018, 16:12
Hmm..

Was für ein Kuddelmuddel!

Letzter Versuch meiner seits...

Zitat:
Delphi-Quellcode:
type
  TVocabulary = record
    German : TStringList;
    English : TStringList;
    Repetitions : Integer;
  end;
Bei 'Datenverarbeitung' mit mehren Datensätzen (ob dass nun 2 Wörter hier sind, oder ganze Datensätze mit diversen Feldern) gibt es 'immer' nur 'eine' Liste, welche eine beliebige Anzahl von Datensätzen enthält!

Wenn hier im Thread von Records gesprochen wurde, dann sind diese 'Records' jeweis 'ein' Datensatz in der Liste.
Somit
Delphi-Quellcode:
  TVocabulary = record
    German : String;
    English : String;
    Repetitions : Integer;
  end;
Dies geht übrigens auch als Classe (Object):

Delphi-Quellcode:
  TVocabulary = class
    German : String;
    English : String;
    Repetitions : Integer;
  end;
Egal ob ObjectList oder StringList, dies sind 'Listen' welche Datensätze (Objecte) enthalten.
Alternativ kannst Du auch ein
 TVocabularyList = Array of TVocabulary verwenden.
Jedoch ist das Löschen von einem Datensatz in diesem Array etwas aufwändiger als bei einer ObjectList.
Denn dann musst Du die verbleibenden Einträge in deinem Array in ein neues, verkleinertes umkopieren und nur den zu löschenden weglassen..

Ich hatte in meinem Beispiel TObjectList verwendet mit Objecten, statt Records, da da die Bearbeitung (löschen) einfach geht.
Hier kümmert sich die TObjectList selber um das Händling..
In meiner Unit habe ich nur die TObjectList leicht geändert/erweitert, um einfacher auf die Objecte zugreifen und hinzufügen zu können.

Ich werde Dir hier nun kein Beispielprogramm mit Arrays vorkauen...
  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 25. Nov 2018, 17:38

Gut erklärt!

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

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

AW: Elemente aus TStringList in Laufzeit entfernen

  Alt 25. Nov 2018, 18:15
Zitat:
Aber an dem Punkt an dem ich gemerkt habe, dass Klassen auch so was wie Prozeduren sind bin ich ausgestiegen.
Man könnte es auch so formulieren "An dem Punkt an dem ich gemerkt habe, dass Klassen auch so was wie Prozeduren sind und ich mir das einrede bin ich ausgestiegen und habe den guten Holger-Code weggeschmissen weil ich ihn nicht verstehe"

Zitat:
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.
Wenn du das denkst, dann hast du etwas ganz und gar nicht verstanden.

Holgers Ansatz war mehr als in Ordnung. Wieso wirfst den einfach weg und fängst schon wieder mit deiner komischen StringListe an? Ließ doch mal was die Leute dir schreiben.

Zitat:
Ich hab jetzt wirklich viele Stunden versucht
Wenn du das viele Stunden getan hättest, würdest du den Code schon lange verstanden haben.

Geändert von DieDolly (25. Nov 2018 um 18:19 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 11:55 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