Mega Code Archive

 
Categories / Delphi / Examples
 

Encode a file any type of extension

Encoding a file made easy.. ShellSPY V1.1a is the award winning and powerful monitoring solution that you need! ShellSPY gives you the power to log all keystrokes, windows viewed, applications ran, internet connections made, passwords entered, chat conversations that were made, Monitor all running tasks on your pc Download Now Web Site: Cjpsoftware.com // Example units below will encrypt a document / unencrypt // Author Colin Pringle Cjpsoftware.com // copy / pate below into a new unit unit EncodStr; interface uses Classes; type TEncodedStream = class (TFileStream) private FKey: Char; public constructor Create(const FileName: string; Mode: Word); function Read(var Buffer; Count: Longint): Longint; override; function Write(const Buffer; Count: Longint): Longint; override; property Key: Char read FKey write FKey default 'A'; end; implementation constructor TEncodedStream.Create( const FileName: string; Mode: Word); begin inherited Create (FileName, Mode); FKey := 'A'; end; function TEncodedStream.Write(const Buffer; Count: Longint): Longint; var pBuf, pEnc: PChar; I, EncVal: Integer; begin // allocate memory for the encoded buffer GetMem (pEnc, Count); try // use the buffer as an array of characters pBuf := PChar (@Buffer); // for every character of the buffer for I := 0 to Count - 1 do begin // encode the value and store it EncVal := ( Ord (pBuf[I]) + Ord(Key) ) mod 256; pEnc [I] := Chr (EncVal); end; // write the encoded buffer to the file Result := inherited Write (pEnc^, Count); finally FreeMem (pEnc, Count); end; end; function TEncodedStream.Read(var Buffer; Count: Longint): Longint; var pBuf, pEnc: PChar; I, CountRead, EncVal: Integer; begin // allocate memory for the encoded buffer GetMem (pEnc, Count); try // read the encoded buffer from the file CountRead := inherited Read (pEnc^, Count); // use the output buffer as a string pBuf := PChar (@Buffer); // for every character actually read for I := 0 to CountRead - 1 do begin // decode the value and store it EncVal := ( Ord (pEnc[I]) - Ord(Key) ) mod 256; pBuf [I] := Chr (EncVal); end; finally FreeMem (pEnc, Count); end; // return the number of characters read Result := CountRead; end; end. // ---- cut/// // Cospy / paste into a new unit below unit EncForm; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TFormEncode = class(TForm) Memo1: TMemo; Memo2: TMemo; OpenDialog1: TOpenDialog; SaveDialog1: TSaveDialog; Panel1: TPanel; BtnLoadPlain: TButton; BtnSaveEncoded: TButton; BtnLoadEncoded: TButton; Splitter1: TSplitter; procedure BtnSaveEncodedClick(Sender: TObject); procedure BtnLoadEncodedClick(Sender: TObject); procedure BtnLoadPlainClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var FormEncode: TFormEncode; implementation {$R *.DFM} uses EncodStr; procedure TFormEncode.BtnSaveEncodedClick(Sender: TObject); var EncStr: TEncodedStream; begin if SaveDialog1.Execute then begin EncStr := TEncodedStream.Create( SaveDialog1.Filename, fmCreate); try Memo1.Lines.SaveToStream (EncStr); finally EncStr.Free; end; end; end; procedure TFormEncode.BtnLoadEncodedClick(Sender: TObject); var EncStr: TEncodedStream; begin if OpenDialog1.Execute then begin EncStr := TEncodedStream.Create( OpenDialog1.FileName, fmOpenRead); try Memo2.Lines.LoadFromStream (EncStr); finally EncStr.Free; end; end; end; procedure TFormEncode.BtnLoadPlainClick(Sender: TObject); begin if OpenDialog1.Execute then Memo1.Lines.LoadFromFile ( OpenDialog1.FileName); end; end.