Salvando arquivo com TFileStream
Implementei um método de criptografia com TMemoryStream, mas eu não sabia que existe um limite para essa variável, o meu programa falhava quando o arquivo passava dos 100MB aproximadamente, então decidi usar o TFileStream, gostaria que me ajudassem a corrigir o seguinte código:
Obviamente SavetoFile não é um comando reconhecido pela variável TFileStream, gostaria de saber qual é o melhor comando para isso.
O programa possui 4 Edits, 1 OpenDialog e 1 SaveDialog.
Edit1 pra receber o arquivo a ser criptografado
Edit2 pra receber o diretório onde o arquivo criptografado será salvo
Edit3 pra receber o nome do arquivo que será salvo
Edit4 pra receber uma senha que só aceita números
Button1 pra executar o procedimento acima
PS: Caso não consigam me ajudar, existe alguma forma de implementar com TMemoryStream que seja capaz de suportar arquivos grandes?
Obrigado.
var
arqIn,arqOut: TFileStream;
I: Integer;
C: byte;
Senha: Integer;
begin
Senha:= strtoint(Edit4.Text)
arqIn:= TFileStream.Create(Edit1.Text,fmOpenRead);
arqIn.Position:=0;
arqOut:= TFileStream.Create(Edit2.Text+'\'+Edit3.Text+'.txt',fmCreate); // coloquei o '.txt' apenas para testar em arquivos como o Bloco de Notas, mas pretendo criptografar
// arquivos consideravelmente grandes
arqOut.Position:=0;
try
for I := 0 to arqIn.Size-1 do begin
arqIn.Read(C,1);
C := (C xor not (ord(senha shr i)));
arqOut.Write(C, 1);
end;
arqOut.SavetoFile(Edit2.Text+'\'+Edit3.Text+'.txt'); // Problema com o comando SavetoFile
finally
arqIn.Free;
arqOut.Free;
end;
end;Obviamente SavetoFile não é um comando reconhecido pela variável TFileStream, gostaria de saber qual é o melhor comando para isso.
O programa possui 4 Edits, 1 OpenDialog e 1 SaveDialog.
Edit1 pra receber o arquivo a ser criptografado
Edit2 pra receber o diretório onde o arquivo criptografado será salvo
Edit3 pra receber o nome do arquivo que será salvo
Edit4 pra receber uma senha que só aceita números
Button1 pra executar o procedimento acima
PS: Caso não consigam me ajudar, existe alguma forma de implementar com TMemoryStream que seja capaz de suportar arquivos grandes?
Obrigado.
Andrew Vargas
Curtidas 0