Estava testando uma dica de uso de dll e deu tudo certo.
Na dica os parâmetros eram todos inteiros e tratavam de uma chamada a uma função para verificar uma senha.
Resolvi modificar a função da dll para que a senha fosse alfanumérica.
Foi aí que a mensagem de erro apareceu.
Vejam se vocês podem me ajudar.
Na dll tenho o seguinte
library SENHA;
uses
SysUtils,
Classes;
function Chave(Pkey : String): String; export; // Criando a função
begin
PKey := 'pn012345'; //Nossa senha de exemplo
Chave := Pkey;
end;
exports
Chave;
{$R *.res}
begin
end.
No form que fará a chamada a dll(Senha.dll, que se encontra no local certo, ou seja, no mesmo diretório do programa), tenho um Edit e button.
O usuário digita a senha(alfanumérica) e clica no button.
Vejam o código completo da unit do form...
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
Function Chave(Pkey : 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('Senha válida!')
else
ShowMessage('Senha inválida!');
end;
end.
O que está acontecendo...
digito a senha correta pn012345, clico no button a mensagem aparece, ou seja,
'Senha válida! e depois que clico no ok do showmwssage aparece a mensagem de erro
INVALID POINT OPERATION
Como havia mencionado caso faça a adaptação para que a senha seja do tipo integer aí não aparece a mensagem de erro.
Pergunta
Paulo Nobre
Estava testando uma dica de uso de dll e deu tudo certo.
Na dica os parâmetros eram todos inteiros e tratavam de uma chamada a uma função para verificar uma senha.
Resolvi modificar a função da dll para que a senha fosse alfanumérica.
Foi aí que a mensagem de erro apareceu.
Vejam se vocês podem me ajudar.
Na dll tenho o seguinte
library SENHA; uses SysUtils, Classes; function Chave(Pkey : String): String; export; // Criando a função begin PKey := 'pn012345'; //Nossa senha de exemplo Chave := Pkey; end; exports Chave; {$R *.res} begin end.No form que fará a chamada a dll(Senha.dll, que se encontra no local certo, ou seja, no mesmo diretório do programa), tenho um Edit e button. O usuário digita a senha(alfanumérica) e clica no button. Vejam o código completo da unit do form...unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation Function Chave(Pkey : 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('Senha válida!') else ShowMessage('Senha inválida!'); end; end.O que está acontecendo...
digito a senha correta pn012345, clico no button a mensagem aparece, ou seja,
'Senha válida! e depois que clico no ok do showmwssage aparece a mensagem de erro
INVALID POINT OPERATION
Como havia mencionado caso faça a adaptação para que a senha seja do tipo integer aí não aparece a mensagem de erro.
Alguém pode ajudar?
Link para o comentário
Compartilhar em outros sites
4 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.