AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Hilfe für einen Filesplitter

Ein Thema von Sascha · begonnen am 10. Sep 2003 · letzter Beitrag vom 12. Sep 2003
 
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#4

Re: Hilfe für einen Filesplitter

  Alt 10. Sep 2003, 13:36
Hier ist mal der kompletten Code zum Splitten/Zusammensetzten von Dateien mit FileStreams von http://home.pages.at/dbr-software/delphi.

Vielleicht hilft's:

Delphi-Quellcode:
// Hiermit können Dateien gesplittet und zusammengesetzt werden.
// Beim Splitten gibt man die zu splittende Datei, den Zielordner für
// die Teildateien und deren gewünschte Anzahl an. Beim Zusammensetzen gibt
// man zuerst den Ordner an, in dem sich die Teildateien befinden, dann den
// Ursprungsnamen der Originaldatei und dann den Zielordner, in dem die Datei
// wieder zusammengesetzt werden soll, gefolgt von der Anzahl der Teildateien.

// Getestet mit D4 unter WinME

uses FileCtrl;

procedure dateisplitten(dateiname,zielpfad:string;Teile:byte);
var
ts,ats:TFilestream;
x:integer;
s,edg:string;
begin
if teile > 1 then begin
edg:=extractfileext(dateiname);
s:=changefileext(extractfilename(dateiname),'')+'_';
if zielpfad[length(zielpfad)]<>'\then
zielpfad:=zielpfad+'\';
ForceDirectories(zielpfad);
if not DirectoryExists(zielpfad) then begin
showmessage('Ordnerfehler');
exit;
end;
try
ts:=TFilestream.create(dateiname,fmopenread);
except
showmessage('Datei konnte nicht geöffnet werden.');
exit;
end;
if ts.size < teile then begin
showmessage('Anzahl der Teildateien ist zu groß.');
ts.free;
exit;
end;
for x:=1 to teile do begin
try
ats:=TFilestream.create(zielpfad+s+inttostr(x)+edg+'T',fmcreate);
except
showmessage('Teildatei konnte nicht erstellt werden.');
ts.free;
exit;
end;
try
if x=teile then
ats.CopyFrom(ts,ts.size - ts.position)
else
ats.CopyFrom(ts,ts.size div teile);
except
showmessage('Fehler beim Kopieren der Daten.');
ts.free;
ats.free;
exit;
end;
ats.free;
end;
ts.free;
end else
showmessage('Anzahl der Teildateien muss mindestens 2 sein.');
end;


procedure dateizusammensetzen(quellpfad,stammname,zielpfad:string;Teile:byte);
var
ts,ats:TFilestream;
x:integer;
s,edg:string;
begin
if teile > 1 then begin
edg:=extractfileext(stammname);
s:=changefileext(stammname,'');
if quellpfad[length(quellpfad)]<>'\then
quellpfad:=quellpfad+'\';
if zielpfad[length(zielpfad)]<>'\then
zielpfad:=zielpfad+'\';
ForceDirectories(zielpfad);
if not DirectoryExists(zielpfad)
then begin
showmessage('Ordnerfehler');
exit;
end;
try
ts:=TFilestream.create(zielpfad+stammname,fmcreate);
except
showmessage('Datei konnte nicht erstellt werden.');
exit;
end;
for x:=1 to teile do begin
try
ats:=TFilestream.create(quellpfad+s+'_'+inttostr(x)+edg+'T',fmopenread);
except
showmessage('Teildatei konnte nicht geöffnet werden.');
ts.free;
exit;
end;
try
ts.CopyFrom(ats,ats.size)
except
showmessage('Fehler beim Kopieren der Daten.');
ts.free;
ats.free;
exit;
end;
ats.free;
end;
ts.free;
end else
showmessage('Anzahl der Teildateien muss mindestens 2 sein.');
end;

// Beispielaufruf zum Splitten
procedure TForm1.Button3Click(Sender: TObject);
begin
dateisplitten('d:\bilder\corel00.bmp','c:\Temp',3);
end;

// Beispielaufruf zum Zusammensetzen
procedure TForm1.Button4Click(Sender: TObject);
begin
dateizusammensetzen('c:\Temp','corel00.bmp','c:\Pictures',3);
end;
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
 


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 07:29 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