Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
|
Re: Text Datei teilen
23. Feb 2007, 17:23
Also gut; die Prozedur kann in das Formular, ein Datenmodul oder "sonstwo" eingebunden werden.
Delphi-Quellcode:
// sQuelldatei ist der vollständige Dateiname
// sZieldatei ist als Format-String gedacht: "E:\Temp\Geteilt_%3.d.Txt",
// dort wird der Zähler der Teildateien eingefügt
// iMaximum ist die maximale Anzahl von Zeichen pro Teildatei
procedure DateiTeilen(const sQuellDatei: string; const sZielDatei: string; const iMaximum: int);
var aQuelle, aZiel: TStringList;
iSumme, iStart, iZaehler, x0: int;
begin
// Initialisierungen
iSumme := 0;
iStart := 0;
iZaehler := 0;
aQuelle := TStringList.Create;
aZiel := TStringList.Create;
try
// Quelle einlesen
aQuelle.LoadFromFile(sQuellDatei);
// bearbeite alle Zeilen
for x0:= 0 to aQuelle.Count - 1 do
begin
Inc(iSumme, aQuelle[x0]+2);
// wenn diese Summe schon zuviel ist, dann neue Teildatei erzeugen
if iSumme > iMaximum
then begin
Inc(iZaehler);
aZiel.SaveToFile( Format(sZielDatei, [iZaehler]) );
// Daten zurücksetzen
aZiel.Clear;
iSumme := aQuelle[x0] + 2;
end;
// aktuelle Zeile kopieren
aZiel.Add(aQuelle[x0]);
end;
// letzte Teildatei speichern
Inc(iZaehler);
aZiel.SaveToFile( Format(sZielDatei, [iZaehler]) );
finally
aQuelle.Free;
aZiel.Free;
if iZaehler > 0
then ShowMessage( Format("%d Teildateien erzeugt", iZaehler) );
end;
end;
Bei der Summe habe ich immer 2 Zeichen addiert wegen CR/LF.
Was Dir jetzt noch fehlt, bitte selbst überlegen und unter Delphi heraussuchen. Nicht getestet und ohne Gewähr - siehe Signatur.
Gruß Jürgen
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
|