Conversion ascii

Résolu
Signaler
Messages postés
128
Date d'inscription
mercredi 21 mai 2003
Statut
Membre
Dernière intervention
8 avril 2008
-
Messages postés
128
Date d'inscription
mercredi 21 mai 2003
Statut
Membre
Dernière intervention
8 avril 2008
-
Bonjour,

Je désire faire un programme pour traduire un fichier ascii, j'ai donc réalisé ce type de programme mais visiblement j'ai quelques difficultés avec les types de variables.
Initialement je désirais le lire dans un textbox...
Voici mon code sous V Studio 2008:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Ligne
        TextBox1.Clear()
        OpenFileDialog1.Filter = "EDF|*.edf"
        OpenFileDialog1.InitialDirectory = "C:\Documents and Settings\Bureau"
        If OpenFileDialog1.ShowDialog() = DialogResult.OK Then
            Dim sr As New System.IO.StreamReader(OpenFileDialog1.FileName)
            Dim AE As New System.Text.ASCIIEncoding()
            Ligne = sr.ReadToEnd
            sr.Close()
            Dim CharArray As Char() = AE.GetString(Ligne)
            Dim x As Integer
            For x = 0 To CharArray.Length - 1
                TextBox1.Text = CharArray(x)
            Next

        End If

    End Sub
Merci de votre aide

MAGICSMACKS[:p]

8 réponses

Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
Re,

Mon message précédent ne répond pas vraiment à ta question, alors voici le code qui affiche le fichier ASCII dans ton TextBox:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Dlg As New OpenFileDialog
        Dlg.Filter = "EDF|*.edf"
        Dlg.InitialDirectory = "C:\Documents and Settings\Bureau"
        If Dlg.ShowDialog() = DialogResult.OK Then
            TextBox1.Clear()
            TextBox1.Text = IO.File.ReadAllText("Fichier ASCII.txt", System.Text.Encoding.ASCII)
        End If
End Sub

Ton erreur vient probablement de là:
Dim CharArray As Char() = AE.GetString(Ligne)
AE.GetString retourne un string, et non un tableau de char, donc il faut faire:
Dim Text As String = AE.GetString(Ligne)
Et en plus tu ne déclare pas le type de Ligne....

Voila
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Salut,
Je n'ai pas trop regarde ton code.
Mais ce que je peux te dire c'est que ceci:

For x = 0 To CharArray.Length - 1
   TextBox1.Text = CharArray(x)
Next
, ----
[code.aspx?ID=41455 By Renfield]

equivaut a

TextBox1.Text = CharArray(CharArray.Length - 1)

, ----
[code.aspx?ID=41455 By Renfield]
Si tu veux faire une boucle fait ceci

For x = 0 To CharArray.Length - 1
   TextBox1.Text = TextBox1.Text & CharArray(x)
Next

Attention: ce n'est qu'une idée car je suis encore en VB6 et utilise peu VS2005 alors je te laisse imaginer VS2008

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
128
Date d'inscription
mercredi 21 mai 2003
Statut
Membre
Dernière intervention
8 avril 2008

Effectivement merci...
Le soucis qui persiste serait visiblement qu'il y aurait une incompatibilité entre des variables "string" et "byte"...
Je dois dire que j'ai un peu de mal pour tout piger...
Merci de votre aide

MAGICSMACKS[:p]
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,
Essaie peu être

For x = 0 To CharArray.Length - 1
   TextBox1.Text = TextBox1.Text & CharArray(x).ToString
Next

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
128
Date d'inscription
mercredi 21 mai 2003
Statut
Membre
Dernière intervention
8 avril 2008

Merci de la réponse mais ca ne change rien :
voici le message d'erreur :

An unhandled exception of type 'System.InvalidCastException' occurred in ascii.exe

Additional information: Unable to cast object of type 'System.String' to type 'System.Byte[]'.

Message qui était identique avant la modif... je pense que c'est parce que textbox n'est pas du type "byte" mais comment faire?
Merci de votre aide

MAGICSMACKS[:p]
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
58
Re,
Ah bah, en regardant un peu mieux le code, je dirais que cela vient de la :

   Dim CharArray As Char() = AE.GetString(Ligne).ToCharArray

Si cela ne vient pas de la, il serait utile que tu n'attende pas le X ieme post pour dire sur quelle ligne dans ton code, l'excption se produit. (car normalement, tu doit le savoir).

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
840
Date d'inscription
mercredi 22 octobre 2003
Statut
Membre
Dernière intervention
7 janvier 2009
9
Salut,

Voici 2 solutions pour convertir un fichier ASCII en Unicode:

' 1 : Lire et écrire le fichier texte en spécifiant le codage
Dim MonFichier As String = IO.File.ReadAllText("Fichier ASCII.txt", System.Text.Encoding.ASCII)
IO.File.WriteAllText("Fichier ASCII.txt", MonFichier, System.Text.Encoding.Unicode)

' 2 : Lire le contenu du fichier (en bytes), faire la conversion, réécrire les données dans le fichier
Dim Bytes() As Byte = IO.File.ReadAllBytes("Fichier.txt")
System.Text.Encoding.Convert(System.Text.Encoding.ASCII, System.Text.Encoding.Unicode, Source)
IO.File.WriteAllBytes("Fichier.txt", Bytes)

On peut aussi sans problème faire la conversion entre des strings et des tableaux d'octets de différents codages et vice versa, tout est dans System.Text
Messages postés
128
Date d'inscription
mercredi 21 mai 2003
Statut
Membre
Dernière intervention
8 avril 2008

Merci beaucoup ca marche nickel

MAGICSMACKS[:p]