1 pièce(s) jointe(s)
Utilisation API COM VBA ->DELPHI
Bonjour à tous,
je crois bien que je patine lamentablement.
Je souhaite utiliser une API (Forexconnect) sous DELPHI, mais les exemples sont sous VBA.
En pièce jointe, un extract du mode d'utilisation de cette API.
J'ai installé le tlb, et les type sont correctement reconnus .
Les essais réalisés bloquent lors de la compilation pour des pbs de type. (en particulier Createoleobject ...)
Si l'un d'entre vous pouvait me donner des conseils pour transformer les lignes du paragraphe 3 de VBA vers DELPHI, ce serait top.
Merci de vos réponse et à bientôt
1 pièce(s) jointe(s)
Explications / éclaircissements
Tout d’abord, merci de m’avoir répondu et de m’aider à progresser.
0 – contexte
Jusqu’à présent, j’utilisais une interface com (O2GO) qui fonctionnait avec D7, mais qui n’est plus maintenue. Je dois donc passer à FOREXCONNECT API qui est fournie en (bin, bin-com, java, net). J’ai compris que je devais utiliser bin-com avec D7.
1- WRAPPER
Le fichier dispo pour es interfaces com est fxcore2.com.dll. Je l’ai ouvert avec delphi7 en tant que bibliothèque de type, et cela a généré un tlb (en pièce jointe). Je comprends que ce tlb est bien le wrapper.
2- Early binging et later binding
Pour moi O2GO travaillait en late binding car mes variables étaient déclarées en OLEVARIANT, et le compilateur ne me proposait rien après un point. De plus, certaines erreurs n’étaient pas détectées à la compilation, mais à l’exécution. Par contre Fxcore2 me semble travailler en early binding (déclarations typées et proposition lors de la compilation)
3- En pièces jointes, le tlb, les pas (pg test dans main_nicolas_extract.pas), un pdf expliquant comment utiliser l’API en VBA.
Cependant, reprise des principales infos ci-dessous pour te gagner du temps
Les commentaires O2GO est ce qui marchait avec O2GO en D7
Les commentaires VBA sont la syntaxe qu’ils proposent en VBA
Les lignes sans commentaires sont ce que j’ai fait maintenant en D7
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
| Uses
fxcore2_com_tlb
Var
// O2GO oCore: OleVariant;
// O2GO oTradeDesk: OleVariant;
// VBA Private fxTransport As fxcore2_com.Transport
// VBA Private WithEvents fxSession As fxcore2_com.Session
fxtransport:fxcore2_com_tlb.Transport;
fxsession:fxcore2_com_tlb.session;
Exécution
// O2GO oCore := CreateOleObject('Order2Go.Core');
// VBA Set fxTransport = CreateObject("fxcore2.com.Transport")
fxtransport:=createoleobject('fxcore2.com.transport');
// O2GO oTradeDesk := oCore.CreateTradeDesk('trader');
// VBA Set fxSession = fxTransport.createSession()
???
// O2GO oTradeDesk.Login(edUserName.Text, edPassWord.Text, edURL.Text, cbConnection.Text);
// VBA Call Session.login("userID", "password","http://www.fxcorporate.com/Hosts.jsp", "Demo")
fxsession.login(edUserName.Text, edPassWord.Text, edURL.Text, cbConnection.Text); |
Lors de la compil, l’erreur suivante m’est retournée :
Citation:
Code : fxtransport:=createoleobject('fxcore2.com.transport');
Compil : [Erreur] Main_nicolas_extract.pas(69): Types incompatibles : 'IDispatch' et 'ITransport'
J’espère avoir été clair …
Avec mes remerciements
:lol:
Corrections injectées mais ...
Bonjour,
je viens d'injecter/tester les corrections.
La compilation se déroule correctement, mais à l’exécution, j'ai un message d'erreur "classe non enregistrée" pour la ligne : fxtransport := fxcore2_com_tlb.CoTransport.Create();
Ai-je mal installé/ référencé fxcore2_com_tlb ?
Merci de ton aide