|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Candidat au titre de Membre du Club
![]() |
A l'aide d'une dll, j'ai créé une fonction en Delphi.
La déclaration comme fonction external se pase bien avec IB6. Mais lors de de l'utilisation la valeur retournée est toujours zéro. Voici le texte de la dll: Code :
Code :
Code :
SELECT CVANGLEDEC(monChamp) FROM ma TABLE; Le problème viendrait-il du fait que D6 n'a pas le type float ? Plusieurs essais ont été faits en modifiant les type ds la dll Merci pour la réponse. Message édité par Barbibulle :
|
||||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Et si tu faisais plutot ca comme déclaration ?
Code :
|
||
|
|
00
|
|
|
#3 |
|
Candidat au titre de Membre du Club
![]() |
Merci pour la réponse, mais ce n'est pas la solution.
Lacause doit se trouver vraisemblablement dans la construction de la dll. Car la réponse est toujours 0 ou un nombre du type ccccE-136 et cela pour toute les fonctions et quelque soit le type de la variable. ???? |
|
|
00
|
|
|
#4 | ||
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Code :
|
||
|
|
00
|
|
|
#5 |
|
Candidat au titre de Membre du Club
![]() |
Merci pour la proposition mais l'ajout de cdecl n'a rien modifié.
Avec stdcall (signalé dans InterBase Developer’s Guide), aucune amélioration non plus : la réponse est toujours du type cccccccE-316. ??? |
|
|
00
|
|
|
#6 | ||
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Code :
|
||
|
|
00
|
|
|
#7 |
|
Candidat au titre de Membre du Club
![]() |
et oui.......ca marche.
Grand merci pour l'aide. A noter que dans le Developer’sGuide p 74, il signale (pour c++) un type d'appel stdcall. Je vais maintenant travailler avec des chaîne de caractères. |
|
|
00
|
|
|
#8 | |
|
Membre Expert
![]() Frédéric Inscription : octobre 2002 Messages : 1 722 ![]() |
Oui tu as raison, mais j'ai vu dans un tuto qu'il fallait utiliser cdecl, n'ayant pas vu le paragraphe du guide du developpeur à se sujet, je ne me suis pas posé de question... (vue qu'avec cdecl ca fonctionnait)...
Du coup tu me fais poser des questions.... La seule différence entre StdCall et Cdecl c'est qu'avec Cdecl c'est l'appelant (donc interbase) qui doit nettoyer les paramètres stockées dans la pile une fois l'appel terminé. Citation:
Puisque tu as les mains dans le cambouis, peux tu faire un essai en mettant stdcall et venir nous dire si celà fonctionne correctement ? (A priori si tu es sous Win2000 ou NT ou XP ca devrait bien se passer) |
|
|
|
00
|
|
|
#9 |
|
Membre régulier
![]() Inscription : avril 2002 Messages : 70 ![]() |
J'écris tous mes dll pour mes UDF avec stdcall, je suis sous WinXP, et ça fonctionne bien.
Pour les chaînes de caractères, vas-tu utiliser string avec la librairie de delphi ou utiliser pchar ? |
|
|
00
|
|
|
#10 | ||||
|
Candidat au titre de Membre du Club
![]() |
1) l'appel stdcall fonctionne également (Win XP).
2) Pour les chaînes de caractères voici une solution: Code :
et la déclaration de la fonction: Code :
et encore merci pour l'aide. A+ |
||||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com