Dll Delphi paramétré avec valeur de retour
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:
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:
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:
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 :
Citation:
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:
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..