IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++/CLI Discussion :

delphi 7 -> .NET


Sujet :

C++/CLI

  1. #1
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 486
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 486
    Par d�faut delphi 7 -> .NET
    Bonjour,

    Actuellement en charge d'int�grer les fonctions d'une dll cr�e sous Delphi dans le monde .NET, je sollicite votre avis pour avoir la strat�gie la plus efficace.

    L'existant :
    - Dll exposant une interface (delphi) non tagg�e stdcall (utilisant des types complexes et classes en param)
    - Acc�s au code source de tous les �l�ments
    - Pas le droit de toucher l'existant (seulement des sur-couches)

    Faut-il opter pour :
    -une int�gration directe dans une classe C# avec un type d'appel fastcall ?
    -une int�gration avec un wrapper C++/CLI par la suite utilis� en C# ?
    -wrapper natif exposant du stdcall puis wrapper C# ?
    -wrapper natif orient� COM puis int�gration .NET ?

    Je pense me souvenir que le marshalling ne va pas trop appr�cier les types delphi genre WideString... des recommandations ?

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 486
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 486
    Par d�faut Mapping WideString
    Re,

    Je continue � fouiller mais je suis tomb� sur un os.

    C�t� Delphi :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    procedure TestDOCManager4(Msg : WideString ; out Msg2 : WideString);stdcall;
     
    procedure TestDOCManager4(Msg : WideString ; out Msg2 : WideString);
    begin
      ShowMessage(Msg);
      Msg2 := Msg + ' coucou de TestDOCManager4';
    end;
    C�t� .NET :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    DllImport("Project1.dll",CallingConvention=CallingConvention.StdCall,CharSet=CharSet.Auto,SetLastError=true]
    public static extern void TestDOCManager4(string msg, out StringBuilder msg2);
    En jouant sur la CallingConvention, lorsque l'on est sur Ansi, rien ne passe. Lorsque l'on est sur Unicode, seule la moiti� des caract�res passe. WideString est compos� de plusieurs WideChar qui codent un caract�re sur 2 octets.

    Des suggestions ?

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    1 486
    D�tails du profil
    Informations personnelles :
    �ge : 39
    Localisation : France, H�rault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 486
    Par d�faut
    Changement de strat�gie. Suite et fin de l'�pisode portage.

    Je me suis cr�� un petit objet COM comme un grand sous delphi, il sert de wrapper � la lib que je veux porter en .net.

    Pwned le WideString :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    FGetManager est mon pointeur de procédure qui permet de charger mon FManager...
     
    function TComManager.GetType(DOCID: PWideChar; out Type_: PWideChar): WordBool;
    var
      retour : WideString;
    begin
        Result := False;
        try
          if Assigned( FGetManager ) then
            Result := FManager.GetType(DOCID, retour);
          if Result and (Length(retour)<>0) then
          begin
            Type_ := PWideChar(LocalAlloc(LPTR, (Length(retour)+1)*SizeOf(WideChar)));
            CopyMemory(Type_, PWideChar(retour), (Length(retour)+1)*SizeOf(WideChar));
          end
          else
          begin
            Type_ := nil;
          end;
        except
          on e:Exception do ShowMessage('Erreur GetType : '+e.Message);
        end;
     
    end;

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. Choix d'un langage : passer de VB6 à quoi ? Windev, Delphi ou VB.net ?
    Par New dans le forum Langages de programmation
    R�ponses: 8
    Dernier message: 05/10/2006, 21h45
  2. [Debuter] Delphi avec Visual .NET 2005
    Par kacedda dans le forum Delphi
    R�ponses: 4
    Dernier message: 24/05/2006, 13h37
  3. Passage de Delphi WIN32 au .NET
    Par aityahia dans le forum EDI
    R�ponses: 9
    Dernier message: 04/04/2006, 02h54
  4. Delphi 2006 - CE.net - Win32
    Par p-f.philippe dans le forum Delphi .NET
    R�ponses: 6
    Dernier message: 10/01/2006, 18h57
  5. [TPageColtrol][Delphi 2005 VCL.NET] couleurs onglets
    Par Harry dans le forum Composants VCL
    R�ponses: 6
    Dernier message: 27/09/2005, 18h41

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo