Bonjour,

Je ne savais pas trop si je devais poster ma demande dans le forum Windev ou Delphi.

J'ai fait des test sur les dll delphi 4.0 et pour cela j'ai fait un dll qui me retourne un integer

Voici le code de la dll

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
function Couleur():integer;
BEGIN { PRINCIPALE }
         Couleur := 10;
END; // FUNCTION Couleur
et lorsque je l'appelle de windev j'ai bien 10 en valeur de retour.

Voici le code de windev

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
HInstDllDelphi = ChargeDLL("borlndmm.dll")
hInstDll = ChargeDLL("FPEE1_DLL_AccesRehau.dll")
SI hInstDll = 0 ALORS
	Erreur(ErreurInfo())
SINON
	Trace(AppelDLL32("FPEE1_DLL_AccesRehau.dll","Couleur"))
FIN
Je voudrais faire une dll qui me retourne une chaine de caractère donc logiquement je fais ce qui suit..

Code de la DLL

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
function Couleur():ShortString;
BEGIN { PRINCIPALE }
         Couleur := 'Test';
END; // FUNCTION Couleur
Mais lorsque je lance mon appel dans windev j'ai le message suivant :

Erreur à la ligne 59 du traitement Clic sur BTN_Bouton2.
Vous avez appelé la fonction AppelDLL32.
La fonction 'Couleur' de la DLL FPEE1_DLL_AccesRehau.dll a provoqué une erreur d'exécution.

Informations techniques

Projet : FPEE1_EDITION_PROFILS_COMPLEMENTAIRES

Dump de l'erreur du module <WD140VM.DLL> <14.00Qa>.

- Appel WL :
Traitement de <FEN_Principale.BTN_Bouton2>, ligne <59>, thread <0>
Fonction <AppelDLL32>, n° de syntaxe <0>

- Niveau : erreur fatale (EL_FATAL)

- Code erreur : 2805

- Code erreur WD55 : 0

- Pas de code d'erreur système

- Pas de message d'erreur système

- Que s'est-il passé ?
La fonction 'Couleur' de la DLL FPEE1_DLL_AccesRehau.dll a provoqué une erreur d'exécution.

- Infos de debug :

Détails techniques :

Module : FPEE1_DLL_AccesRehau.dll
Adresse de base : 01790000
Erreur système : Access violation (GPF)
EIP = 017D2C27
OS : Windows XP ou .NET Service Pack 3(5.1.2600)
Registres :

EIP = 017D2C27 EBP = 0012ED48
EAX = EF82EF82 EBX = 0033BFD0
ECX = 017D2C18 EDX = 25FF3768
ESI = 017D2C30 EDI = EF82EF82

Pile des appels :

[FPEE1_DLL_AccesRehau.dll (01790000)] 017D2C27

Fonction (0,18)

- Infos attachées :
EIT_PILEWL :
Clic sur BTN_Bouton2 (FEN_Principale.BTN_Bouton2), ligne 59
EIT_COMPOSANT :

EIT_DATEHEURE : 30/06/2009 10:43:00

- Identifiant dans le .err : 2805


Assistance

- Vérifiez les paramètres passés
- Vérifiez que le type des paramètres passés correspond bien à ceux attendus
- Vérifiez que les valeurs nulles sont bien tolérées par la fonction appelée
- Vérifiez les appels précédents à d'autres fonctions de cette DLL (ils ont pu la mettre dans un état instable)
- Si le problème persiste, contactez le fournisseur de la DLL où se trouve la fonction.

Comment je dois faire pour avoir une valeur de retour de type chaine

Et après ça je vais faire une Dll paramétrer du type

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
function Couleur(NomCouleur : string):ShortString;
BEGIN { PRINCIPALE }
if NomCouleur  = 'BL'
then Couleur := 'BLANC'
else Couleur := 'Inconnu';
END; // FUNCTION Couleur
Pouvez vous m'aider??

Je vous remercie d'avance..