A Dll:
CODE
Library Serial;
function Chave(Senha : integer): integer; export;
begin
Senha := 123;
Chave := Senha;
end;
exports
Chave;
begin
end.
function Chave(Senha : integer): integer; export;
begin
Senha := 123;
Chave := Senha;
end;
exports
Chave;
begin
end.
Para usar:
CODE
Function Chave(Senha : Integer):Integer; external 'Serial.dll';
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
N, C : Integer;
begin
N := StrToInt(Edit1.Text);
C := Chave(StrToInt(Edit1.Text));
if N = C then
ShowMessage('Serial válido, você acertou!')
else
ShowMessage('Serial inválido!');
edit1.Clear;
edit1.SetFocus;
end;
end.
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
N, C : Integer;
begin
N := StrToInt(Edit1.Text);
C := Chave(StrToInt(Edit1.Text));
if N = C then
ShowMessage('Serial válido, você acertou!')
else
ShowMessage('Serial inválido!');
edit1.Clear;
edit1.SetFocus;
end;
end.
Desejo colocar uma palavra no lugar dos números, funciona e depois dá erro.
Fiz assim:
A Dll alterada por mim:
CODE
Library Senha;
function Chave(Senha : string):string; export;
begin
Senha := 'Delphi';
Chave := Senha;
end;
exports
Chave;
begin
end.
function Chave(Senha : string):string; export;
begin
Senha := 'Delphi';
Chave := Senha;
end;
exports
Chave;
begin
end.
Para usar (se funcionasse é claro)
CODE
Function Chave(Senha : string):string; external 'Senha.dll';
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
N, C : string;
begin
N :=Edit1.Text;
C := Chave(Edit1.Text);
if N = C then
ShowMessage('Serial válido, você acertou!')
else
ShowMessage('Serial inválido!');
edit1.Clear;
edit1.SetFocus;
end;
end.
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
N, C : string;
begin
N :=Edit1.Text;
C := Chave(Edit1.Text);
if N = C then
ShowMessage('Serial válido, você acertou!')
else
ShowMessage('Serial inválido!');
edit1.Clear;
edit1.SetFocus;
end;
end.
Depois do clique no botão da erro com essa mensagem:
Project1.exe raised exception class EinvalidPointer with message ‘Invalid pointer operation’. Process stopped. Use Step or Run to continue.
Pergunto:
Como onde está o meu erro?
Grato a todos pela atenção