Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.168 Beiträge
 
Delphi 12 Athens
 
#4

AW: [Anfänger] Problem beim Einlesen und Ausgabe von Text Datein

  Alt 5. Okt 2011, 05:16
Wenn du mit Stringlisten arbeitest, dann brauchst du Datei:TextFile; nicht

Zitat:
Delphi-Quellcode:
Memo1.Clear;
Memo1.Lines.LoadFromFile(OpenDialog.FileName);
Memo1.Lines.Count;
Clear wird von LoadFromFile schon gemacht, ist also nicht unbedingt nötig.
Und Count nur auszulesen bringt nicht viel ... damit sollte man auch noch etwas machen.

Sir Rufo hat einfach nur die TStringList manuell erstellt, da sie ja eigentlich nicht unbedingt angezeigt werden mnüssen, für die Bearbeitung durch das Programm.

Die manuelle Erzeugung rausgekürzt und auf Memos umgestellt, kommt dieser Code dabei raus.
Sooo viel Logik ist das doch dann garnicht mehr?
Delphi-Quellcode:
// Memo1 = ContainerListe
// Memo2 = VerladeListe
// OpenDialog1 = VerladeDatei
// OpenDialog2 = ContainerDatei
// das, was maximal in einen Container rein passt = Anzahl
begin
  ...
  VerladeListe.LoadFromFile(VerladeDatei.FileName);
  while (ContainerListe.Lines.Count < Anzahl) and (VerladeListe.Lines.Count > 0) do
    begin
      ContainerListe.Lines.Add(VerladeListe.Lines[0]);
      VerladeListe.Lines.Delete(0);
    end;
  ContainerListe.SaveToFile(ContainerDatei.FileName);
end;
Ist noch Platz im Container (ContainerListe) und ist noch etwas in der VerladeListe drin, dann kopiere das Erste aus dieser VerladeListe in die ContainerListe und lösche es dabei aus der VerladeListe...

Tipp: Gib deinen Komponenten ordentliche Namen.
Bei "Memo1" weiß doch keiner wofür das verwendet wird und schon läßt sich der Code besser lesen/verstehen.


Statt dem while (ContainerListe.Lines.Count < Anzahl) and (VerladeListe.Lines.Count > 0) do könnte man auch
Delphi-Quellcode:
if VerladeListe.Lines.Count >= 50 then
  for i := 0 to 49 do
machen. (kopiere die ersten 50, wenn es soviele gibt)

Oder man ließt aus, wieviel in VerladeListe drin ist, begrenzt dieses (Delphi-Referenz durchsuchenMax oder über If i > 50 then i := 50; ) und kopiert, was ausgerechnet wurde.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 5. Okt 2011 um 09:13 Uhr)
  Mit Zitat antworten Zitat