program Q_24381988;
{$APPTYPE CONSOLE}
uses
Windows;
const
DELTA = $4;
procedure Encrypt(var Buffer: String; Length: DWORD);
var
I : DWORD;
begin
If (Buffer = '') Or (Length <= 0) Then Exit;
For I := 1 To Length Do
begin
Buffer[I] := Char(Byte(Buffer[I]) + DELTA);
end;
end;
procedure Decrypt(var Buffer: String; Length: DWORD);
var
I : DWORD;
begin
If (Buffer = '') Or (Length <= 0) Then Exit;
For I := 1 To Length Do
begin
Buffer[I] := Char(Byte(Buffer[I]) - DELTA);
end;
end;
var
Output : String;
BufferLen : Integer;
begin
If ParamCount < 1 Then Exit;
BufferLen := Length(ParamStr(1));
If BufferLen >= 256 Then Exit;
Output := ParamStr(1);
SetLength(Output,BufferLen);
Encrypt(Output,BufferLen);
Writeln('String: ' + Output);
Readln;
end.
// next \\
program Q_24381988_2;
{$APPTYPE CONSOLE}
uses
Windows;
const
DELTA = $4;
procedure Encrypt(var Buffer: String; Length: DWORD);
var
I : DWORD;
begin
If (Buffer = '') Or (Length <= 0) Then Exit;
For I := 1 To Length Do
begin
Buffer[I] := Char(Byte(Buffer[I]) + DELTA);
end;
end;
procedure Decrypt(var Buffer: String; Length: DWORD);
var
I : DWORD;
begin
If (Buffer = '') Or (Length <= 0) Then Exit;
For I := 1 To Length Do
begin
Buffer[I] := Char(Byte(Buffer[I]) - DELTA);
end;
end;
var
Output : String;
BufferLen : Integer;
begin
If ParamCount < 1 Then Exit;
BufferLen := Length(ParamStr(1));
If BufferLen >= 256 Then Exit;
Output := ParamStr(1);
SetLength(Output,BufferLen);
Decrypt(Output,BufferLen);
Writeln('String: ' + Output);
Readln;
end.
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95:





by: rllibbyPosted on 2009-05-05 at 10:53:16ID: 24307223
I am only doing one project example, because the only diff between the 2 is that one decrypts and the other encrypts. Basically a one line change.
ffer[i]) + DELTA);
ffer[i]) - DELTA);
dle(STD_IN PUT_HANDLE ), lpInput, 1, dwRead) do .bKeyDown) then
;
(GetStdHan dle(STD_OU TPUT_HANDL E), cbi) then (GetStdHan dle(STD_OU TPUT_HANDL E), #32, cbi.dwSize.X * cbi.dwSize.Y, coScreen, dwWrite); etStdHandl e(STD_OUTP UT_HANDLE) , coScreen);
Delphi source for console app:
program Project1;
{$APPTYPE CONSOLE}
uses
Windows,
SysUtils;
const
DELTA = $04;
procedure Encrypt(lpBuffer: PChar; dwLen: DWORD);
var i: DWORD;
begin
if (Assigned(lpBuffer) and (dwLen > 0)) then
begin
for i:=0 to Pred(dwLen) do
begin
lpBuffer[i]:=Chr(Byte(lpBu
end;
end;
end;
procedure Decrypt(lpBuffer: PChar; dwLen: DWORD);
var i: DWORD;
begin
if (Assigned(lpBuffer) and (dwLen > 0)) then
begin
for i:=0 to Pred(dwLen) do
begin
lpBuffer[i]:=Chr(Byte(lpBu
end;
end;
end;
procedure ReadKey;
var lpInput: INPUT_RECORD;
dwRead: DWORD;
begin
// Clear struct
System.FillChar(lpInput, SizeOf(KEY_EVENT_RECORD), 0);
// Read one keystroke from the input buffer
while ReadConsoleInput(GetStdHan
begin
// Ensure that it is a key up event
if (lpInput.EventType = KEY_EVENT) and not(lpInput.Event.KeyEvent
begin
// Done processing
break;
end;
// Clear struct
System.FillChar(lpInput, SizeOf(KEY_EVENT_RECORD), 0);
end;
end;
procedure ClearScreen;
var cbi: CONSOLE_SCREEN_BUFFER_INFO
coScreen: COORD;
dwWrite: DWORD;
begin
// Set new cursor's starting position
System.FillChar(coScreen, SizeOf(coScreen), 0);
// Get screen buffer info
if GetConsoleScreenBufferInfo
begin
// Fill the entire screen with blanks
FillConsoleOutputCharacter
// Position the cursor
SetConsoleCursorPosition(G
end;
end;
var
Buffer: Array [0..255] of Char;
BufferLen: Integer;
Arg: String;
begin
FillChar(Buffer, SizeOf(Buffer), 0);
if (ParamCount < 1) then
ExitCode:=1
else
begin
Arg:=ParamStr(1);
BufferLen:=Length(Arg);
if (BufferLen >= SizeOf(Buffer)) then
ExitCode:=1
else
begin
Move(Pointer(Arg)^, Buffer, BufferLen);
// The only difference between the two projects is calling encrypt / decrypt
// Encrypt(@Buffer, BufferLen);
// Decrypt(@Buffer, BufferLen);
Encrypt(@Buffer, BufferLen);
// Clear the screen
ClearScreen;
// Dump the string
Write(Format('String: %s', [Buffer]));
// Wait for key
ReadKey;
// Done
ExitCode:=1;
end;
end;
end.
----
Regards,
Russell