Wstawianie danych w srodek pliku

0

Witam wszystkich!

Byl sobie plik strumieniowy zawierajacy 1MB danych.
Powiedzmy, ze chcialbym w ok 1/3 wstawic dodatkowe 400 kilo nie nadpisujac tego co jest poza 1/3. Idac dalej w gre wchodzi takze wyciecie jakichs danych ze srodka pliku oraz edycja danych (nowe moga byc wieksze lub mniejsze).

moze to nie jest temat na nobla, ale nie mam poja jak to ugryzc ;-( </delphi>

0

Jesli tych danych rzeczywiscie jest tak malo to zwyczajnie skopiuj co trzeba do Tmemorystream a potem znow do pliku i juz.
var f,m:Tstream;
n,k:integer;
begin
f:=Tfilestream.create('nazwapliku',fmopenreadwrite);
m:=Tmemorystream.create;
f.position:=n;//n to ta Twoja 1/3
m.copyfrom(f,f.size-f.position);
f.position:=n;
*teraz zapisujesz co chcesz w f od pozycji n i dalej i zapamietujesz gdzie skonczyles *zapis powiedzmy ze to bedzie k
f.position:=k;m.position:=0;f.copyfrom(m,m.size);
f.free;m.free;
end;
//uwazaj na copyfrom , w przypadku gdyby do skopiowaia bylo 0 bajtow
*(drugi parametr tej funkcji) to copyfrom zwali caly strumien do strumienia z *ktorego jest wywolywany

0

A jesli to bedzie duzy X MB'ow to coz ...

0

Wtedy zamiast Tmemorystream stosujesz tfilestream dla jakiegos pliku tymczasowego i juz. To znaczy zamiast przechowywac dane w pamieci, przechowujesz w innym pliku.

0

... i stala sie jasnosc [hurra]

0

... Wieeeeelkieeee dzieki <Marmar> za klar odpowiedz.
wyrazniej i krocej chyba sie nie da :)

PS.
Mam jeszcze jedno pytanie. Pisac je tu czy na nowym temacie ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1