[vb.NET] Text bestand regels inlezen

Pagina: 1
Acties:
  • 236 views sinds 30-01-2008
  • Reageer

  • Jay-P
  • Registratie: Oktober 2003
  • Laatst online: 04-06 00:39
Ik probeer om een text bestand regel voor regel in te lezen. Komend van VBA vond ik dit erg simpel maar in vb.NET krijg ik het niet voor elkaar. De code die ik heb geschreven geeft me twee problemen:

- Niet alle regels worden ingelezen, hij slaat sommige regels over(niet echt een vast patroon in te vinden), bijv. regels 1,3,4,7,8 etc. etc.
[edit] - nee, niet goed gecheckt, hij slaat om elke regel eentje over.
- Hij slaat bepaalde tekens als "É" en "Á" over

Wat betreft het eerste probleem heb ik geen idee waar het aan ligt, het tweede probleem, ben ik al achter, is dat hij een andere encoding nodig heeft waarbij ik niet weet hoe ik die moet aanroepen.

Dim rFile As System.IO.StreamReader
ik weet dat ik met het streamreader object een ander encoding moet toewijzen, maar hoe dat te doen. Ik ben van huis uit VBA gewend, en ik mis gewoon nog sommige beginselen, so be gentle ;)


code:
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
    Private Sub SelectSaveGame_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles SelectSaveGame.Click

        Dim i As Int16
        Dim rFile As System.IO.StreamReader

        Dim arrTeam() As String

        SelectSaveGame1.Filter = "Cyanide Savegames|*.cdb"
        SelectSaveGame1.Title = "Select your CDB savegame....."

        If SelectSaveGame1.ShowDialog = Windows.Forms.DialogResult.OK Then

            SaveGame.Text = SelectSaveGame1.FileName.Substring(SelectSaveGame1.FileName.LastIndexOfAny("\") + 1)
            My.Settings.SaveGamePath = SelectSaveGame1.FileName

            CommandsSuffix = "-export " & SelectSaveGame1.FileName & " C:\"
            ShellAndWait.ShellandWait(Application.StartupPath & "\Teamnames.exe")

            Me.SelectTeam.Items.Clear()
            rFile = System.IO.File.OpenText("C:\DYN_Team.txt")

            While rFile.Peek >= 0

                arrTeam = rFile.ReadLine.Split("|")
                Console.WriteLine(rFile.ReadLine)

                If arrTeam(1) <> "gene_sz_name" And arrTeam(1) <> "-" Then
                    Me.SelectTeam.Items.Add(i)
                    Me.SelectTeam.Items.Item(i) = arrTeam(1)

                    i = i + 1
                End If

            End While
        End If

    End Sub


het text bestand ziet er zo uit:
code:
1
2
3
4
5
6
7
8
9
IDteam|gene_sz_name|gene_sz_abbreviation|gene_tgaID_jersey
1|CAISSE D'EPARGNE - ILLES BALEARS|CEI|1900
2|NATURINO - SAPORE DI MARE|NSM|1908
3|AG2R PRÉVOYANCE|A2R|1916
4|COFIDIS, LE CRÉDIT PAR TÉLÉPHONE|COF|1924
6|FRANÇAISE DES JEUX|FDJ|1940
7|SPIUK - EXTREMADURA|SPI|1948
8|KAIKU|KAI|2180
.........etc.

[ Voor 9% gewijzigd door Jay-P op 19-11-2006 02:22 ]


  • Jay-P
  • Registratie: Oktober 2003
  • Laatst online: 04-06 00:39
PROBLEEM OPGELOST

heb oplossing al gevonden, blijkt altijd simpeler dan gedacht 8)7


ter referentie:

-eerste probleem zat hem natuurlijk in de dubbele readline die automatisch de volgende regel gebruikt
code:
1
2
arrTeam = rFile.ReadLine.Split("|")
Console.WriteLine(rFile.ReadLine)


-tweede probleem opgelost met een for each loop en readalllines, al begrijp ik de getencoding(1252) niet maargoed, als iemand hier wat info over heeft hoor ik het wel graag btw 8) :
code:
1
For Each Regel In System.IO.File.ReadAllLines("C:\DYN_Team.txt", System.Text.Encoding.GetEncoding(1252))

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
over Encoding.GetEncoding( Int32 ) kan je alles vinden in de msdn. http://msdn2.microsoft.com/en-us/library/wzsz3bk3.aspx

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • whoami
  • Registratie: December 2000
  • Laatst online: 18:04
Ivm die encoding: je moet gewoon aan je stream-reader meegeven welke encoding hij moet gebruiken. indien je dat niet doet, kan je idd bepaalde tekens niet goed uitlezen.
In de MSDN staat er wel dat, indien je die encoding niet meegeeft, er automatisch de default encoding meegegeven wordt, maar mijn ervaring leert dat dit niet het geval is.

https://fgheysels.github.io/