Fråga : Passera PChar parm till DLL

Jag har skriftligt en DLL med en fungera som tar en PChar parameter och går ett boolean tillbaka. När I-appellen fungera från en testa app det kommer alltid upp med en AV. Jag har nu förminskat den till dess, mest grundläggande som nedanfört men stilla få myDLLFunctionen för AV.

function (szText: PChar): Boolean; stdcall; resultat för
begin
: = True;
end;

My testar app-appeller det något liknande detta:

procedure TForm1.Button1Click (Sender: TObject);
var
  szText: PChar;
begin
  szText:= ”någon text”;
om showmessage för then
för myDLLFunction (szText) (”REKO”);
end;

I har också bytt ut den kallande PCharen med samling av rödingen men samma resultat. Förmiddag som I är ny till DLLs och PChars. Förmiddag mig som gör något som är dum?
" klar "

Svar : Passera PChar parm till DLL

Du förklarar det riktigt?
Detta fungerar för mig.
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:

enhet Unit1;

ha kontakt

bruk
  Windows meddelanden, SysUtils, Variants, klassificerar, diagram, kontrollerar, bildar,
  Dialoger StdCtrls;

typ
  TForm1 = klassificerar (TForm)
    Button1: TButton;
    tillvägagångssätt Button1Click (avsändare: TObject);
  privat
    {Privata förklaringar}
  offentligt
    {Offentliga förklaringar}
  avsluta;

var
  Form1: TForm1;

genomförande

{$R *.dfm}

fungera myDLLFunctionen (szText: PChar): Boolean; stdcall; utsida ”project2.dll”;

tillvägagångssätt TForm1.Button1Click (avsändare: TObject);
var
  szText: PChar;
börja
  szText: = ”någon text”;
  om myDLLFunction (szText) därefter
    showmessage (”REKO”);
avsluta;

avsluta.

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

Projektera 2, singeldpr:

arkiv Project2;

{Viktigt notera om DLL-minnesledning: ShareMem måste vara
  första enhet i ditt den valda arkivs BRUKSsatsen OCH ditt projekt (
  Projektera-Beskåda källan) ANVÄNDER sats, om din DLL exporterar några tillvägagångssätt eller
  fungerar som passerar stränger som parametrar eller fungerar resultat. Detta
  applicerar till alla stränger passerat till och från din DLL--även de det
  bygga bo i rekord och klassificerar. ShareMem är ha kontaktenheten till
  BORLNDMM.DLLEN delade minneschefen, som måste utplaceras along
  med din DLL. Passera stränger information att undvika att använda BORLNDMM.DLL
  using PChar eller ShortString parametrar. }

bruk
  SysUtils,
  Klassificerar;

{$R *.res}

fungera myDLLFunctionen (szText: PChar): Boolean; stdcall;
börja
   Resultat: = True;
avsluta;

exporter
  myDLLFunction;

börja

avsluta.
Andra lösningar  
 
programming4us programming4us