Evo ti neke moje funkcije koju sam davno pravio.
poziv:
zastita('ulaz.txt','izlaz.txt','bilo_sta');
koji ce da napravi novi zasticen fajl izlaz.txt, ili:
zastita('ulaz.txt','ulaz.txt','asaa54a57sa65s6aa6s5a');
koji ce da zastiti ulaz.txt
Pre nego sto das nekome program, zastitis fajl sa jednim pozivom funkcije zastita.
kada citas podatke, prvo pozoves zastitu, uzmes podatak, a zatim vratis zastitu.
Sve ovo vazi ako fajlovi nisu veliki. ako su veliki onda bi trebalo da se napravi funkcija koja na pocetku programa skida zastitu i podaci se drze u memoriji, ali se zasticen fajl ne dira, nego se sve crpi iz buffera. To je vec neka druga prica.
Code:
function zastita(fu, fi, kript:String):Boolean;
var
f, f2: File;
size: Integer;
buffer: PChar;
i,j:Integer;
begin
{$I+}
j := length(kript);
AssignFile(f, fu);
Reset(f, 1);
Result:=false;
try
size := FileSize(f);
GetMem(Buffer, Size);
try
BlockRead(f, buffer^, bize);
for i := 0 to size-1 do
begin
byte (buffer[i]):=byte (buffer[i]) xor byte(kript[(i mod j)+1]);
end;
if fi=fu then
begin
Rewrite(f,1);
BlockWrite(f, buffer^, size);
Result:=true;
end
else
begin
AssignFile(f2, fi);
Rewrite(f2,1);
try
BlockWrite(f2, buffer^, size,i);
if i<>size then
showmessage('neeeeeeeeeeeee. Ne mogu da upisem blok u fajl.');
Result:=true;
finally
CloseFile(f2);
end;
end;
finally
FreeMem(buffer);
end;
finally
CloseFile(f);
end;
{$I+}
end;
[Ovu poruku je menjao Toyo dana 29.11.2005. u 21:49 GMT+1]