declaration de fonction, C++ vers delphi

declaration de fonction, C++ vers delphi - Delphi/Pascal - Programmation

Marsh Posté le 05-11-2003 à 11:17:51    

salut,
 
Un collegue a une appli qui accepte des plugins(une DLL).
Il faut que celle ci contienne une fonction exportée declarée commme ceci :

Code :
  1. extern "C" __declspec(dllexport) int ToFax  (std::list <CString *> Liste,
  2.            LPCSTR Directory,
  3.            LPCSTR FileOut,
  4.            LPCSTR Server,
  5.            LPCSTR User,
  6.            LPCSTR PassWord)


 
J'ai besoin d'ecrire un plugin en Delphi, mais je ne trouve pas comment declarer ma fonction ToFax, en fait je bloque sur le 1er argument.
 

Code :
  1. function ToFax (??????;repertoire:Pchar;FileOut:Pchar;secu1:Pchar;secu2:Pchar;secu3:Pchar):integer;cdecl;


 
vous avez une idée de comment déclarer l'équivalent d'un std::list <CString *> Liste en delphi ?
 
merci  :hello:  

Reply

Marsh Posté le 05-11-2003 à 11:17:51   

Reply

Marsh Posté le 05-11-2003 à 11:55:35    

Oui, en fesant du C++
 
PS : ce n'est pas un troll, je suis serieux la :)
 
Ta fonction doit être écrite en C++, quitte à convertir ce paramètre en un conteneur utilsiable pour Delphi.


Message édité par Kristoph le 05-11-2003 à 11:58:11
Reply

Marsh Posté le 05-11-2003 à 12:00:08    

je dois comprendre quoi la ?
 
-que l'appli de mon collegue n'est pas en c++ conforme ?
-que c'est impossible a faire en delphi ?
-que tu n'en sais rien mais que t'avais envie dire qqchose ?

Reply

Marsh Posté le 05-11-2003 à 12:01:14    

heuh ben la le mec a pas joué fin :/
CString, std::list c'est des machins c++....

Reply

Marsh Posté le 05-11-2003 à 12:03:18    

nico168 a écrit :

je dois comprendre quoi la ?
 
-que l'appli de mon collegue n'est pas en c++ conforme ?
-que c'est impossible a faire en delphi ?
-que tu n'en sais rien mais que t'avais envie dire qqchose ?


 
Il faut comprendre qu'à mon avis, il n'y a aucun moyen propre d'acceder à un std::list<T> en Delphi. D'ou le besoin de passer par une fonction C++ intermédiaire chargée de convertir cette liste en un type utilisable plus facilement par Delphi.

Reply

Marsh Posté le 05-11-2003 à 12:03:50    

ok, merci
 
donc la solution serait de faire une DLL en c++ qui va me transformer un "std::list <CString *>" en qqchose utilisable par delphi, et d'appeler la fonction en delphi avec ca ?
 
la solution que je vois est de passé un LPCSTR en c++ lu comme un pchar en delphi qui contiendrais le nom des fichiers genre "fic1:fic2:fic3"
 
je vais commencer à coder ca, si vous voyez des objections, n'hesitez pas


Message édité par nico168 le 05-11-2003 à 12:14:24
Reply

Marsh Posté le 05-11-2003 à 12:25:30    

nico168 a écrit :

ok, merci
 
donc la solution serait de faire une DLL en c++ qui va me transformer un "std::list <CString *>" en qqchose utilisable par delphi, et d'appeler la fonction en delphi avec ca ?
 
la solution que je vois est de passé un LPCSTR en c++ lu comme un pchar en delphi qui contiendrais le nom des fichiers genre "fic1:fic2:fic3"
 
je vais commencer à coder ca, si vous voyez des objections, n'hesitez pas


 
Ce n'est pas vraiment au plugin d'adapter l'application à son usage mais plustot l'inverse non ?
 
Que je sache, les versions récentes de Borland C++ permetent de compiler et lier ensemble à la fois du Delphi et du C++ ce qui te permetrais facilement de résoudre ton problème.

Reply

Marsh Posté le 05-11-2003 à 12:39:27    

Kristoph a écrit a écrit :

 
 
Ce n'est pas vraiment au plugin d'adapter l'application à son usage mais plustot l'inverse non ?




Certes mais pour ca il faudrais modifier l'appli, qui est utilisé en prod donc beaucoup de tests a refaire... ca serait trop long(== trop cher)
 

Kristoph a écrit a écrit :

 
Que je sache, les versions récentes de Borland C++ permetent de compiler et lier ensemble à la fois du Delphi et du C++ ce qui te permetrais facilement de résoudre ton problème.




oui, ca serait bien, mais on n'as pas de licence c++ builder  :cry: .

Reply

Marsh Posté le 05-11-2003 à 12:47:16    

nico168 a écrit :


Certes mais pour ca il faudrais modifier l'appli, qui est utilisé en prod donc beaucoup de tests a refaire... ca serait trop long(== trop cher)
 
 
oui, ca serait bien, mais on n'as pas de licence c++ builder  :cry: .


 
On est bien d'accord pour ne pas changer l'interface des plugins là ???
 
Enfin bon, si vous ne voulez pas payer une licence c++ builder, il ne te reste sans doute qu'à apprendre le C++ :D

Reply

Marsh Posté le 05-11-2003 à 13:58:41    

CString c'est Visual C++. Peut-être que C++Builder le supporte, mais c'est pas sûr.
Pour convertir std::list de CString en un format connu de Delphi je dirais que le plus simple est d'utiliser C++Builder pour en faire un TStringList (connu de Delphi & C++Builder).


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed