FormatCode Code Formatter is based on serveral powerful syntax parser engines
so you can exactly control the appearance of your source code. Here is the code formatting demo of
FormatCode Delphi Code Formatter to prove the ability of code formatting
functions of FormatCode:
unit MD5;interface uses SysUtils;type TMD5Context=record State:array[0..3]of
Longint;Count:array[0..1]of Longint;case Integer of 0:(BufChar:array[0..63]of
Byte);1:(BufLong:array[0..15]of Longint);end;TMD5Digest=array[0..15]of Char;
procedure MD5Init(var MD5Context:TMD5Context);procedure MD5Update(var MD5Context
:TMD5Context;const Data;Len:Integer);procedure MD5Transform(var Buf:array of
Longint;const Data:array of Longint);procedure MD5UpdateBuffer(var MD5Context:
TMD5Context;Buffer:Pointer;BufSize:Integer);procedure MD5Final(var Digest:
TMD5Digest;var MD5Context:TMD5Context);function GetMD5(Buffer:Pointer;BufSize:
Integer):string;function StrMD5(Buffer:string):string;implementation const
MaxBufSize=16384;type PMD5Buffer= ^TMD5Buffer;TMD5Buffer=array[0..(MaxBufSize-1)
]of Char;procedure MD5Init(var MD5Context:TMD5Context);begin FillChar(MD5Context
,SizeOf(TMD5Context),#0);with MD5Context do begin State[0]:=Longint($67452301);
State[1]:=Longint($EFCDAB89);State[2]:=Longint($98BADCFE);State[3]:=Longint(
$10325476);end end;procedure MD5Update(var MD5Context:TMD5Context;const Data;Len
:Integer);type TByteArray=array[0..0]of Byte;var Index:Word;T:Longint;begin with
MD5Context do begin T:=Count[0];Inc(Count[0],Longint(Len)shl 3);if Count[0]<T
then Inc(Count[1]);Inc(Count[1],Len shr 29);T:=(T shr 3)and$3F;Index:=0;if T<>0
then begin Index:=T;T:=64-T;if Len<T then begin Move(Data,BufChar[Index],Len);
Exit;end;Move(Data,BufChar[Index],T);MD5Transform(State,BufLong);Dec(Len,T);
Index:=T;end;while Len>=64 do begin Move(TByteArray(Data)[Index],BufChar,64);
MD5Transform(State,BufLong);Inc(Index,64);Dec(Len,64);end;Move(TByteArray(Data)[
Index],BufChar,Len);end end;procedure MD5Final(var Digest:TMD5Digest;var
MD5Context:TMD5Context);var Cnt:Word;P:Byte;begin with MD5Context do begin Cnt:=
(Count[0]shr 3)and$3F;P:=Cnt;BufChar[P]:=$80;Inc(P);Cnt:=64-1-Cnt;if Cnt<8 then
begin FillChar(BufChar[P],Cnt,#0);MD5Transform(State,BufLong);FillChar(BufChar,
56,#0);end else FillChar(BufChar[P],Cnt-8,#0);BufLong[14]:=Count[0];BufLong[15]
:=Count[1];MD5Transform(State,BufLong);Move(State,Digest,16)end;FillChar(
MD5Context,SizeOf(TMD5Context),#0)end;procedure MD5Transform(var Buf:array of
Longint;const Data:array of Longint);var A,B,C,D:Longint;procedure Round1(var W:
Longint;X,Y,Z,Data:Longint;S:Byte);begin Inc(W,(Z xor(X and(Y xor Z)))+Data);W:=
(W shl S)or(W shr(32-S));Inc(W,X)end;procedure Round2(var W:Longint;X,Y,Z,Data:
Longint;S:Byte);begin Inc(W,(Y xor(Z and(X xor Y)))+Data);W:=(W shl S)or(W shr(
32-S));Inc(W,X)end;procedure Round3(var W:Longint;X,Y,Z,Data:Longint;S:Byte);
begin Inc(W,(X xor Y xor Z)+Data);W:=(W shl S)or(W shr(32-S));Inc(W,X)end;
procedure Round4(var W:Longint;X,Y,Z,Data:Longint;S:Byte);begin Inc(W,(Y xor(X
or not Z))+Data);W:=(W shl S)or(W shr(32-S));Inc(W,X)end;begin A:=Buf[0];B:=Buf[
1];C:=Buf[2];D:=Buf[3];Round1(A,B,C,D,Data[0]+Longint($d76aa478),7);Round1(D,A,B
,C,Data[1]+Longint($e8c7b756),12);Round1(C,D,A,B,Data[2]+Longint($242070db),17);
Round1(B,C,D,A,Data[3]+Longint($c1bdceee),22);Round1(A,B,C,D,Data[4]+Longint(
$f57c0faf),7);Round1(D,A,B,C,Data[5]+Longint($4787c62a),12);Round1(C,D,A,B,Data[
6]+Longint($a8304613),17);Round1(B,C,D,A,Data[7]+Longint($fd469501),22);Round1(A
,B,C,D,Data[8]+Longint($698098d8),7);Round1(D,A,B,C,Data[9]+Longint($8b44f7af),
12);Round1(C,D,A,B,Data[10]+Longint($ffff5bb1),17);Round1(B,C,D,A,Data[11]+
Longint($895cd7be),22);Round1(A,B,C,D,Data[12]+Longint($6b901122),7);Round1(D,A,
B,C,Data[13]+Longint($fd987193),12);Round1(C,D,A,B,Data[14]+Longint($a679438e),
17);Round1(B,C,D,A,Data[15]+Longint($49b40821),22);Round2(A,B,C,D,Data[1]+
Longint($f61e2562),5);Round2(D,A,B,C,Data[6]+Longint($c040b340),9);Round2(C,D,A,
B,Data[11]+Longint($265e5a51),14);Round2(B,C,D,A,Data[0]+Longint($e9b6c7aa),20);
Round2(A,B,C,D,Data[5]+Longint($d62f105d),5);Round2(D,A,B,C,Data[10]+Longint(
$02441453),9);Round2(C,D,A,B,Data[15]+Longint($d8a1e681),14);Round2(B,C,D,A,Data
[4]+Longint($e7d3fbc8),20);Round2(A,B,C,D,Data[9]+Longint($21e1cde6),5);Round2(D
,A,B,C,Data[14]+Longint($c33707d6),9);Round2(C,D,A,B,Data[3]+Longint($f4d50d87),
14);Round2(B,C,D,A,Data[8]+Longint($455a14ed),20);Round2(A,B,C,D,Data[13]+
Longint($a9e3e905),5);Round2(D,A,B,C,Data[2]+Longint($fcefa3f8),9);Round2(C,D,A,
B,Data[7]+Longint($676f02d9),14);Round2(B,C,D,A,Data[12]+Longint($8d2a4c8a),20);
Round3(A,B,C,D,Data[5]+Longint($fffa3942),4);Round3(D,A,B,C,Data[8]+Longint(
$8771f681),11);Round3(C,D,A,B,Data[11]+Longint($6d9d6122),16);Round3(B,C,D,A,
Data[14]+Longint($fde5380c),23);Round3(A,B,C,D,Data[1]+Longint($a4beea44),4);
Round3(D,A,B,C,Data[4]+Longint($4bdecfa9),11);Round3(C,D,A,B,Data[7]+Longint(
$f6bb4b60),16);Round3(B,C,D,A,Data[10]+Longint($bebfbc70),23);Round3(A,B,C,D,
Data[13]+Longint($289b7ec6),4);Round3(D,A,B,C,Data[0]+Longint($eaa127fa),11);
Round3(C,D,A,B,Data[3]+Longint($d4ef3085),16);Round3(B,C,D,A,Data[6]+Longint(
$04881d05),23);Round3(A,B,C,D,Data[9]+Longint($d9d4d039),4);Round3(D,A,B,C,Data[
12]+Longint($e6db99e5),11);Round3(C,D,A,B,Data[15]+Longint($1fa27cf8),16);Round3
(B,C,D,A,Data[2]+Longint($c4ac5665),23);Round4(A,B,C,D,Data[0]+Longint($f4292244
),6);Round4(D,A,B,C,Data[7]+Longint($432aff97),10);Round4(C,D,A,B,Data[14]+
Longint($ab9423a7),15);Round4(B,C,D,A,Data[5]+Longint($fc93a039),21);Round4(A,B,
C,D,Data[12]+Longint($655b59c3),6);Round4(D,A,B,C,Data[3]+Longint($8f0ccc92),10)
;Round4(C,D,A,B,Data[10]+Longint($ffeff47d),15);Round4(B,C,D,A,Data[1]+Longint(
$85845dd1),21);Round4(A,B,C,D,Data[8]+Longint($6fa87e4f),6);Round4(D,A,B,C,Data[
15]+Longint($fe2ce6e0),10);Round4(C,D,A,B,Data[6]+Longint($a3014314),15);Round4(
B,C,D,A,Data[13]+Longint($4e0811a1),21);Round4(A,B,C,D,Data[4]+Longint($f7537e82
),6);Round4(D,A,B,C,Data[11]+Longint($bd3af235),10);Round4(C,D,A,B,Data[2]+
Longint($2ad7d2bb),15);Round4(B,C,D,A,Data[9]+Longint($eb86d391),21);Inc(Buf[0],
A);Inc(Buf[1],B);Inc(Buf[2],C);Inc(Buf[3],D);end;procedure MD5UpdateBuffer(var
MD5Context:TMD5Context;Buffer:Pointer;BufSize:Integer);var BufTmp:PMD5Buffer;
BufPtr:PChar;Bytes:Word;begin New(BufTmp);BufPtr:=Buffer;try repeat if BufSize>
MaxBufSize then Bytes:=MaxBufSize else Bytes:=BufSize;Move(BufPtr^,BufTmp^,Bytes
);Inc(BufPtr,Bytes);Dec(BufSize,Bytes);if Bytes>0 then MD5Update(MD5Context,
BufTmp^,Bytes);until Bytes<MaxBufSize;finally Dispose(BufTmp);end;end;function
GetMD5(Buffer:Pointer;BufSize:Integer):string;var I:Integer;MD5Digest:TMD5Digest
;MD5Context:TMD5Context;begin for I:=0 to 15 do Byte(MD5Digest[I]):=I+1;MD5Init(
MD5Context);MD5UpdateBuffer(MD5Context,Buffer,BufSize);MD5Final(MD5Digest,
MD5Context);Result:='';for I:=0 to 15 do Result:=Result+IntToHex(Byte(MD5Digest[
I]),2);end;function StrMD5(Buffer:string):string;begin Result:=GetMD5(@Buffer[1]
,Length(Buffer));end;end.
unit MD5;
interface
uses
SysUtils;
type
TMD5Context = record
State: array[0..3] of Longint;
Count: array[0..1] of Longint;
case Integer of
0: (BufChar: array[0..63] of Byte);
1: (BufLong: array[0..15] of Longint);
end;
TMD5Digest = array[0..15] of Char;
procedure MD5Init(var MD5Context: TMD5Context);
procedure MD5Update(var MD5Context: TMD5Context; const Data; Len: Integer);
procedure MD5Transform(var Buf: array of
Longint; const Data: array of Longint);
procedure MD5UpdateBuffer(var MD5Context: TMD5Context;
Buffer: Pointer; BufSize: Integer);
procedure MD5Final(var Digest: TMD5Digest; var MD5Context: TMD5Context);
function GetMD5(Buffer: Pointer; BufSize: Integer): string;
function StrMD5(Buffer: string): string;
implementation
const
MaxBufSize = 16384;
type
PMD5Buffer = ^TMD5Buffer;
TMD5Buffer = array[0..(MaxBufSize - 1)] of Char;
procedure MD5Init(var MD5Context: TMD5Context);
begin
FillChar(MD5Context, SizeOf(TMD5Context), #0);
with MD5Context do
begin
State[0] := Longint($67452301);
State[1] := Longint($EFCDAB89);
State[2] := Longint($98BADCFE);
State[3] := Longint($10325476);
end
end;
procedure MD5Update(var MD5Context: TMD5Context; const Data; Len: Integer);
type
TByteArray = array[0..0] of Byte;
var
Index: Word;
T: Longint;
begin
with
MD5Context do
begin
T := Count[0];
Inc(Count[0], Longint(Len) shl 3);
if Count[0] < T then
Inc(Count[1]);
Inc(Count[1], Len shr 29);
T := (T shr 3) and $3F;
Index := 0;
if T <> 0 then
begin
Index := T;
T := 64 - T;
if Len < T then
begin
Move(Data, BufChar[Index], Len);
Exit;
end;
Move(Data, BufChar[Index], T);
MD5Transform(State, BufLong);
Dec(Len, T);
Index := T;
end;
while Len >= 64 do
begin
Move(TByteArray(Data)[Index], BufChar, 64);
MD5Transform(State, BufLong);
Inc(Index, 64);
Dec(Len, 64);
end;
Move(TByteArray(Data)[Index], BufChar, Len);
end
end;
procedure MD5Final(var Digest: TMD5Digest; var MD5Context: TMD5Context);
var
Cnt: Word;
P: Byte;
begin
with MD5Context do
begin
Cnt := (Count[0] shr 3) and $3F;
P := Cnt;
BufChar[P] := $80;
Inc(P);
Cnt := 64 - 1 - Cnt;
if Cnt < 8 then
begin
FillChar(BufChar[P], Cnt, #0);
MD5Transform(State, BufLong);
FillChar(BufChar, 56, #0);
end
else
FillChar(BufChar[P], Cnt - 8, #0);
BufLong[14] := Count[0];
BufLong[15] := Count[1];
MD5Transform(State, BufLong);
Move(State, Digest, 16)
end;
FillChar(MD5Context, SizeOf(TMD5Context), #0)
end;
procedure MD5Transform(var Buf: array of Longint;
const Data: array of Longint);
var
A, B, C, D: Longint;
procedure Round1(var W: Longint; X, Y, Z, Data: Longint; S: Byte);
begin
Inc(W, (Z xor (X and (Y xor Z))) + Data);
W := (W shl S) or (W shr (32 - S));
Inc(W, X)
end;
procedure Round2(var W: Longint; X, Y, Z, Data: Longint; S: Byte);
begin
Inc(W, (Y xor (Z and (X xor Y))) + Data);
W := (W shl S) or (W shr (32 - S));
Inc(W, X)
end;
procedure Round3(var W: Longint; X, Y, Z, Data: Longint; S: Byte);
begin
Inc(W, (X xor Y xor Z) + Data);
W := (W shl S) or (W shr (32 - S));
Inc(W, X)
end;
procedure Round4(var W: Longint; X, Y, Z, Data: Longint; S: Byte);
begin
Inc(W, (Y xor (X or not Z)) + Data);
W := (W shl S) or (W shr (32 - S));
Inc(W, X)
end;
begin
A := Buf[0];
B := Buf[1];
C := Buf[2];
D := Buf[3];
Round1(A, B, C, D, Data[0] + Longint($d76aa478), 7);
Round1(D, A, B, C, Data[1] + Longint($e8c7b756), 12);
Round1(C, D, A, B, Data[2] + Longint($242070db), 17);
Round1(B, C, D, A, Data[3] + Longint($c1bdceee), 22);
Round1(A, B, C, D, Data[4] + Longint($f57c0faf), 7);
Round1(D, A, B, C, Data[5] + Longint($4787c62a), 12);
Round1(C, D, A, B, Data[6] + Longint($a8304613), 17);
Round1(B, C, D, A, Data[7] + Longint($fd469501), 22);
Round1(A, B, C, D, Data[8] + Longint($698098d8), 7);
Round1(D, A, B, C, Data[9] + Longint($8b44f7af), 12);
Round1(C, D, A, B, Data[10] + Longint($ffff5bb1), 17);
Round1(B, C, D, A, Data[11] + Longint($895cd7be), 22);
Round1(A, B, C, D, Data[12] + Longint($6b901122), 7);
Round1(D, A, B, C, Data[13] + Longint($fd987193), 12);
Round1(C, D, A, B, Data[14] + Longint($a679438e), 17);
Round1(B, C, D, A, Data[15] + Longint($49b40821), 22);
Round2(A, B, C, D, Data[1] + Longint($f61e2562), 5);
Round2(D, A, B, C, Data[6] + Longint($c040b340), 9);
Round2(C, D, A, B, Data[11] + Longint($265e5a51), 14);
Round2(B, C, D, A, Data[0] + Longint($e9b6c7aa), 20);
Round2(A, B, C, D, Data[5] + Longint($d62f105d), 5);
Round2(D, A, B, C, Data[10] + Longint($02441453), 9);
Round2(C, D, A, B, Data[15] + Longint($d8a1e681), 14);
Round2(B, C, D, A, Data[4] + Longint($e7d3fbc8), 20);
Round2(A, B, C, D, Data[9] + Longint($21e1cde6), 5);
Round2(D, A, B, C, Data[14] + Longint($c33707d6), 9);
Round2(C, D, A, B, Data[3] + Longint($f4d50d87), 14);
Round2(B, C, D, A, Data[8] + Longint($455a14ed), 20);
Round2(A, B, C, D, Data[13] + Longint($a9e3e905), 5);
Round2(D, A, B, C, Data[2] + Longint($fcefa3f8), 9);
Round2(C, D, A, B, Data[7] + Longint($676f02d9), 14);
Round2(B, C, D, A, Data[12] + Longint($8d2a4c8a), 20);
Round3(A, B, C, D, Data[5] + Longint($fffa3942), 4);
Round3(D, A, B, C, Data[8] + Longint($8771f681), 11);
Round3(C, D, A, B, Data[11] + Longint($6d9d6122), 16);
Round3(B, C, D, A, Data[14] + Longint($fde5380c), 23);
Round3(A, B, C, D, Data[1] + Longint($a4beea44), 4);
Round3(D, A, B, C, Data[4] + Longint($4bdecfa9), 11);
Round3(C, D, A, B, Data[7] + Longint($f6bb4b60), 16);
Round3(B, C, D, A, Data[10] + Longint($bebfbc70), 23);
Round3(A, B, C, D, Data[13] + Longint($289b7ec6), 4);
Round3(D, A, B, C, Data[0] + Longint($eaa127fa), 11);
Round3(C, D, A, B, Data[3] + Longint($d4ef3085), 16);
Round3(B, C, D, A, Data[6] + Longint($04881d05), 23);
Round3(A, B, C, D, Data[9] + Longint($d9d4d039), 4);
Round3(D, A, B, C, Data[12] + Longint($e6db99e5), 11);
Round3(C, D, A, B, Data[15] + Longint($1fa27cf8), 16);
Round3(B, C, D, A, Data[2] + Longint($c4ac5665), 23);
Round4(A, B, C, D, Data[0] + Longint($f4292244), 6);
Round4(D, A, B, C, Data[7] + Longint($432aff97), 10);
Round4(C, D, A, B, Data[14] + Longint($ab9423a7), 15);
Round4(B, C, D, A, Data[5] + Longint($fc93a039), 21);
Round4(A, B, C, D, Data[12] + Longint($655b59c3), 6);
Round4(D, A, B, C, Data[3] + Longint($8f0ccc92), 10);
Round4(C, D, A, B, Data[10] + Longint($ffeff47d), 15);
Round4(B, C, D, A, Data[1] + Longint($85845dd1), 21);
Round4(A, B, C, D, Data[8] + Longint($6fa87e4f), 6);
Round4(D, A, B, C, Data[15] + Longint($fe2ce6e0), 10);
Round4(C, D, A, B, Data[6] + Longint($a3014314), 15);
Round4(B, C, D, A, Data[13] + Longint($4e0811a1), 21);
Round4(A, B, C, D, Data[4] + Longint($f7537e82), 6);
Round4(D, A, B, C, Data[11] + Longint($bd3af235), 10);
Round4(C, D, A, B, Data[2] + Longint($2ad7d2bb), 15);
Round4(B, C, D, A, Data[9] + Longint($eb86d391), 21);
Inc(Buf[0], A);
Inc(Buf[1], B);
Inc(Buf[2], C);
Inc(Buf[3], D);
end;
procedure MD5UpdateBuffer(var MD5Context: TMD5Context;
Buffer: Pointer; BufSize: Integer);
var
BufTmp: PMD5Buffer;
BufPtr: PChar;
Bytes: Word;
begin
New(BufTmp);
BufPtr := Buffer;
try
repeat
if BufSize > MaxBufSize then
Bytes := MaxBufSize
else
Bytes := BufSize;
Move(BufPtr^, BufTmp^, Bytes);
Inc(BufPtr, Bytes);
Dec(BufSize, Bytes);
if Bytes > 0 then
MD5Update(MD5Context, BufTmp^, Bytes);
until Bytes < MaxBufSize;
finally
Dispose(BufTmp);
end;
end;
function GetMD5(Buffer: Pointer; BufSize: Integer): string;
var
I: Integer;
MD5Digest: TMD5Digest;
MD5Context: TMD5Context;
begin
for I := 0 to 15 do
Byte(MD5Digest[I]) := I + 1;
MD5Init(MD5Context);
MD5UpdateBuffer(MD5Context, Buffer, BufSize);
MD5Final(MD5Digest, MD5Context);
Result := '';
for I := 0 to 15 do
Result := Result + IntToHex(Byte(MD5Digest[I]), 2);
end;
function StrMD5(Buffer: string): string;
begin
Result := GetMD5(@Buffer[1], Length(Buffer));
end;
end.
Click here to preview the Delphi Code Formatting Demo 2.
With FormatCode Delphi Code Formatters, you can format and transform any foreign Delphi source code to meet your preferred coding style or any common code convention in several seconds!
|