| Autor |
Beitrag |
patrick
      
Beiträge: 1481
WIN2k, WIN XP
D6 Personal, D2005 PE
|
Verfasst: Mi 30.04.03 16:40
hi zusammen,
ich möchte eine große datei in mehrere kleine dateien splitten.
und anschließend später wieder zusammensetzten.
kann mir jemand helfen und sagen wie das funktioniert?
THX
_________________ Patrick
im zweifelsfall immer das richtige tun!!!
|
|
O'rallY
      
Beiträge: 563
|
Verfasst: Mi 30.04.03 18:00
Erstmal ein paar Tipps zum selber erarbeiten, der nächste Post ist dann der Code:
-Benutze Streams, da kannst du Dateien partiell ab einer bestimmten Position einlesen und kannst auch die Länge bestimmen, die eingelesen werden soll.
-Übergib als Parameter die Anzahl der Splitter. Damit kannst du dann einfach die Größe der einzelnen Splitter erechnen.
-Anhand der Namen der Splitter kannst du die Position kennzeichnen, z.B. testdatei_splitter1.spl.
_________________ .oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...
Zuletzt bearbeitet von O'rallY am Mi 30.04.03 18:02, insgesamt 1-mal bearbeitet
|
|
O'rallY
      
Beiträge: 563
|
Verfasst: Mi 30.04.03 18:00
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52:
| function SplitFile(FileName : TFileName; SizeofFiles : Integer) : integer; var i : Word; fs, sStream: TFileStream; SplitFileName: String; begin
fs := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite); try for i := 1 to Trunc(fs.Size / SizeofFiles) + 1 do begin SplitFileName := ChangeFileExt(FileName, '.'+ FormatFloat('000', i)); sStream := TFileStream.Create(SplitFileName, fmCreate or fmShareExclusive); try if fs.Size - fs.Position < SizeofFiles then SizeofFiles := fs.Size - fs.Position; sStream.CopyFrom(fs, SizeofFiles); finally sStream.Free; end; Result := i; end; finally fs.Free; end;
end;
function CombineFiles(FileName, CombinedFileName : TFileName) : Boolean; var i: integer; fs, sStream: TFileStream; filenameOrg: String; begin i := 1; fs := TFileStream.Create(CombinedFileName, fmCreate or fmShareExclusive); try while FileExists(FileName) do begin sStream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite); try fs.CopyFrom(sStream, 0); finally sStream.Free; end; Inc(i); FileName := ChangeFileExt(FileName, '.'+ FormatFloat('000', i)); end; finally fs.Free; end; end; |
_________________ .oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...
|
|
patrick 
      
Beiträge: 1481
WIN2k, WIN XP
D6 Personal, D2005 PE
|
Verfasst: Mi 30.04.03 19:46
vielen dank für die schnelle antwort O'rallY
PS deine Signatur find ich super  (wolt ich dir immer schon mal sagen)
_________________ Patrick
im zweifelsfall immer das richtige tun!!!
|
|
O'rallY
      
Beiträge: 563
|
Verfasst: Mi 30.04.03 19:55
| patrick hat folgendes geschrieben: | vielen dank für die schnelle antwort O'rallY
|
Aber immer gerne doch  .
| patrick hat folgendes geschrieben: |
PS deine Signatur find ich super (wolt ich dir immer schon mal sagen) |
Vielen Dank, ich auch  .
_________________ .oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mi 30.04.03 21:05
|
|
O'rallY
      
Beiträge: 563
|
Verfasst: Do 01.05.03 11:10
Um ehrlich zu sein, habe ich den Code nicht selbst geschrieben (Staub auf mein Haupt, ja ich bin faul  ). Ich glaub der ist vom SwissDelphiCenter. Aber gibt es diese Funktion auch für Integer?
Warum bist du eigentlich immer so streng? Da kriegt man gleich ein schlechtes Gewissen wenn du postest. 
_________________ .oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 01.05.03 13:04
| O'rallY hat folgendes geschrieben: | | Aber gibt es diese Funktion auch für Integer? |
Sicher:
Quelltext
| Zitat: |
Warum bist du eigentlich immer so streng?
|
Weil sich alle Welt darüber beschwert, das MS Software so verbuggt ist. Und genau da fängt es an. Immer sauber programmieren, auch bei Kleinigkeiten.
| Zitat: |
Da kriegt man gleich ein schlechtes Gewissen wenn du postest.  |
Gut so. 
|
|
O'rallY
      
Beiträge: 563
|
Verfasst: Do 01.05.03 20:16
Ich glaube du hast mich missverstanden. Ich bin absolut deiner Meinung, ich bin auch froh, dass du mich auf sowas hinweißt.
Ich meinte eigentlich, dass du deine Posts mit mehr  oder  .  Einfach ein bisschen freundlicher schreiben. So etwa:
| Zitat: |
Liebster O'rallY. Ich verstehe nicht ganz warum du FormatFloat verwendest. Ich möchte dich freundlichst darauf hinweisen, dass es sich um einen floatspezifischen Befehl handelt und da du Integer benutzt, ist er hier eher unangebracht.
Ich bitte um dein Verständnis.
Danke vielmals!
Der liebe Luckie
|
Ok? Kannst es ja mal für die Zukunft zu Herzen nehmen.  .
_________________ .oO'rallY
Linux is like a tipi: No gates, no windows and a gnu-eating apache inside...
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Do 01.05.03 20:20
Ich will ja nicht mit dir flirten. Und außerdem gefällt mir er hier:  so gut. 
|
|