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

ASP.NET Discussion :

Code C# vers VB


Sujet :

ASP.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Par défaut Code C# vers VB
    Salut,

    Voilà, je suis plutôt orienté VB .net, mais j'ai un bout de code en C# qui m'intéresse, enfin, une routine plus générale que je veux traduire en VB. Les outils que j'ai trouvé n'arrive pas à le faire.

    Est-ce que vous pouve m'expliquer ce que font ces lignes ?

    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 unsafe void ReadTwoInts(out int FourCC, out int size)
            {
                try {
                    int readsize = m_stream.Read(m_eightBytes, 0, TWODWORDSSIZE);
     
                    if (TWODWORDSSIZE != readsize) {
                        throw new RiffParserException("Unable to read. Corrupt RIFF file " + FileName);
                    }
     
                    fixed (byte* bp = &m_eightBytes[0]) {
                        FourCC = *((int*)bp);
                        size = *((int*)(bp + DWORDSIZE));
                    }
                }
                catch (Exception ex)
                {
                    throw new RiffParserException("Problem accessing RIFF file " + FileName, ex);
                }
            }
    Et celles-ci :

    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
            public unsafe void ReadOneInt(out int FourCC)
            {
                try {
                    int readsize = m_stream.Read(m_fourBytes, 0, DWORDSIZE);
     
                    if (DWORDSIZE != readsize) {
                        throw new RiffParserException("Unable to read. Corrupt RIFF file " + FileName);
                    }
     
                    fixed (byte* bp = &m_fourBytes[0]) {
                        FourCC = *((int*)bp);
                    }
                }
                catch (Exception ex)
                {
                    throw new RiffParserException("Problem accessing RIFF file " + FileName, ex);
                }
            }
    Ou bien, y'aurait-il quelqu'un qui pourrait me traduire en VB ?

    Merci par avance.

  2. #2
    Rédacteur
    Avatar de lutecefalco
    Profil pro
    zadzdzddzdzd
    Inscrit en
    Juillet 2005
    Messages
    5 052
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : zadzdzddzdzd

    Informations forums :
    Inscription : Juillet 2005
    Messages : 5 052
    Par défaut
    Ca ressemble plus à du C++ qu'à du C#

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par lutecefalco Voir le message
    Ca ressemble plus à du C++ qu'à du C#
    Non, c'est bien du C#
    Mais c'est du code unsafe, qui n'a pas d'équivalent en VB.NET...

    Tu peux quand même l'utiliser en VB.NET : crée un projet C# de type "bibliothèque de classes", mets ce code dedans et compile le (il faut autoriser le code unsafe dans les propriétés du projet). Ensuite, tu n'as plus qu'à référencer la DLL obtenue dans ton projet VB.NET

    Sinon, j'ai l'impression que ce code lit des données binaires dans un flux et en extrait des entiers... ce qui ne nécessite absolument pas de code unsafe !!! Ca a du être codé par quelqu'un qui est plus habitué au C...
    On peut faire la même chose en .NET pur avec un BinaryReader.

  4. #4
    Membre éclairé

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Par défaut
    Merci des réponses,

    Oui, c'est bien du C#, après, je connais pas assez pour dire.

    En fait, je souhaiterais transcrire en VB le code suivant :

    http://www.codeproject.com/KB/files/riffparser.aspx

    Surtout la partie relative au traitement wav ("RIFF").

    Je suis bloqué sur la fonction ReadTwoInts.

    J'ai bien sûr essayé divers outils de conversion de code c# en VB, mais ils bloquent au niveau que je signale ! Sans doute c'est ce que vous dites (unsafe).

    Alors, y-a-t-il une solution néanmoins, pour convertir en VB .net, même si c'est à priori pas possible ? Quel est le rôle de ce code ?

    Merci par avance.

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par soso78 Voir le message
    Alors, y-a-t-il une solution néanmoins, pour convertir en VB .net, même si c'est à priori pas possible ?
    Pas directement, il faut revoir un peu la structure du code... En effet, il faudrait utiliser un BinaryReader, mais il faut le créer en dehors des fonctions concernées, car il va être utilisé dans les 2 fonctions, et qu'on ne peut pas le créer en local dans ces fonctions car il faudrait le refermer après, ce qui refermerait le flux (désolé, j'ai l'impression que c'est pas très clairement exprimé... je vois pas comment le dire autrement )

    Citation Envoyé par soso78 Voir le message
    Quel est le rôle de ce code ?
    Je l'ai expliqué dans mon post précédent : ça lit des entiers à partir d'un flux de données binaires. Soit exactement ce que fait un BinaryReader... d'où la parfaite inutilité du code unsafe. Le mec qui a écrit ça est peut-être très bon en C, mais il y connait rien en .NET

  6. #6
    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 soso78 Voir le message
    Alors, y-a-t-il une solution néanmoins, pour convertir en VB .net, même si c'est à priori pas possible ?

    oui, passe-toi du unsafe


    Si tu lis l'article, tu verras que les unsafe ne sont pas requis, mais servent a optimiser la lecture...

    Quel est le rôle de ce code ?
    ...de lire deux int sur un flux binaire ???

    Plus sérieusement, a ta place, je passerais par la solution de tomlev, vu que tu as possibilité de mixer les deux langages.

    Si c'est pour de l'apprentissage, prends une demi-journee pour passer le code sur du managed, vire les unsafe, essaye de voir comment marche le BinaryReader etc...

    Si c'est pour un projet, tu n'as probablement pas le temps de le faire, et ton CP sera surement sensible a l'argument "si on le fait en unsafe, ca ira beaucoup plus vite"

    Dans la partie discussion de l'article, tu verras que qqun pose a peu pres la meme question que toi...et donne la reponse

    http://www.codeproject.com/KB/files/...04#xx1189204xx

    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.

  7. #7
    Membre éclairé

    Inscrit en
    Avril 2004
    Messages
    646
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 646
    Par défaut
    Merci à vous pour vos réponses, et précisions.

    Effectivement, la méthode de tomlev semble la plus pratique. Je vais regarder au niveau du binaryreader... et malheureusement, c'est pour un projet. Je peux néanmoins prendre un peu de temps pour regarder tout ça.

    J'avais pas vu en effet les messages relatifs à l'article .

Discussions similaires

  1. Code VB6 vers Delphi ?
    Par isachat666 dans le forum Langage
    Réponses: 4
    Dernier message: 11/01/2006, 15h07
  2. Traduction de code Oracle vers SQL Server
    Par randomcl dans le forum Langage SQL
    Réponses: 1
    Dernier message: 13/11/2005, 23h43
  3. Traduction du code oracle vers SQL - suite
    Par randomcl dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/11/2005, 14h40
  4. [VB.net]problème de conversion de code c# vers VB.net
    Par cladsam dans le forum Windows Forms
    Réponses: 2
    Dernier message: 18/10/2005, 14h07
  5. Adaptation d'un code TMemo vers TRichEdit : problème de ScrollBars
    Par Droïde Système7 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 21/01/2005, 15h06

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