AGB  ·  Datenschutz  ·  Impressum  







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

Datei in Streams zerstückeln

Ein Thema von TurboMartin · begonnen am 25. Mär 2007 · letzter Beitrag vom 25. Mär 2007
 
Benutzerbild von himitsu
himitsu

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

Re: Datei in Streams zerstückeln

  Alt 25. Mär 2007, 19:08
Delphi-Quellcode:
fs := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
try
  BlockSize := 30*1024*1024;
  i := 0;
  while i < fs.Size do
  begin
    SetLength(S, BlockSize);
    //fs.Position := i;
    i2 := fs.Read(S[1], BlockSize);
    SetLength(S, i2);
    Inc(i, i2);

    // hier bekommst du in S jeweils maximal 30 MB-Teilstücke

  end;
finally
  fs.Free;
end;
du kannst auch sowas machen wie "gib mir Block mit Nummer":
Delphi-Quellcode:
BlockNummer := X;

fs := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
try
  BlockSize := 30*1024*1024;
  SetLength(Result, BlockSize);
  fs.Position := BlockNummer * BlockSize;
  i2 := fs.Read(Result[1], BlockSize);
  SetLength(Result, i2);

  // hier bekommst du in S jeweils den X-ten Block mit maximal 30 MB

finally
  fs.Free;
end;

// oder auch erst hier (wäre gut für 'ne Funktion)

Und zum zusammensetzen mußt du dann nur alle Teilstücker nacheinander wieder mit fs.Write in einen Stream reinschreiben.

PS: oder such mal nach Hier im Forum suchenFileSplittern, die machen ja sozusagen genau das Gleiche (nur halt mit 'nem anderem Zielformat der Teilstücke.

Aber warum will man eine sehr große Datei in vielen INIs speichern? (ich dank mal dafür gibt es besser geeignete Formate)
Ein Therapeut entspricht 1024 Gigapeut.
  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 21:21 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