Ir para conteúdo
Fórum Script Brasil
  • 0

Invalid Point Operation


Paulo Nobre

Pergunta

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

  • 0

Talvez a resposta esteja no help. Procure por "ShareMem unit", para maiores detalhes, mas de ante-mão, quando você exporta funções ou procedimentos que recebem com parâmetros strings longas ...bla,bla... você deverá incluir esta unit na DLL (e deverá ser a primeira da cláusula uses) e no projeto que a utilizar. E neste caso ainda será necessário levar com o programa a DLL DELPHIMM.DLL (Delphi Memory Management).

Claro, se esta for a resposta ao seu problema.

[]s

Link para o comentário
Compartilhar em outros sites

  • 0

Perfeitamente Micheus e muito obrigado.

A resposta estava exatamente numa mensagem enorme que estava na minha cara.

Troquei String por SHORTSTRING e tudo se resolveu.

[]s

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...