DLL en Delphi lue par VBA [Résolu]

Signaler
Messages postés
82
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
4 mars 2008
-
Messages postés
82
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
4 mars 2008
-
Bonjour,

J'ai écrit une DLL en delphi. J'ai crée une autre application en Delphi pour accéder les fonctions de la DLL. ça marche bien. Maintenant il faut que j'appelle les fonctions de la DLL du VBA sur un fichier Excel. J'i bien declaré la fonction. ça ne marche pas. Vous savez pour quoi?

Voilà la fonction de la DLL sur Delphi:

function NU:string; stdcall;
var
  Buffer : array[0..255] of char;
  BufferSize : DWORD;
begin
  BufferSize := sizeOf(Buffer);
  GetUserName(@buffer, BufferSize);
  Result:=Buffer;
end;


 exports
 NU;

Voilà ma declaration sur le VBA d'Excel:
Declare Function NU Lib "C:\PrjDllDelphi\PrjDllDelphi.dll" () As String

Merci,
Otavio Reis

4 réponses

Messages postés
82
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
4 mars 2008

La réponse à ce problème est là:http://www.vbfrance.com/infomsg_DLL-DELPHI-LUE-VBA_923319.aspx?p=4

Otavio Reis
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
y'as des petits soucis avec le type string et les dll, prefere le type PChar ou ShortString

<hr size="2" width="100%" />Croc (click me)
Messages postés
814
Date d'inscription
vendredi 3 novembre 2000
Statut
Membre
Dernière intervention
30 juillet 2009
3
salut,

Aussi, renseigne toi sur les "convention d'appel" register,pascal,cdecl,stdcall,safecall,  il te faut utiliser la même en VB et dans ta DLL.

Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
Messages postés
82
Date d'inscription
jeudi 5 avril 2007
Statut
Membre
Dernière intervention
4 mars 2008

Salut! J'ai corrigé la fonction, mis ça ne marche toujours pas. J'ai deux questions:
- Pour quoi ma fonction ne marche pas?
- Delphi et C connaissent les pointeurs, VB ne connait pas. Il y a moyen de passer les valeurs par le biais d'un BSTR en Delphi?


function NU: pchar; StdCall;
Var
  Buffer : array[0..255] of char;
  BufferSize : DWORD;
begin
  BufferSize := sizeOf(Buffer);
  GetUserName(@buffer, BufferSize);
  GetMem(Result, BufferSize);
  StrCopy(Result, @Buffer);
end;

Otavio Reis