Problème avec classe StreamReader en VB.Net

gaybarre Messages postés 11 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 9 juillet 2004 - 8 juil. 2004 à 12:21
allopeck Messages postés 23 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 3 décembre 2007 - 27 nov. 2007 à 09:41
Bonjour,

Je rencontre un problème en voulant lire un fichier texte.
Mon code est le suivant :

Sub Main()
Dim sr As New StreamReader("c:\test.txt")
Dim ch As String

ch = sr.ReadLine()
End Sub

Simple, n'est-ce pas ?

Je lis la première ligne de mon fichier test et je l'écris dans ch. Tout va bien tant que cette ligne ne contient pas le caractère "°" (mais je suppose que ça le fait aussi avec d'autres trucs un peu bizarres). Dans ce cas, la ligne est lue, mais le caractère ° est invisible. Et si je demande :

Console.Write(ch.IndexOf("°"))

j'obtiens un magnifique -1. Comme quoi, il ne le voit pas du tout.

Qq'un a-t-il déja été confronté au problème ? Si vous pouvez m'aider... Merci d'avance

3 réponses

cs_RedDog Messages postés 50 Date d'inscription lundi 7 avril 2003 Statut Membre Dernière intervention 21 août 2013
8 juil. 2004 à 19:01
Et ouais, ce sont les risques du métier, être un StreamReader...

Il le voit pas. En tout cas comme tu fais.

Fais comme ça, ça résoudra ton problème:

Dim enc As System.Text.Encoding
Dim sr As New System.IO.StreamReader("f:\test.txt", enc.Default)
Dim ch As String

ch = sr.ReadLine()
Console.WriteLine(ch)
Console.Write(ch.IndexOf("°"))


Retourne:

bbbbbbbbbbbbbbbbbllllllllllrrrrrrrmmmmmmmmmeeeeeeeee°iiiuuuuuuuttttttt //:!§§§§§§§§§§§!!!!!!!!:::::::::ù%% ' Le contenu de la première ligne du fichier
52 ' ch.IndexOf("°")


J'ai utilisé un codage ANSI (Default) afin de tout voir :)
0
gaybarre Messages postés 11 Date d'inscription mardi 21 janvier 2003 Statut Membre Dernière intervention 9 juillet 2004
9 juil. 2004 à 08:40
Super, ça marche.

C'était tout simple, mais encore fallait-il le savoir.
Merci beaucoup.
0
allopeck Messages postés 23 Date d'inscription lundi 16 janvier 2006 Statut Membre Dernière intervention 3 décembre 2007
27 nov. 2007 à 09:41
Bonjour,


Voila j'ai crée un scrip en VBnet pour créer un scrip autocad à partir d'un fichier texte1. Le problème et que lorsque que j'ouvre ce script (crée avec VB = fichier texre2)sous autocad il me dit qu'il y a le caractère suivant :"I»¿" alors que je le vois nul par dans mon fichier txt2 et 1.
Ensuite je veux également mettre ce fichier texte2 dans access et la il me met sur la première ligne le caractère suivant :"°"?
j' ai essayé le code ci dessus mais je n'ai pas réussi!!
Est ce que quelqu'un peut m'aider ? s'il vous plait?
merci
voici mon code :


Public
Class Form1



Dim
filereader3

As
System.IO.StreamReader




Dim
x, c, d, f, j, donne

As



String


 








Private



Sub
Button1_Click(

ByVal
sender

As
System.Object,

ByVal
e

As
System.EventArgs)

Handles
Button1.Clickfilereader3 =


My
.Computer.FileSystem.OpenTextFileReader(

"c:\test.txt"
)/ OUVRE LE FICHIER TEXTE 1donne =


""






While



Not
filereader3.EndOfStream / TANT QU' ON EST PAS A LA DERNIERE LIGNE IL CONTINUE 0 LE PARCOURIR


'Dim enc As System.Text.Encoding






'Dim sr As New System.IO.StreamReader("c:\test.txt", System.Text.Encoding.Default)






'Dim ch As String






' ch = sr.ReadLine()






' Console.WriteLine(ch)






' Console.Write(ch.IndexOf("°"))






' MsgBox(ch)

x = filereader3.Read


c = Mid(x, 1, 9)


d = Mid(x, 11, 10) / RECUPERE LES DONNEES QUI MINTERRESSE


j = Mid(x, 22, 1)


f = Mid(x, 27, 1)


 


 







If
j = 1

And
f = 1

Then

donne = donne +




"circle"
+

" "
+ c +

","
+ d +

" "
+

"1.1"
+ vbNewLine / INSERT LES DONNEES AVEC LES COMMANDES AUTOCAD


End



If






If
j = 1

And
f = 2

Then

donne = (donne +




"square"
+

" "
+ c +

","
+ d +

" "
+

"1.1"
+ vbNewLine)


End



If






End



While

EcrireFichier()


Close()







End



Sub






Private



Sub
EcrireFichier()


Dim
filewriter

As
System.IO.StreamWriterfilewriter =


My
.Computer.FileSystem.OpenTextFileWriter(

"c:\tt.txt"
,

False
)/ ECRIT LES LIGNES COMMANDE AUTOCAD AVEC LES DONNEES FICHIER TEXTE 2filewriter.Write(vbCrLf + donne)

filewriter.Close()


End



Sub





  help me !
0
Rejoignez-nous