Pergunta : Passando o parm de PChar ao DLL

Eu escrevi um DLL com uma função que tomasse um parâmetro de PChar e retornasse um bôoleano. Quando eu chamo a função de um teste app vem sempre acima com um avoirdupois. Eu tenho-o reduzido agora ao seu mais básico como abaixo mas ainda começ o myDLLFunction de AV.

function (szText: PChar): Bôoleano; stdcall; resultado do
begin
: = retificar;
end; chamadas do app do teste do

My gosta deste:

procedure TForm1.Button1Click (Sender: TObject);
var
  szText: PChar;
begin
  szText:= “algum texto”;
se showmessage do then
do myDLLFunction (szText) (“APROVADO ");
end; o

I igualmente substituiu o PChar de chamada com a disposição de carvão animal mas do mesmo resultado. Eu sou novo a DLLs e a PChar. Sou eu que faço algo estúpido?
class= do

Resposta : Passando o parm de PChar ao DLL

Você está declarando-o corretamente?
Isto trabalha para mim.
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
Project1, Unit1:

unidade Unit1;

relação

usos
  Windows, mensagens, SysUtils, variações, classes, gráficos, controles, formulários,
  Diálogos, StdCtrls;

tipo
  TForm1 = classe (TForm)
    Button1: TButton;
    procedimento Button1Click (remetente: TObject);
  confidencial
    {Declarações confidenciais}
  público
    {Declarações públicas}
  extremidade;

var
  Form1: TForm1;

execução

{$R *.dfm}

myDLLFunction da função (szText: PChar): Bôoleano; stdcall; external “project2.dll”;

procedimento TForm1.Button1Click (remetente: TObject);
var
  szText: PChar;
começar
  szText: = “algum texto”;
  se myDLLFunction (szText) então
    showmessage (“APROVADO ");
extremidade;

extremidade.

=======================

Projeto 2, único dpr:

biblioteca Project2;

{Nota importante sobre a gerência de memória do DLL: ShareMem deve ser
  primeira unidade na cláusula dos USOS da sua biblioteca E no seu projeto (seletos
  A fonte da Projeto-Vista) USA a cláusula se seu DLL exporta quaisquer procedimentos ou
  funções que passam cordas como parâmetros ou resultados da função. Isto
  aplica-se a todas as cordas passadas a e de seu DLL--mesmo aqueles isso
  são aninhados nos registros e nas classes. ShareMem é a unidade de relação a
  o gerente da memória compartilhada de BORLNDMM.DLL, que deve ser desdobrado longitudinalmente
  com seu DLL. Para evitar usar BORLNDMM.DLL, passar a informação da corda
  using parâmetros de PChar ou de ShortString. }

usos
  SysUtils,
  Classes;

{$R *.res}

myDLLFunction da função (szText: PChar): Bôoleano; stdcall;
começar
   Resultado: = retificar;
extremidade;

exportações
  myDLLFunction;

começar

extremidade.
Outras soluções  
 
programming4us programming4us