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 :

Conversion d'un VB6 en C#


Sujet :

C#

  1. #21
    Expert confirmé

    Avatar de Philippe Vialatte
    Homme Profil pro
    Architecte technique
    Inscrit en
    Juillet 2004
    Messages
    3 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juillet 2004
    Messages : 3 029
    Par défaut
    Citation Envoyé par olibara Voir le message
    A moins que cet espece de #! de VB fasse un genre de Tostring() implicite
    T'as tout compris, Len prenant un string en entier, la conversion est faite automatiquement

    Mon Blog

    The Cake is still a lie !!!



    Vous voulez contribuer à la rubrique .NET ? Contactez-moi par MP.
    Vous voulez rédiger des articles pour la rubrique .NET ? Voici la procédure à suivre.

  2. #22
    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
    Citation Envoyé par Philippe Vialatte Voir le message
    T'as tout compris, Len prenant un string en entier, la conversion est faite automatiquement
    Aaargh !

    Et maintenant je vois beaucoup mieux comment fonctionne la methode originale

    Je viens de demander directement au concepteur de la méthode ce qu'elle devait faire exactement. j'attend sa réponse.
    Moi Aussi

    Sehnsucht est sur la bonne piste mais il manque encore qq chose

  3. #23
    Membre Expert Avatar de Guulh
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    2 160
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2007
    Messages : 2 160
    Par défaut
    Après analyse, j'en suis sûr : ce code fait n'importe quoi.
    - un nom de méthode qui veut rien dire
    - 4 ou 5 variables déclarées mais inutilisées
    - conversion d'un int en chaîne (n base 10), tripatouillage de la chaîne, puis reconversion en int en considérant la chaîne en base 16
    - condition while avec rank < 31 qui va encore diminuer rank de 16

    Ca fait beaucoup pour si peu de lignes

  4. #24
    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
    Tiens ! ?

    Pol63 est passé et s'est vite rétracté

    Bonjour Pol63

  5. #25
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    oui, j'étais pas si sur de ma réponse finalement
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #26
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    Bonjour à tous,

    je suis crevé, 6 heures à bossé sur un sujet sa crève...

    Bon j'ai quelque info mais j'ai pas encore regardé de mon coté, je viens de rentrer.

    Mon maitre de stage m'a envoyé un mail avec ce que j'aurais du avoir, car je dit bien j'aurais....
    En faite vous aviez raison, et pour moi cela me parait plus logique, le Type de bit est bien un String et non un int. Du coup tout s'éclaire. Je comprend donc pas pourquoi cela marche mon code et pourquoi j'aurais modifié une méthode que l'on m'a donnée....
    En ce qui concerne ce que je récupère c'est en hexadécimal.

    Je pense avoir une idée du fait que cela marchais, avec le simulateur je n'est tester que les 1ere valeur, j'ai pas été plus loin. Bon je vais chercher m'a fille et je fait d'autre essaie.

    Maintenant si c'est bien un String j'ai plus de souci de conversion. Mise à part la fonction IIf.

  7. #27
    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
    Bon ba j'y retourne...
    C'est vraiment dur de se remettre aux études à près de 40 ballets
    Bonjour à tous,
    je suis crevé, 6 heures à bossé sur un sujet sa crève...


    Allez arrete de pleurer t'est pas le seul a bosser tu sais !
    Et 6h c'est pas bien lourd


    En faite vous aviez raison, et pour moi cela me parait plus logique, le Type de bit est bien un String et non un int.

    En ce qui concerne ce que je récupère c'est en hexadécimal.
    Ce que tu dis la ne correspond pas du tout a au prototype et au retour de la fonction que tu a envoyé au début

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Function Supervision1(ByVal bit As Integer, ByVal indice As Integer) As Integer
            Supervision1= IIf((nval And 2 ^ Rank) > 0, 1, 0)
        End Function

  8. #28
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    Citation Envoyé par olibara Voir le message

    Allez arrete de pleurer t'est pas le seul a bosser tu sais !
    Et 6h c'est pas bien lourd
    Je sais ce que c'est de bossé cela fait 20 ans que je suis salarié de plus reprendre les études avec un cursus standard après 20 ans n'est pas donné à tout le monde non plus, je m'accroche et c'est pas facile tout les jours quand en plus on a une vie de famille.. Mais il y a un monde entre bossé 6 heures d'affiler sans manger pour un examen même s'il est blanc avec la routine au boulot.

    Ce que tu dis la ne correspond pas du tout a au prototype et au retour de la fonction que tu a envoyé au début :
    Comme je l'ai déjà dit à mainte reprise, je n'avais pas analyse la fonction et ce que je lui envoyais. J'ai simplement fait un copier coller de ce que l'on m'a donnée et mes 1er essaie marchait, j'ai donc supposé que c'était bon puisque la méthode que j'ai utilisé est encore utilisé dans d'autre produit.

    C'est simplement lorsque j'ai voulu le convertir en C# que le problème est apparu. Après avoir demandé sur ce forum une conversion, il s'avère qu'il y à un souci.
    je viens de demander l'info aux personnes qui ont créent ce code à la base et ils viennent de me répondre comme quoi on doit envoyer un code sous le type string et non int comme il me semblais être, et le string symbolise un code en Hexadécimal.
    En retour je dois bien avoir un Int correspondant à un 0 ou un 1 symbolisant l'alarme recherchée.


    Voici donc le code modifier, j'ai enlever aussi les variables inutile:
    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
        Public Function GCAU(ByVal bit As String, ByVal indice As Integer) As Integer
            Dim nbc As Integer
            Dim Str As String
            Dim i As Integer
            Dim nval As Long
            Dim Rank As Integer
            On Error Resume Next
            Rank = indice
            nbc = Len(bit) Mod 2
            'Mise au format &Hxx -> on complette par 0 si besoin
            Str = IIf(nbc = 1, "0" & bit, bit)
            While Rank <= 31 And Len(Str) >= 8
                Str = Mid(Str, Len(Str) - 4)
                Rank = Rank - 16
            End While
            nval = Val("&H" & Str)
            i = Val(Str And CStr(Hex(2 ^ Rank)))
            GCAU = IIf((nval And 2 ^ Rank) > 0, 1, 0)
        End Function
    Il me reste à la traduire en C#

  9. #29
    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
    Dans ce cacas la solution de Sehnsucht est presque bonne

    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
    private int ValeurBitNombre(string Hex, int positionBit)
    {
        //Gestion des execptions
        if (positionBit < 0) throw new ArgumentOutOfRangeException("positionBit", 
    positionBit, "doit être supérieur ou égal à 0.");
     
    // ATTENTION il faut veiller a ce que le string soit de l'Hexa mode C
    // : soit "0xABCDEF01" ou  "ABCDEF01"
    // MAIS pas en mode BASIC : "&HABCDEF01"
     
     Hex=Hex.ToUpper().Replace("&H","0x");
     
    // Conversion en int du string
       int iHex = Int32.Parse( Hex, System.Globalization.NumberStyles.HexNumber );
     
    // Autre possibilité de conversion
       int iHex = Convert.ToInt32( Hex, 16 );
     
     
        return (iHex >> positionBit) & 1;
    }

  10. #30
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    Merci beaucoup

    Je modifie mon code VB.net pour qu'il utilise bien un String.

    J'ai pas mal de petite modif à faire, pas bien méchante mais certaine supervision n'ont pas besoin de rechercher l'alarme dans le code, elles sont directe 0 ou 1 je transformais tout de suite en Int ce qui n'est pas a faire si j'ai besoin d'utilisé la fonction.

  11. #31
    Membre éprouvé Avatar de megamario
    Homme Profil pro
    VB6/VB.net/C/C++/C#
    Inscrit en
    Septembre 2008
    Messages
    931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Indre et Loire (Centre)

    Informations professionnelles :
    Activité : VB6/VB.net/C/C++/C#
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2008
    Messages : 931
    Par défaut
    Me revoici avec mes tests plus poussé.

    J'ai compris comment était générer le Code d'alarme


    Exemple:
    Bit nr.....|....Hex Mask...|...Weight in..| event
    0..............0000 000X...........1............Alarme 1
    1..............0000 000X...........2............Alarme 2
    2..............0000 000X...........4............Alarme 3
    3..............0000 000X...........8............Alarme 4
    4..............0000 00X0...........1............Alarme 5
    5..............0000 00X0...........2............Alarme 6
    6..............0000 00X0...........4............Alarme 7
    7..............0000 00X0...........8............Alarme 8
    8..............0000 0X00...........1............Alarme 9
    9..............0000 0X00...........2............Alarme 10
    10.............0000 0X00..........4............Alarme 11
    11.............0000 0X00..........8............Alarme 12
    ... etc...
    31.............X000 0000..........8............Alarme 32


    J'ai donc modifié le code pour qu'il prenne bien un String et Modifier le Code de la fonction.

    Si j'ai bien compris comment marche le syteme lorsque je modifie la valeur dans mon simulateur j'ai exactement ce que je veux cela marche très bien:

    Voici le code Modifié:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        Public Function Supervision1(ByVal bit As String, ByVal indice As Integer) As Integer
            Dim nval As Long   
            nval = Val("&H" & bit)
            Supervision1 = IIf((nval And 2 ^ indice) > 0, 1, 0)
        End Function
    Voila cela marche très bien comme sa mais je vais demander à la personne qui m'a donner le code d'origine car c'est vraiment simplifié.




    Merci de votre aide

  12. #32
    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
    Je ne comprends pas bien pourquoi tu voulais convertir un code VB en C# si c'est un définitive pour le réécrire en VB

    Et à 40 balais comme tu dis tu devrais quand même avoir appris à faire la différence entre le pronom démonstratif ça

    ça va marcher
    cela marche très bien comme ça
    ça crève
    et le possessif

    sa methode
    sa fonction
    ma fille et pas m'a fille
    Pour ne pas faire sytématiquement l'erreur

    http://www.francaisfacile.com/exerci...cais-26659.php

Discussions similaires

  1. Conversion MsFlexGrid de VB6 vers VB.net
    Par megamario dans le forum VB.NET
    Réponses: 4
    Dernier message: 19/11/2013, 07h15
  2. Conversion taille fenêtre VB6>VB2010
    Par gaiac dans le forum Visual Studio
    Réponses: 1
    Dernier message: 29/05/2013, 20h58
  3. Conversion de Code Vb6 en VB.Net
    Par mr.net dans le forum VB.NET
    Réponses: 11
    Dernier message: 08/10/2010, 22h06
  4. conversion de code VB6 en PHP
    Par Illuminati dans le forum Langage
    Réponses: 2
    Dernier message: 06/05/2010, 20h28

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