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

Dll Delphi - Pchar


ariana

Pergunta

Olá

Alguém poderia me ajudar,

preciso fazer uma dll delphi utilizando uma variável pchar...De prerefencia que ela passe um valor e depois retorne, e um programa chamar essa dll....

Alguém poderia me auxliar neste procedimento, por favor?

Obrigada,

Ariana =]

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

Olá ariana, você pode fazer assim:

dll

library Minha_dll;
uses
  ShareMem, // <== coloque na primeira linha do uses
  SysUtils,
  Classes;
{$R *.res}
function Funcao_na_dll(Entrada:PChar):PChar;
var s:String;
begin
  s := 'A Funcao_na_dll recebeu: ' + Entrada;
  Result := AllocMem(Length(s)+1);
  Move(s[1], Result^, Length(s));
end;
  exports Funcao_na_dll;
begin
end.
Aplicação .dpr
program Teste_dll;

uses
  ShareMem, // <== coloque na primeira linha do uses
  Forms,
  uTeste_dll in 'uTeste_dll.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
Aplicação .pas
unit uTeste_dll;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
type TFuncao_na_dll = function (Entrada:PChar):PChar;
var HLib:DWord; Funcao_na_dll:TFuncao_na_dll; Result_na_dll:PChar;
begin
  HLib := LoadLibrary(PChar('Caminho_da_dll\Minha_dll.dll'));
  if Hlib = 0 then
    Exit;
  Funcao_na_dll := GetProcAddress(HLib, 'Funcao_na_dll');
  if @Funcao_na_dll <> nil then
  begin
    Result_na_dll := Funcao_na_dll(PChar(Edit1.Text));
    ShowMessage(Result_na_dll);
    FreeMem(Result_na_dll);
  end;
  FreeLibrary(HLib);  
end;
end.

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,3k
    • Posts
      652,2k
×
×
  • Criar Novo...