Cuestión : Paso del parm de PChar al DLL

He escrito un DLL con una función que toma un parámetro de PChar y vuelve un boleano. Cuando llamo la función de una prueba app sube siempre con un sistema de pesos americano. Ahora la he reducido a su más básico como debajo pero todavía consigo el myDLLFunction de AV.

function (szText: PChar): Boleano; stdcall; resultado del
begin
: = verdad;
end; las llamadas del app de la prueba del

My tiene gusto de esto:

procedure TForm1.Button1Click (Sender: TObject);
var
  szText: PChar;
begin
  szText:= “un poco de texto”;
si showmessage del then
del myDLLFunction (szText) (“ACEPTABLE ");
end; el

I también ha substituido el PChar de llamada por el arsenal del carbón de leña pero del mismo resultado. Soy nuevo a DLLs y a PChar. ¿Soy que hace algo estúpido?
class= del

Respuesta : Paso del parm de PChar al DLL

¿Usted lo está declarando correctamente?
Esto trabaja para mí.
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:

unidad Unit1;

interfaz

aplicaciones
  Windows, mensajes, SysUtils, variantes, clases, gráficos, controles, formas,
  Diálogos, StdCtrls;

tipo
  TForm1 = clase (TForm)
    Button1: TButton;
    procedimiento Button1Click (remitente: TObject);
  privado
    {Declaraciones privadas}
  público
    {Declaraciones públicas}
  extremo;

var
  Form1: TForm1;

puesta en práctica

{$R *.dfm}

myDLLFunction de la función (szText: PChar): Boleano; stdcall; external “project2.dll”;

procedimiento TForm1.Button1Click (remitente: TObject);
var
  szText: PChar;
comenzar
  szText: = “un poco de texto”;
  si myDLLFunction (szText) entonces
    showmessage (“ACEPTABLE ");
extremo;

extremo.

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

Proyecto 2, solo dpr:

biblioteca Project2;

{Nota importante sobre la gerencia de memoria del DLL: ShareMem debe ser
  primera unidad en la cláusula de las APLICACIONES de su biblioteca Y su proyecto (selectos
  La fuente de la Proyecto-Vista) UTILIZA cláusula si su DLL exporta cualesquiera procedimientos o
  funciones que pasan secuencias como parámetros o resultados de la función. Esto
  se aplica a todas las secuencias pasajeras a y desde su DLL--incluso ésos eso
  se jerarquizan en expedientes y clases. ShareMem es la unidad de interfaz a
  el encargado de la memoria compartida de BORLNDMM.DLL, que debe ser desplegado adelante
  con su DLL. Para evitar usar BORLNDMM.DLL, pasar la información de la secuencia
  usar los parámetros de PChar o de ShortString. }

aplicaciones
  SysUtils,
  Clases;

{$R *.res}

myDLLFunction de la función (szText: PChar): Boleano; stdcall;
comenzar
   Resultado: = verdad;
extremo;

exportaciones
  myDLLFunction;

comenzar

extremo.
Otras soluciones  
 
programming4us programming4us