Pytanie : PChar parm DLL

I pisać DLL z funkcja który brać PChar parametr i wracać boolean. Gdy I dzwonić the funkcja od test app ono zawsze przychodzić zawsze z AV. I teraz zmniejszać ono swój podstawowy pod ale wciąż dostawać AV.

function myDLLFunction (szText: PChar): Boolowski; stdcall;
begin
Rezultat: = Prawdziwy;
end;

My próbny app wezwanie ono lubić to:

procedure TForm1.Button1Click (Sender: TObject);
var
  szText: PChar;
begin
  szText:= "Niektóre tekst";
jeżeli myDLLFunction (szText) then
showmessage ("SHOWMESSAGE ");
end;

I także zamieniać the PChar z szyk Przypalać ale mieć rezultat. I być nowy DLLs i PChar's. Być I coś głupi?

Odpowiedź : PChar parm DLL

Ty oznajmiać ono stosownie?
To pracować dla.
(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:

jednostka Unit1;

interfejs

uses
  Windows, Wiadomość, SysUtils, Wariant, Klasa, Grafika, Kontrola, Forma,
  Dialog, StdCtrls;

typ
  TForm1 = klasa (TForm)
    Button1: TButton;
    procedura Button1Click (Nadawca: TObject);
  intymny
    {Intymny deklaracja}
  społeczeństwo
    {Jawny deklaracja}
  końcówka;

var
  Form1: TForm1;

urzeczywistnienie

{$R *.dfm}

funkcja myDLLFunction (szText: PChar): Boolowski; stdcall; external "project2.dll";

procedura TForm1.Button1Click (Nadawca: TObject);
var
  szText: PChar;
zaczynać
  szText: = "Niektóre tekst";
  jeżeli myDLLFunction (szText) wtedy
    showmessage ("SHOWMESSAGE ");
końcówka;

końcówka.

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

Projekt 2, pojedynczy dpr:

biblioteka Project2;

{Znacząco notatka o DLL pamięć zarządzanie: ShareMem musieć the
  pierwszy jednostka w twój biblioteka USES klauzula I twój projekt (wybiórka
  Projektować-widok Źródło) UŻYWAĆ klauzula jeżeli twój DLL eksportować jakaś procedura lub
  funkcja który przechodzić sznurek jako parametr lub funkcja rezultat. To
  stosować wszystkie sznurek przechodzić do i z twój DLL--wyrównywać to to
  gniazdować w rejestr i klasa. ShareMem być the interfejs jednostka
  the BORLNDMM.DLL dzielić pamięć kierownik, che musieć rozmieszczać rozmieszczać
  z twój DLL. BORLNDMM.DLL, przechodzić smyczkowy informacja
  using PChar lub ShortString parametr. }

uses
  SysUtils,
  Klasa;

{$R *.res}

funkcja myDLLFunction (szText: PChar): Boolowski; stdcall;
zaczynać
   Rezultat: = Prawdziwy;
końcówka;

eksport
  myDLLFunction;

zaczynać

końcówka.
Inne rozwiązania  
 
programming4us programming4us