library D66;
{$R *.res}
function D66Koduj(S: String): String;
var
I:integer;
Tmp: String[255];
begin
if Length(S)=0 then exit;
for I:=1 to Length(S) do
begin
Tmp[i]:=char(ord(S[i])+66);
end;
result:=Tmp;
end;
function D66Dekoduj(S: String): String;
var
I:integer;
Tmp: String[255];
begin
if Length(S)=0 then exit;
for I:=1 to Length(S) do
begin
Tmp[i]:=char(ord(S[i])-66);
end;
result:=Tmp;
end;
exports D66Koduj, D66Dekoduj;
end.
Po odwolaniu sie do funkcji 'D66Koduj' mniej wiecej tak:
Unit Unit1
...
...
const
libname = 'd66.dll';
function D66Koduj(S:String):String;external libname;
function D66Dekoduj(S:String):String;external libname;
procedure TForm1.btnKodujClick(Sender: TObject);
begin
edtdekod.Text:=d66koduj(edtkod.Text);
edtKod.text:='';
btnKoduj.Enabled:=not btnkoduj.Enabled;
btnDekoduj.Enabled:=not btndekoduj.Enabled;
end;
procedure TForm1.btnDekodujClick(Sender: TObject);
begin
edtkod.Text:=d66dekoduj(edtdekod.Text);
edtDekod.Text:='';
btnKoduj.Enabled:=not btnkoduj.Enabled;
btnDekoduj.Enabled:=not btndekoduj.Enabled;
end;
wystepuje blad "Invalid pointer operation". Zdarza się jednak że funkcja jest wykonywana.