Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu
Online

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

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

  Alt 5. Okt 2011, 06: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.
$2B or not $2B

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