Conversion ascii

Résolu
magicsmacks Messages postés 128 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 8 avril 2008 - 26 févr. 2008 à 12:37
magicsmacks Messages postés 128 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 8 avril 2008 - 27 févr. 2008 à 19:16
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]
A voir également:

8 réponses

Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
27 févr. 2008 à 16:30
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
3
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
26 févr. 2008 à 13:28
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
0
magicsmacks Messages postés 128 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 8 avril 2008
26 févr. 2008 à 13:57
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]
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
26 févr. 2008 à 14:39
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
magicsmacks Messages postés 128 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 8 avril 2008
26 févr. 2008 à 16:51
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]
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
26 févr. 2008 à 17: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
0
Kevin.Ory Messages postés 840 Date d'inscription mercredi 22 octobre 2003 Statut Membre Dernière intervention 7 janvier 2009 11
27 févr. 2008 à 05:09
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
0
magicsmacks Messages postés 128 Date d'inscription mercredi 21 mai 2003 Statut Membre Dernière intervention 8 avril 2008
27 févr. 2008 à 19:16
Merci beaucoup ca marche nickel

MAGICSMACKS[:p]
0
Rejoignez-nous