SOS Visual Basic
Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

SOS Visual Basic



  1. #1
    danyvio

    SOS Visual Basic


    ------

    Bonjour ! Je souhaite transcrire un jeu écrit en C (Un "compte est bon" qui fonctionne parfaitement ) vers Visual Basic pour faire plus joli, au lieu de rester sous msdos. J'ai la maîtrise (en C) des structures complexes contenant elles-mêmes des structures etc. et quelques dizaines d'années de programmation (néanmoins débutant en VB).
    Ici, je me heurte à une erreur incompréhensible (pour moi snif).
    J'ai joint le morceau de programme dont j'ai expurgé tout ce qui n'était pas utile à la stricte compréhension du problème(c'est pour cela que certaines structures ne contiennent ici pas grand chose) ainsi que la capture d'écran avec l'erreur, dont je n'arrive pas à me dépêtrer.
    Toute aide recevra ma reconnaissance, et m'évitera de changer mon PC que j'ai envie de démolir à grands coups de masse depuis 3 jours. J'ai quand même essayé de trouver des solution sur le web, mais sans résultat.
    Merci d'avance !
    Daniel

    Code:
    Module Module1
    
        Structure Plaque
            Dim Valeure As UInteger
        End Structure
    
        Structure Jeu
            Dim Plq() As Plaque
            Dim Niv_appel As Integer
            Public Sub Initialize()
                ReDim Plq(6)
            End Sub
        End Structure
        
        Dim Jeu_initial As Jeu
    
        Sub Main()
    
            Jeu_initial.Niv_appel = 6
            For i As Integer = 0 To 5
                Console.WriteLine("i= " & i)
                Console.ReadLine() 'pour faire un arret 
                Jeu_initial.Plq(i).Valeure = 0
            Next
    
            Console.ReadLine()
    
        End Sub
    
    End Module

    -----
    Images attachées Images attachées  
    Dernière modification par Antoane ; 06/02/2019 à 15h19. Motif: Intégration du code au corps du message
    On trouve des chercheurs qui cherchent ; on cherche des chercheurs qui trouvent !

  2. #2
    Fustigator

    Re : SOS Visual Basic

    Si vous ne mettez pas
    Code:
     Option Base 0
    en début de module, VB démarre avec des indices à 1 par défaut.

  3. #3
    danyvio

    Re : SOS Visual Basic

    Citation Envoyé par Fustigator Voir le message
    Si vous ne mettez pas
    Code:
     Option Base 0
    en début de module, VB démarre avec des indices à 1 par défaut.
    Merci, mais ce n'est pas le problème.
    On trouve des chercheurs qui cherchent ; on cherche des chercheurs qui trouvent !

  4. #4
    danyvio

    Re : SOS Visual Basic

    Je rapporte le message d'erreur qui n'est pas très visible sur la copie d'écran:

    L'exception NullReferenceException n'a pas été gérée.
    On trouve des chercheurs qui cherchent ; on cherche des chercheurs qui trouvent !

  5. A voir en vidéo sur Futura
  6. #5
    Ikhar84
    Animateur Informatique

    Re : SOS Visual Basic

    Salut,

    Tu utilises la structure Plaque qui n'est pas initialisée.

    Deux conseils si tu veux progresser:

    - laisses tomber les structures et passes aux objets, tant qu'à utiliser un langage objet, autant utiliser la POO...

    - Si tu maîtrises C, passes à C# qui en est bien plus proche que VB, tant qu'à commencer un nouveau langage, choisis juste un projet C# dans Visual Studio au lieu de VB.

    Crées un nouveau projet, tu auras une form (fenêtre) par défaut dans laquelle il suffira d'inserer tes controles (boutons, label, texbox, image, etc...), et crées tes classes dans le navigateur de solution sur la droite.

    Au début, contentes toi de remplacer tes structures par des classes, les membres des structures deviennent les attributs de ta classe, on verra plus tard pour les "méthodes...
    J'ai glissé Chef !

  7. #6
    danyvio

    Re : SOS Visual Basic

    Merci Ikhar84 ! Je ne comprends pas trop la phrase "la structure Plaque qui n'est pas initialisée". Mon programme se plante justement quand je veux initialiser (IE pour moi = inscrire des valeurs pour la 1ère fois).
    L'instruction Jeu_initial.Niv_appel = 6 inscrit qque chose , et je voulais mettre à 0 la zone Valeure de plq(i) de jeu_initial

    Mais une subtilité de VB m'échappe sans doute ???
    On trouve des chercheurs qui cherchent ; on cherche des chercheurs qui trouvent !

  8. #7
    Ikhar84
    Animateur Informatique

    Re : SOS Visual Basic

    Pour simplifier, déclarer une variable, c'est lui donner un nom et un "type", l'affectation, c'est lui donner une valeur, l'initialisation c'est lui donner sa première valeur.

    La plupart des langages sont moins "laxistes" que le C, et imposent qu'une variable soit déclarée dans les formes, et initialisée, sinon les compilos refusent de faire leur travail (compiler)...

    Pour VB (c'est assez loin pour moi), il faudrait redéfinir l'opérateur new de la première structure, qui est "inclue" dans la deuxiéme.

    Les structures ne sont vraiment pas adaptées pour ce que tu veux faire, passes à l'Objet, tu devras t'y mettre dans tous les cas, autant commencer proprement...

    Et penses au C#, ne serait ce que pour tester, tu seras bien plus à l'aise puisque venant du C. Tu utiliseras les mêmes outils que VB, mais bien plus proche du C pour la syntaxe et les mécanismes du langages...

    Pour bien comprendre, un des exemples bidons:
    Code:
    int i;     //déclaration
    i = 0;    //affectation
    
    int i =0;  //déclaration avec initialisation
    
    //pour un objet:
    Plateau jeu;
    jeu = new Plateau();
    
    //ou comme l'exemple du int plus haut:
    Plateau jeu = new Plateau();
    J'ai glissé Chef !

  9. #8
    CM63

    Re : SOS Visual Basic

    Oui, en VB il n'y a pas de variables statiques (sauf pour les types de base), il faut toujours faire new. Donc en fait lorsqu'on déclare une variable d'un certain type, il est sous entendu que c'est un pointeur vers ce type (sauf pour les types de base). C'est une erreur que j'avais faite aussi au début.
    On note que cet implicite est aussi pratiqué dans les langages récents comme Java ou C# .

  10. #9
    Fustigator

    Re : SOS Visual Basic

    Citation Envoyé par CM63 Voir le message
    Oui, en VB il n'y a pas de variables statiques (sauf pour les types de base)
    C'est totalement faux; le static en VB c'est l'attribut de déclaration "Shared". (je suis d'accord que c'est contre intuitif).
    Se rappeler que VB.Net utilise la même CLR que C#; donc on y retrouve exactement les même concepts, mais à la sauce VB (qui est assez indigeste).

  11. #10
    Fustigator

    Re : SOS Visual Basic

    Citation Envoyé par danyvio Voir le message
    Bonjour ! Je souhaite transcrire un jeu écrit en C (Un "compte est bon" qui fonctionne parfaitement ) vers Visual Basic
    Vers VB "Mathusalem" ou VB.Net ?
    Si c'est VB.Net, quelle idée étrange d'utiliser les modules ? Ce machin n'a été conservé que pour maintenir une compatibilité avec VB (et même avec VB 6, il y a avait déjà les classes, qui rendaient marginale l'usage des modules).

    Un module est à peu près une classe statique.

  12. #11
    Ikhar84
    Animateur Informatique

    Re : SOS Visual Basic

    C'est pour cela que je proposais la POO au lieu des structures et C# pour son "apparence" plus C like... surtout si Danyvio veut aller plus loin (il al'air curieux et motivé), autant "investir"...

    Je pense que pour le moment, il a du chercher sur le net "vb" sans le .net (humour... je sors...).

    Avec la POO "new" prend tout son sens (à mon avis...).
    J'ai glissé Chef !

  13. #12
    Jack
    Modérateur

    Re : SOS Visual Basic

    Il me semble que le code source d'origine est bien en .NET (par exemple Console.ReadLine()), donc pas d’ambiguïté, c'est bien du VB.NET

  14. #13
    Fustigator

    Re : SOS Visual Basic

    Citation Envoyé par Jack Voir le message
    Il me semble que le code source d'origine est bien en .NET (par exemple Console.ReadLine()), donc pas d’ambiguïté, c'est bien du VB.NET
    Exact.
    J'avais zappé.

  15. #14
    Ikhar84
    Animateur Informatique

    Re : SOS Visual Basic

    Zappé aussi tout ce qui n'était pas struct et "module"...

    Pour passer en graphique il te faut revoir tout le mode d'affichage et de "saisie" de ton projet...
    J'ai glissé Chef !

Discussions similaires

  1. Problème de réception port série visual basic ( visual studio 2012)
    Par extremgear dans le forum Programmation et langages, Algorithmique
    Réponses: 9
    Dernier message: 30/07/2013, 22h44
  2. visual basic 6
    Par geniant dans le forum Programmation et langages, Algorithmique
    Réponses: 4
    Dernier message: 22/06/2011, 08h21
  3. Visual Basic
    Par punky591 dans le forum Programmation et langages, Algorithmique
    Réponses: 21
    Dernier message: 31/03/2011, 17h15
  4. visual basic
    Par invite096ed528 dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 02/10/2009, 08h01
  5. visual basic 6
    Par marc.suisse dans le forum Électronique
    Réponses: 6
    Dernier message: 17/05/2006, 08h56