📄 unit1.~pas
字号:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, IniFiles;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Button2: TButton;
Button3: TButton;
OpenDialog1: TOpenDialog;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
function Base64Encode(const s: string): string;
function Base64Decode(const s: string): string;
implementation
uses md5;
{$R *.dfm}
function Base64Encode(const s: string): string;
var
i, c1, c2, c3: Integer;
m, n: Integer;
const
Base64: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
begin
Result := '';
m := 1;
n := 0;
for i := 1 to (Length(s) div 3) do
begin
c1 := Ord(s[m]);
c2 := Ord(s[m + 1]);
c3 := Ord(s[m + 2]);
m := m + 3;
Result := Result + base64[(c1 shr 2) and $3F + 1];
Result := Result + base64[((c1 shl 4) and $30) or ((c2 shr 4) and $0F) + 1];
Result := Result + base64[((c2 shl 2) and $3C) or ((c3 shr 6) and $03) + 1];
Result := Result + base64[c3 and $3F + 1];
n := n + 4;
if (n = 76) then
begin
n := 0;
Result := Result + #13#10;
end;
end;
if (Length(s) mod 3) = 1 then
begin
c1 := Ord(s[m]);
Result := Result + base64[(c1 shr 2) and $3F + 1];
Result := Result + base64[(c1 shl 4) and $30 + 1];
Result := Result + '=';
Result := Result + '=';
end;
if (Length(s) mod 3) = 2 then
begin
c1 := Ord(s[m]);
c2 := Ord(s[m + 1]);
Result := Result + base64[(c1 shr 2) and $3F + 1];
Result := Result + base64[((c1 shl 4) and $30) or ((c2 shr 4) and $0F) + 1];
Result := Result + base64[(c2 shl 2) and $3C + 1];
Result := Result + '=';
end;
end;
function Base64Decode(const s: string): string;
var
i, m, n: Integer;
c1, c2, c3, c4: Integer;
const
Base64: string = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
begin
Result := '';
n := 1;
m := Length(s);
if s[m] = '=' then m := m - 1;
if s[m] = '=' then m := m - 1;
for i := 1 to m div 4 do
begin
c1 := Pos(s[n], Base64) - 1;
c2 := Pos(s[n + 1], Base64) - 1;
c3 := Pos(s[n + 2], Base64) - 1;
c4 := Pos(s[n + 3], Base64) - 1;
n := n + 4;
Result := Result + Chr(((c1 shl 2) and $FC) or ((c2 shr 4) and $3));
Result := Result + Chr(((c2 shl 4) and $F0) or ((c3 shr 2) and $0F));
Result := Result + Chr(((c3 shl 6) and $C0) or c4);
end;
if m mod 4 = 2 then
begin
c1 := Pos(s[n], Base64) - 1;
c2 := Pos(s[n + 1], Base64) - 1;
Result := Result + Chr(((c1 shl 2) and $FC) or ((c2 shr 4) and $3));
end;
if m mod 4 = 3 then
begin
c1 := Pos(s[n], Base64) - 1;
c2 := Pos(s[n + 1], Base64) - 1;
c3 := Pos(s[n + 2], Base64) - 1;
Result := Result + Chr(((c1 shl 2) and $FC) or ((c2 shr 4) and $3));
Result := Result + Chr(((c2 shl 4) and $F0) or ((c3 shr 2) and $0F));
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Edit2.Text := Base64Encode(Edit1.Text);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
Edit2.Text := Base64Decode(Edit1.Text);
end;
procedure TForm1.Button3Click(Sender: TObject);
var
ini: TiniFile;
begin
if OpenDialog1.Execute then
begin
ini := TIniFile.Create(OpenDialog1.FileName);
Memo1.Lines.Add(Base64Decode(ini.ReadString('CONFIG', 'a', '')));
Memo1.Lines.Add(Base64Decode(ini.ReadString('CONFIG', 'b', '')));
Memo1.Lines.Add(Base64Decode(ini.ReadString('CONFIG', 'c', '')));
Memo1.Lines.Add(Base64Decode(ini.ReadString('CONFIG', 'd', '')));
Memo1.Lines.Add(Base64Decode(ini.ReadString('CONFIG', 'e', '')));
Memo1.Lines.Add(Base64Decode(ini.ReadString('CONFIG', 'f', '')));
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -