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 (
Max oder über
If i > 50 then i := 50;
) und kopiert, was ausgerechnet wurde.