Chce zapisać jakiś dowolny plik do nowego pliku w postaci częściowo zakodowanej, spłodziłem kod nastepujacy:
function ROT13( teksty: string) : string;
Begin
//...
result := teksty;
end;
procedure Zapisz();
var
plik_open, plik_save: TFileStream;
Buffer : array[0..1000024] of char;
tmp: string;
i: integer;
Begin
plik_open := TFileStream.Create('przyklad.jpg', fmOpenReadWrite);
Plik_open.Position := 0;
Plik_open.ReadBuffer( Buffer, plik_open.Size );
// tu szyfruje sobie fragment pliku, btw jak to zrobic bardziej elegancko,
// bo do funkcji ROT13 potzrebuje przekazac stringa i odbieram tez stringa
for i:=1 to 100000 do
tmp := tmp + Buffer[i];
tmp:= ROT13(tmp);
for i:=1 to 100000 do
Buffer[i] := tmp[i];
plik_save := TFileStream.Create( 'moj_plik', fmcREATE);
plik_save.Seek(plik_save.Size, soFromBeginning);
plik_save.WriteBuffer(Buffer, plik_open.Size);
plik_open.Free;
plik_save.Free;
End;
Duzych plikow nie moge zapisac gdyz rozmiar tablicy buffer jest tablica statyczna, probowalem deklarowac dynamicznie (fragment ponizej), ale coś jest nie tak, jak zrobic by zapisalo kazdy plik i czy
var
Buffer : array of char;
....
plik_open := TFileStream.Create('przyklad.jpg', fmOpenReadWrite);
Plik_open.Position := 0;
setlength(buffer, plik_open.Size);
Plik_open.ReadBuffer( Buffer, plik_open.Size );