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# Discussion :

Interrop VB6 vers C#


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut Interrop VB6 vers C#
    Bonjour je cherche un peu d'aide d'un spécialiste VB pour traduire un code VB6 faisant appel a une DLL C++ vers du code Csharp

    Voici un petit extrait du code VB

    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
    Attribute VB_Name = "PCS7LW32"
     
    Global Const S7_E_NOERR = 0               '/* alles OK */
    Global Const S7_E_TIMEOUT = -1            '/* Zeitberlauf */
     
    Type S7
      Com      As Integer
      bInit    As Byte
     
      DummyB1   As Byte
     
      DummyB2   As Integer
      Err      As Integer
      Internal(1 To 1600) As Byte
    End Type
     
     
    Declare Function S7Init& Lib "PCS7LW32.dll" (pS7 As S7, ByVal Com%, ByVal SPSMPIAdr%, ByVal LocalMPIAdr%, ByVal Baud%)
    Voici ce que je pense faire en Csharp

    1- Tout mettre dans une classe statique
    2- Je suppose que la declaration : VB Attribute VB_Name = "PCS7LW32"
    est l'equivallent d'un DllImport que je ferais en C#
    Et que donc

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Declare Function S7Init& Lib "PCS7LW32.dll" (pS7 As S7, ByVal Com%, ByVal SPSMPIAdr%, ByVal LocalMPIAdr%, ByVal Baud%)
    Se traduirait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        [DllImport("PCS7LW32.dll")]
        static public unsafe extern int S7Init(S7, etc..);
    Global je suppose que c'est Public
    Et un Type serait dans ce cas une Struct ou une Class

    Merci de votre aide

    ByVal ce serait un passage simple de parametre ?

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 722
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 722
    Par défaut
    Bonjour,

    Citation Envoyé par olibara Voir le message
    2- Je suppose que la declaration : VB Attribute VB_Name = "PCS7LW32"
    C'est le nom du module VB.
    Normalement dans l'éditeur vb6 on ne voit pas cette ligne
    Tu as du ouvrir avec un éditeur de texte autre que l'EDI de VB6.

    Après dans le code on peut aussi appeler la fonction de cette façon
    PCS7LW32.S7Init&((S7, etc..)
    mais ce n'est pas obligé.


    Dans vb6 le code ci-dessous
    Citation Envoyé par olibara Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Declare Function S7Init& Lib "PCS7LW32.dll" (pS7 As S7, ByVal Com%, ByVal SPSMPIAdr%, ByVal LocalMPIAdr%, ByVal Baud%)
    c'est effectivement la déclaration d'une fonction présente dans une DLL externe.


    Citation Envoyé par olibara Voir le message
    Global je suppose que c'est Public
    C'est la déclaration dans les anciennes version de VB, depuis VB5 et VB6 cela est remplacé par Public.

    Citation Envoyé par olibara Voir le message
    Et un Type serait dans ce cas une Struct ou une Class
    Correspond a une structure

    Citation Envoyé par olibara Voir le message
    ByVal ce serait un passage simple de parametre ?
    correspond au passage de paramètre par défaut dans C#.
    ByRef correspond à ref.

    Sinon, pose la question sur le forum vb6, des personnes plus expérimentées pourrons t'apporter des réponses plus précises ou des compléments d'informations.
    A+, Hervé.
    Traductions d'articles :
    La mémoire en .NET - Qu'est-ce qui va où ?
    Architecture DAL de haute performance et DTO ; Version C# : Partie 1,Partie 2,Partie 3 — Version VB.NET : Partie 1,Partie 2,Partie 3
    N'hésitez pas à consulter la FAQ VB.NET, le cours complet de Philippe Lasserre et tous les cours, articles et tutoriels.

  3. #3
    Membre expérimenté
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Par défaut
    Merci Hervé !
    Ok je vais demander encore quelques précision sur le forum vb6
    Entre autre comment spécifier le repertoire ou le module va chercher la DLL

    Car actuellement pour tester en VB6 je suis obligé de specifier le chemin complet pour chaque declaration

Discussions similaires

  1. A ceux qui ont migré de VB6 vers VB.Net
    Par Fox dans le forum VB 6 et antérieur
    Réponses: 81
    Dernier message: 21/05/2008, 14h56
  2. Question d'archi-débutant :VB6 vers VB.NET premier problème
    Par zedude33 dans le forum Windows Forms
    Réponses: 9
    Dernier message: 06/02/2007, 15h29
  3. Réponses: 1
    Dernier message: 30/05/2006, 22h54
  4. Code VB6 vers Delphi ?
    Par isachat666 dans le forum Langage
    Réponses: 4
    Dernier message: 11/01/2006, 15h07
  5. Réponses: 3
    Dernier message: 05/03/2003, 11h08

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