Partage
  • Partager sur Facebook
  • Partager sur Twitter

Code d'autoIT au VB.net

Sujet résolu
    15 mai 2011 à 14:20:56

    Bonjour,

    J'ai codé un petit programme sous autoIT qui marchait très bien cependant vu que je me mets au vb.net j'aimerais traduire ce code de l'autoIT au vb cependant je n'obtiens pas le résultat escompté, voici le code en autoIT :

    $script = FileOpen($scriptfile, 0)
    
    Local $count = 0
    
    While 1
    
    $line = FileReadLine($script)
    
    If not @error = -1 Then
    
    $count =+1
    Else
    ExitLoop
    EndIf
    
    
    
    if ($line = '[MSGBOX1]') Then
    $mode = 'msgbox1'
    continueloop
    elseif ($line = '[MSGBOX2]') then
    $mode = 'msgbox2'
    ContinueLoop
    EndIf
    
    if $mode = "msgbox1" then
    
    
    msgbox(64,'',$line)
    
            EndIf
    
    ElseIf $mode = "msgbox2" then
    
    msgbox(64,'',$line)


    Et celui en vb.net

    Imports System.IO
    
    Public Class Form1
    
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    
            Dim lignes, Mode As String
            Dim count As Integer
    
            lignes = File.ReadAllText(Environment.SpecialFolder.Desktop + "\script.txt")
    
            For Each sous_lignes As String In lignes
    
                While sous_lignes IsNot Nothing
    
                    count = +1
    
                    If sous_lignes = "[MSGBOX1]" Then
    
                        Mode = "msgbox1"
    
                        Continue While
    
                    ElseIf sous_lignes = "[MSGBOX2]" Then
    
                        Mode = "msgbox2"
    
                        Continue While
    
                    End If
    
                    If Mode = "msgbox1" Then
    
                        MsgBox(sous_lignes, MsgBoxStyle.Information)
    
                    ElseIf Mode = "msgbox2" Then
    
                        MsgBox(sous_lignes, MsgBoxStyle.Information)
    
                    End If
    
                End While
    
            Next
    
        End Sub
    
    End Class
    


    Le problème c'est que la variable Mode n'est pas prise en compte dans les lignes "If Mode = "msgbox1" Then..." du coup cela fait freezer mon programme o_O

    Pour résumer l’intérêt, j'ai un fichier nommé script.txt sur mon bureau il est composé comme suit :

    [MSGBOX1]
    C:\a.txt
    [MSGBOX2]
    C:\b.txt

    Le nom des fichiers sont variable. Donc mon programme sait que si le switch [MSGBOX1] a été utilisé alors tous les fichiers qui vont être écrit en dessous seront à supprimé. Une fois qu'il atteint le switch [MSGBOX2] il sait que tous les fichiers en dessous devront être déplacés par exemple.

    Voilà,

    Je vous remercie :)

    Nico
    • Partager sur Facebook
    • Partager sur Twitter
      15 mai 2011 à 14:37:32

      File.ReadAllText renvoie une seule string contenant la totalité du fichier. En itérant sur cette string, ta variable sous_lignes vaut successivement chaque caractère du fichier, et pas chaque ligne.
      Utilise plutôt la méthode File.ReadAllLines qui renvoie un tableau de strings correspondant aux lignes du fichier, et itère sur ce tableau. :)
      • Partager sur Facebook
      • Partager sur Twitter
        15 mai 2011 à 15:34:41

        Salut Orwell !

        Toujours à la rescousse de pauvre codeur comme moi à ce que je vois :lol:

        J'essaye sa :)

        EDIT : J'ai modifié comme tu me l'a dis cependant dans la ligne qui déconne est la suivante :

        If Mode = "msgbox1" Then
        


        J'ai cet avertissement :

        Avertissement 1 La variable 'Mode' est utilisée avant qu'une valeur ne lui ait été assignée. Une exception de référence null peut se produire au moment de l'exécution.


        du coup c'est à cause de sa que le programme freeze :o

        Merci
        • Partager sur Facebook
        • Partager sur Twitter
          15 mai 2011 à 16:23:37

          Eh oui, que veux-tu, j'aime me rendre important :p

          L'erreur que tu obtiens vient du fait que tu n'initialises pas ta variable Mode au démarrage. Fais plutôt:
          Dim Mode As String = ""
          

          Mais ça n'a rien à voir avec ton freeze. Le freeze vient de là:
          For Each sous_lignes As String In lignes
              While sous_lignes IsNot Nothing
                  ' ... 
              End While
          Next
          

          Ton While boucle tant que sous_lignes n'est pas vide. Mais tu ne changes jamais la valeur de sous_lignes au sein du While et il n'y a pas de raison qu'elle change de valeur spontanément, donc forcément ça boucle longtemps :p Remplace ton While par un If. ;)
          • Partager sur Facebook
          • Partager sur Twitter
            15 mai 2011 à 16:29:54

            Salut

            Hé ba écoute nikel, encore une fois t'es le champion :magicien:

            Je te souhaite un bon week end :soleil:
            • Partager sur Facebook
            • Partager sur Twitter

            Code d'autoIT au VB.net

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown