en form to Knaper og et memofelt og prøv så det her :
const Filename =\'Hest.txt\';
procedure FastCrypt(ptrBuffer : Pointer; iSize : Integer; uiInit : Byte = $00);
var
iIdx : Integer;
uiCurrByte : Integer;
uiLastByte : Integer;
begin
uiLastByte := 0;
for iIdx := 1 to iSize do
begin
uiCurrByte := Byte(ptrBuffer^);
uiCurrByte := uiCurrByte xor uiLastByte;
uiCurrByte := not uiCurrByte;
uiCurrByte := uiCurrByte xor uiInit;
uiCurrByte := ((uiCurrByte and $0F) shl 4) or ((uiCurrByte and $F0) shr 4);
uiLastByte := uiCurrByte;
Char(ptrBuffer^) := Char(uiCurrByte);
inc(pChar(ptrBuffer));
end;
end;
procedure FastDeCrypt(ptrBuffer : Pointer; iSize : Integer; uiInit : Byte = $00);
var
iIdx : Integer;
uiCurrByte : Byte;
uiLastByte : Byte;
begin
uiLastByte := 0;
for iIdx := 1 to iSize do
begin
uiCurrByte := Byte(ptrBuffer^);
uiCurrByte := ((uiCurrByte and $0F) shl 4) or ((uiCurrByte and $F0) shr 4);
uiCurrByte := uiCurrByte xor uiInit;
uiCurrByte := not uiCurrByte;
uiCurrByte := uiCurrByte xor uiLastByte;
uiLastByte := Byte(ptrBuffer^);
Char(ptrBuffer^) := char(uiCurrByte);
inc(pChar(ptrBuffer));
end;
end;
procedure TForm1.ButtonLoadClick(Sender: TObject);
var
Buffer : String;
MemoryStream : TMemoryStream;
Len : Integer;
begin
if not FileExists(Filename) then
exit;
MemoryStream := TMemoryStream.Create;
MemoryStream.LoadFromFile(Filename);
MemoryStream.Read(Len,sizeOf(Integer));
MemoryStream.Read(Buffer,Len);
FastDecrypt(Pchar(Buffer),Len);
Memo1.Text := Buffer;
MemoryStream.Free;
end;
procedure TForm1.ButtonSaveClick(Sender: TObject);
var
Buffer : String;
MemoryStream : TMemoryStream;
Len : Integer;
begin
MemoryStream := TMemoryStream.Create;
Buffer := Memo1.Text;
Len := Length(Buffer);
FastCrypt(PChar(Buffer), Len);
MemoryStream.Position := 0;
MemoryStream.Write(Len,SizeOf(integer));
MemoryStream.Write(Buffer,Len);
MemoryStream.SaveToFile(Filename);
MemoryStream.Free;
end;
Jens B (
http://www.fotx.net/borrisholt)