Question : Dépassement du parm de PChar au DLL

J'ai écrit un DLL avec une fonction qui prend un paramètre de PChar et renvoie un booléen. Quand j'appelle la fonction d'un essai $$etAPP il toujours est soulevé avec un poids du commerce. Je l'ai maintenant ramené à son plus fondamental comme ci-dessous mais obtiens toujours le myDLLFunction d'AV.

function (szText : PChar) : Booléen ; stdcall ; résultat du
begin
: = rectifier ;
end ; des appels de l'essai $$etAPP du

My il aiment ceci :

procedure TForm1.Button1Click (Sender : TObject) ;
var
  szText: PChar ;
begin
  szText:= un « certain texte » ;
si showmessage du then
de myDLLFunction (szText) (« CORRECT ") ;
end ; le

I ont également remplacé le PChar appelant par le choix du char mais du même résultat. Je suis nouveau à DLLs et à PChar. Est-ce que je faisant quelque chose suis stupide ?
class= de

Réponse : Dépassement du parm de PChar au DLL

Le déclarez-vous correctement ?
Ceci fonctionne pour moi.
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 :

unité Unit1 ;

interface

utilisations
  Windows, messages, SysUtils, variantes, classes, graphiques, commandes, formes,
  Dialogues, StdCtrls ;

type
  TForm1 = classe (TForm)
    Button1 : TButton ;
    procédé Button1Click (expéditeur : TObject) ;
  privé
    {Déclarations privées}
  public
    {Déclarations publiques}
  extrémité ;

variété
  Form1 : TForm1 ;

exécution

{$R *.dfm}

myDLLFunction de fonction (szText : PChar) : Booléen ; stdcall ; external « project2.dll » ;

procédé TForm1.Button1Click (expéditeur : TObject) ;
variété
  szText : PChar ;
commencer
  szText : = un « certain texte » ;
  si myDLLFunction (szText) puis
    showmessage (« CORRECT ") ;
extrémité ;

extrémité.

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

Projet 2, dpr simple :

bibliothèque Project2 ;

{Note importante au sujet de gestion de la mémoire principale de DLL : ShareMem doit être
  première unité dans la clause des UTILISATIONS de votre bibliothèque ET votre projet (choisis
  La source de Projet-Vue) EMPLOIE la clause si votre DLL exporte n'importe quelles procédures ou
  fonctions qui passent des cordes comme paramètres ou résultats de fonction. Ceci
  s'applique à toutes les cordes passées à et de votre DLL--même ceux cela
  sont nichés dans les disques et les classes. ShareMem est l'unité d'interface à
  le directeur de mémoire partagée de BORLNDMM.DLL, qui doit être déployé le long
  avec votre DLL. Pour éviter d'employer BORLNDMM.DLL, passer l'information de corde
  using des paramètres de PChar ou de ShortString. }

utilisations
  SysUtils,
  Classes ;

{$R *.res}

myDLLFunction de fonction (szText : PChar) : Booléen ; stdcall ;
commencer
   Résultat : = rectifier ;
extrémité ;

exportations
  myDLLFunction ;

commencer

extrémité.
Autres solutions  
  •  MS Excel 2007 et pdf - l'exportation vers le pdf prend de longues heures !
  •  Dans le Perl, comment j'ajoute une valeur à la liste, puis le contrôle pour voir si la valeur existent avant d'ajouter une nouvelle valeur
  •  Comment fais j'initialiser de la HP BL460c G6 de san et de la HP XP 240000
  •  Comment fais j'employer une clef de permis de volume sur un ordinateur de HP avec du CD de restauration
  •  Emplacement primaire de deux SCCM dans l'annuaire actif
  •  L'initiateur et la HP D2D de l'iSCSI R2 du serveur 2008 de Windows GERCENT l'issue
  •  Stocker le dossier dans le mysql using connector.net et le champ de goutte
  •  Carte vidéo d'USB - bit 32 sur le matériel travaillant au niveau du bit 64 ?
  •  asp.net que j'essaye de convertir une forme de HTML en forme d'aspx ou ? ce qui jamais. Aide du besoin sur la façon dont à à elle.
  •  Winzip 12 issues de secours du travail ?
  •  
    programming4us programming4us