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

VB.NET Discussion :

Longueur d'excecution d'un programme


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Février 2012
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 12
    Par défaut Longueur d'excecution d'un programme
    Bonjour,

    Je suis super débutant en Visual Basic et j'ai fait un petit programme pour jouer avec des fichiers ouvrir, crypter et enregistrer.

    Il fonctionne bien mais pour des strings < à 300, au delà d'un certain nombre de caractère, le programme se fige. Je l'ai fait avec mes connaissances (faibles), il y a certainement un système plus rapide ou utilisant une autre méthode.

    Si quelqu'un peu regarder mon code et me dire ce qui ne va pas ou qui pourrais être mieux, ce serait cool.

    Une autre question : comment faire pour qu'il enregistre en incrémentant le nom de fichier s'il existe (ex: test1.txt, test2.txt etc..)

    Mon code :
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
    Imports System.IO
     
     
    Public Class Form1
        Dim VCode As String = "-0-"
        Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
            Me.Close() 'si click Quitter ferme la forme1'
     
        End Sub
        Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
            Dim savefiledialog1 As New SaveFileDialog 'définition de savefiledialog1'
            savefiledialog1.Filter = "texte | *.txt" 'défintion du format de sortie'
     
            If savefiledialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
     
                Dim SW As New StreamWriter(savefiledialog1.FileName)
                SW.Write(TextBox1.Text)
                SW.Close()
     
            End If
        End Sub
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim openfiledialog2 As New OpenFileDialog
            openfiledialog2.Filter = "texte |*.txt"
            TextBox1.Text = ""
     
            If openfiledialog2.ShowDialog = Windows.Forms.DialogResult.OK Then
     
                Dim sr As New StreamReader(openfiledialog2.FileName)
                TextBox1.Text = sr.ReadToEnd
     
            End If
            Label3.Text = "caract. : " & Len(TextBox1.Text)
        End Sub
     
        Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
            Dim lgr As UInteger
            Dim i As Integer
     
            Dim longueur As String
            TextBox2.Text = ""
            longueur = Len(TextBox1.Text) 'compte le nombre de caractère'
            lgr = CInt(longueur) 'converti en numérique pour le boucle'
     
            For i = 1 To lgr
                TextBox2.Text = TextBox2.Text & Mid(TextBox1.Text, i, 1)
                TextBox2.Text = TextBox2.Text & VCode
            Next
     
            Dim savefiledialog2 As New SaveFileDialog 'définition de savefiledialog1'
            savefiledialog2.Filter = "texte | *.txt" 'défintion du format de sortie'
     
            Dim SW As New StreamWriter("C:\Users\CC\Desktop\test2.txt")
     
            SW.Write(TextBox2.Text)
            SW.Close()
            Label4.Text = "caract. : " & Len(TextBox2.Text) & "       soit " & ((Len(TextBox2.Text) - Len(TextBox1.Text)) / Len(TextBox1.Text) * 100)
     
     
     
        End Sub
     
        Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
     
            Dim lgr, clef As UInteger
            Dim fichier As String = ""
     
            TextBox2.Text = ""
     
            lgr = CInt(Len(TextBox1.Text))
            clef = CInt(Len(VCode))
     
            Label4.Text = "caract. : " & Len(TextBox1.Text)
     
            For i = lgr To clef Step -clef - 1
     
                If i <= clef Then Exit For
                fichier = fichier & Mid(TextBox1.Text, i - clef, 1)
     
            Next
     
            fichier = StrReverse(fichier)
            TextBox2.Text = fichier
     
     
     
        End Sub
    End Class

  2. #2
    Membre actif
    Inscrit en
    Février 2012
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 12
    Par défaut Personne pour m'aider ?
    sympa le forum ...Merci

  3. #3
    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
    personne n'a l'obligation de vous répondre, vous n'avez donc pas le devoir de raler si vous n'avez pas de réponses
    en général pas de réponse = mal expliqué, auquel cas ce n'est pas de notre faute ...



    on a pas tout le code apparemment

    "se fige", il se fige à l'infini où pendant le traitement ?
    (voir le backgroundworker pour éviter que ca fige)



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim SW As New StreamWriter(savefiledialog1.FileName)
                SW.Write(TextBox1.Text)
                SW.Close()
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system.io.file.write(savefiledialog1.FileName,TextBox1.Text)
    (c'est juste pour gagner des lignes de code, ca n'améliore en rien)


    pour incrémenter un nom de fichier, tu incrémentes un integer et tu concatène le nom de fichier avec ce numéro
    (system.io.path contient pas mal de choses pour composer/décomposer les noms et paths de fichier si nécessaire)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre chevronné
    Homme Profil pro
    Caféinomane
    Inscrit en
    Septembre 2011
    Messages
    202
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Caféinomane

    Informations forums :
    Inscription : Septembre 2011
    Messages : 202
    Par défaut
    Bonjour,

    Votre demande a été postée il y a moins de 24h. Il y a probablement plusieurs personnes qui ont la patience de réfléchir à votre problème. Se montrer impatient n'est pas le meilleur moyen de les encourager à poursuivre dans cette voie.

    Puisque ça semble urgent, je vais me contenter de quelques pistes rapides :

    1. Pour être un peu plus VB.NET et un peu moins VB6 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            lgr = TextBox1.Text.Length 'converti en numérique pour le boucle'
    au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            longueur = Len(TextBox1.Text) 'compte le nombre de caractère'
            lgr = CInt(longueur) 'converti en numérique pour le boucle'
    2. Idem :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                 TextBox2.Text = TextBox2.Text & TextBox1.Text(i)
    à la place de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                TextBox2.Text = TextBox2.Text & Mid(TextBox1.Text, i, 1)
    3. S'adapter à l'environnement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            Dim SW As New StreamWriter(System.Environment.SpecialFolder.DesktopDirectory) & Path.DirectorySeparatorChar & "test2.txt")
    au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            Dim SW As New StreamWriter("C:\Users\CC\Desktop\test2.txt")
    4. Pour le plantage, j'ai essayé votre code chez moi, ça a l'air de tourner (même pour une chaîne de plus de 2.000 caractères). Comme je ne suis pas sûr de ce que doit faire ce code, je ne peux pas tester plus.

    5. Pour incrémenter le nom de fichier, il faut vérifier si le fichier existe ou pas :

    If(file.Exists(path)) then
    ' (...)
    End If

    Le principe c'est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    (lire le numéro (éventuel) en fin de nom de fichier)
    Do
        (incrémenter ce numéro)
    Loop While file.Exists(<nom de fichier avec nouveau numéro>)
    (écriture du fichier avec le nouveau numéro)
    Encore une dernière piste : pour extraire le nom d'un fichier sans son extension (histoire d'aller voir si il y a déjà un numéro en fin de nom, par exemple) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
            nom_sans_extension = Path.GetFileNameWithoutExtension(filename)

  5. #5
    Membre actif
    Inscrit en
    Février 2012
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Février 2012
    Messages : 12
    Par défaut Désolé
    Execusez moi, merci pour vos réponses, je serais plus patient la prochaine fois...

    Pour la lenteur, j'ouvre un fichier texte quelconque (style CGU) et il mouline. Est-ce que la version de windows peut être la cause (Win 7 64) ?

Discussions similaires

  1. Excecution d'un programme admin en session utilisateur
    Par saad.hessane dans le forum Windows 7
    Réponses: 11
    Dernier message: 09/01/2017, 19h44
  2. Excecution d'un programme sous Cygwin
    Par Leona-7 dans le forum Autres éditeurs
    Réponses: 3
    Dernier message: 27/02/2015, 11h16
  3. ADOQUERY : Ajouter un champ pendant l'excecution d'un programme
    Par Didier100 dans le forum Bases de données
    Réponses: 3
    Dernier message: 23/04/2007, 13h18
  4. [Système] Programmer l'excecution d'un script PHP
    Par Landolsi dans le forum Langage
    Réponses: 2
    Dernier message: 09/02/2007, 16h30
  5. excecution d'un programme sous dev c++
    Par balgor dans le forum Dev-C++
    Réponses: 3
    Dernier message: 01/10/2006, 16h11

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