Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. Visual Basic
  4. probelm on Reading txt file..??

probelm on Reading txt file..??

Scheduled Pinned Locked Moved Visual Basic
questiontestingbeta-testing
14 Posts 4 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • C Offline
    C Offline
    campbells
    wrote on last edited by
    #1

    i'm not sure i did it right, but i think not cause it's not working. I had already save some line in the txt file, where now i trying to retrieve those infomation line by line to the other form. For the for loop section, anyone can tell me am i doing it right? ----- Dim strmw As StreamReader Dim myInputString As String Dim filePath As String = Path.GetDirectoryName(Application.ExecutablePath) & "\save\testing.txt" Dim x, num As Integer Dim respond As MsgBoxResult respond = MsgBox("Load file???", MsgBoxStyle.Question + MsgBoxStyle.YesNo) If respond = MsgBoxResult.Yes Then strmw = File.OpenText(filePath) 'loop the line for different person detail num = strmw.ReadLine() For x = 1 To Val(num) ' write detail in the record x = strmw.ReadLine() wpname(x).Text = strmw.ReadLine() wPP(x).Text = strmw.ReadLine() wcounter(x).Text = strmw.ReadLine() Next form2.PTurn.Text = strmw.ReadLine() 'get whos turn strmw.Close() MsgBox("Loading sucess", MsgBoxStyle.OKOnly) Else: Exit Sub End If

    S G 2 Replies Last reply
    0
    • C campbells

      i'm not sure i did it right, but i think not cause it's not working. I had already save some line in the txt file, where now i trying to retrieve those infomation line by line to the other form. For the for loop section, anyone can tell me am i doing it right? ----- Dim strmw As StreamReader Dim myInputString As String Dim filePath As String = Path.GetDirectoryName(Application.ExecutablePath) & "\save\testing.txt" Dim x, num As Integer Dim respond As MsgBoxResult respond = MsgBox("Load file???", MsgBoxStyle.Question + MsgBoxStyle.YesNo) If respond = MsgBoxResult.Yes Then strmw = File.OpenText(filePath) 'loop the line for different person detail num = strmw.ReadLine() For x = 1 To Val(num) ' write detail in the record x = strmw.ReadLine() wpname(x).Text = strmw.ReadLine() wPP(x).Text = strmw.ReadLine() wcounter(x).Text = strmw.ReadLine() Next form2.PTurn.Text = strmw.ReadLine() 'get whos turn strmw.Close() MsgBox("Loading sucess", MsgBoxStyle.OKOnly) Else: Exit Sub End If

      S Offline
      S Offline
      Steve Pullan
      wrote on last edited by
      #2

      campbells wrote:

      but i think not cause it's not working

      So what's not working about it? Have you traced the code in debug mode to see what is happening? ...Steve 1. quod erat demonstrandum 2. "Give a man a fish and you've fed him for a day. Teach him how to fish and you've fed him for life." I read that somewhere once :-) (Translation: I'll show you the way, but not write the code for you.)

      1 Reply Last reply
      0
      • C campbells

        i'm not sure i did it right, but i think not cause it's not working. I had already save some line in the txt file, where now i trying to retrieve those infomation line by line to the other form. For the for loop section, anyone can tell me am i doing it right? ----- Dim strmw As StreamReader Dim myInputString As String Dim filePath As String = Path.GetDirectoryName(Application.ExecutablePath) & "\save\testing.txt" Dim x, num As Integer Dim respond As MsgBoxResult respond = MsgBox("Load file???", MsgBoxStyle.Question + MsgBoxStyle.YesNo) If respond = MsgBoxResult.Yes Then strmw = File.OpenText(filePath) 'loop the line for different person detail num = strmw.ReadLine() For x = 1 To Val(num) ' write detail in the record x = strmw.ReadLine() wpname(x).Text = strmw.ReadLine() wPP(x).Text = strmw.ReadLine() wcounter(x).Text = strmw.ReadLine() Next form2.PTurn.Text = strmw.ReadLine() 'get whos turn strmw.Close() MsgBox("Loading sucess", MsgBoxStyle.OKOnly) Else: Exit Sub End If

        G Offline
        G Offline
        Guerven
        wrote on last edited by
        #3

        num = strmw.ReadLine() - i assume you have a number on the first line of your textfile For x = 1 To Val(num) - then you read another number and modified x, where x is your loop control counter - the loop itself is pretty much destroyed with the next statement

        **x = strmw.ReadLine()code>**

        **`wpname(x).Text = strmw.ReadLine() wPP(x).Text = strmw.ReadLine() wcounter(x).Text = strmw.ReadLine() Next` you probably need to change your loop control. use `**while .. do .. loop**` instead or you could post a sample of your data(textfile) so we could help you better and probably suggest a working snippet. Marvin N. Guerrero - Taje Kage_bunshinNunJutsU**

        C 1 Reply Last reply
        0
        • G Guerven

          num = strmw.ReadLine() - i assume you have a number on the first line of your textfile For x = 1 To Val(num) - then you read another number and modified x, where x is your loop control counter - the loop itself is pretty much destroyed with the next statement

          **x = strmw.ReadLine()code>**

          **`wpname(x).Text = strmw.ReadLine() wPP(x).Text = strmw.ReadLine() wcounter(x).Text = strmw.ReadLine() Next` you probably need to change your loop control. use `**while .. do .. loop**` instead or you could post a sample of your data(textfile) so we could help you better and probably suggest a working snippet. Marvin N. Guerrero - Taje Kage_bunshinNunJutsU**

          C Offline
          C Offline
          campbells
          wrote on last edited by
          #4

          the game maybe have 1-4 player, so let said in this round have 3 players player:1 NAme:A Position:10 Movestep:2 player:2 NAme:B Position:8 Movestep:2 player:3 NAme:C Position:7 Movestep:2 -- so i was thinking to use the x value to loop 3 times since got 3 player and read 4 line accordinly.... am not sure can it work but i only know a bit on using the readline.

          D 1 Reply Last reply
          0
          • C campbells

            the game maybe have 1-4 player, so let said in this round have 3 players player:1 NAme:A Position:10 Movestep:2 player:2 NAme:B Position:8 Movestep:2 player:3 NAme:C Position:7 Movestep:2 -- so i was thinking to use the x value to loop 3 times since got 3 player and read 4 line accordinly.... am not sure can it work but i only know a bit on using the readline.

            D Offline
            D Offline
            Dave Kreskowiak
            wrote on last edited by
            #5

            This is a really inefficient way of doing this. You'd be better off writing it in a CSV format (commna delimited):

            Name,Age,Sex,Something
            "Amy",17,"F",123456
            "Bobby",18,"M",123456

            This will make it easier to parse and easier to recover from a lightly corrupted file. Better yet, use XML! RageInTheMachine9532 "...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome

            C 1 Reply Last reply
            0
            • D Dave Kreskowiak

              This is a really inefficient way of doing this. You'd be better off writing it in a CSV format (commna delimited):

              Name,Age,Sex,Something
              "Amy",17,"F",123456
              "Bobby",18,"M",123456

              This will make it easier to parse and easier to recover from a lightly corrupted file. Better yet, use XML! RageInTheMachine9532 "...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome

              C Offline
              C Offline
              campbells
              wrote on last edited by
              #6

              ?????? noo... actually thats example only wat i mean is i need to loading those information into some label.text, so that the form can perform some task according to the function.

              D 1 Reply Last reply
              0
              • C campbells

                ?????? noo... actually thats example only wat i mean is i need to loading those information into some label.text, so that the form can perform some task according to the function.

                D Offline
                D Offline
                Dave Kreskowiak
                wrote on last edited by
                #7

                And you didn't create this file? It's comming from an outside source that you don't control? If you did, then my suggestion still stands. It in no way change what you want to do with this in relation to the forms controls. RageInTheMachine9532 "...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome

                C 1 Reply Last reply
                0
                • D Dave Kreskowiak

                  And you didn't create this file? It's comming from an outside source that you don't control? If you did, then my suggestion still stands. It in no way change what you want to do with this in relation to the forms controls. RageInTheMachine9532 "...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome

                  C Offline
                  C Offline
                  campbells
                  wrote on last edited by
                  #8

                  ??nonono i had already create the file here how i save it, so now i want to load the information back. ...................... respond = MsgBox("Save game ???", MsgBoxStyle.Question + MsgBoxStyle.YesNo) If respond = MsgBoxResult.Yes Then strmw = OpenStreamWriter(filePath) strmw.Write(vbCrLf) 'loop all the player status For x = 1 To Val(NumPlayer.Text) ' write detail in the record strmw.WriteLine(String.Format("Player:" & (x), Now)) strmw.WriteLine(String.Format(" Name: " & wpname(x).Text, Now)) strmw.WriteLine(String.Format("position:" & wPP(x).Text, Now)) strmw.WriteLine(String.Format(" MoveStep:" & wcounter(x).Text, Now)) savegamesound() Next strmw.WriteLine(String.Format("whosturn: " & PTurn.Text, Now)) strmw.Close() MsgBox("Game Saved", MsgBoxStyle.OKOnly) Else : Exit Sub End If

                  D 1 Reply Last reply
                  0
                  • C campbells

                    ??nonono i had already create the file here how i save it, so now i want to load the information back. ...................... respond = MsgBox("Save game ???", MsgBoxStyle.Question + MsgBoxStyle.YesNo) If respond = MsgBoxResult.Yes Then strmw = OpenStreamWriter(filePath) strmw.Write(vbCrLf) 'loop all the player status For x = 1 To Val(NumPlayer.Text) ' write detail in the record strmw.WriteLine(String.Format("Player:" & (x), Now)) strmw.WriteLine(String.Format(" Name: " & wpname(x).Text, Now)) strmw.WriteLine(String.Format("position:" & wPP(x).Text, Now)) strmw.WriteLine(String.Format(" MoveStep:" & wcounter(x).Text, Now)) savegamesound() Next strmw.WriteLine(String.Format("whosturn: " & PTurn.Text, Now)) strmw.Close() MsgBox("Game Saved", MsgBoxStyle.OKOnly) Else : Exit Sub End If

                    D Offline
                    D Offline
                    Dave Kreskowiak
                    wrote on last edited by
                    #9

                    Nonononono!!! Since you control writing the file, you're doing it in such a way that makes it easy to write but also makes it very tedious to read it back in. What's up with these Now's?? Since your Format's don't have any parameters, calling Now all the time isn't doing anythis. And using String.Format doesn't benefit you either!

                    strmw.WriteLine(String.Format("Player:" & x, Now)) '?????????

                    If I was in your position, I'd be saving all my Player data into a collection of Player objects. Then you can just serialize the collection out to an XML file and read it back in just as easy.

                    Public Class Player
                    Private _PlayerName As String
                    Private _Position As Integer '? I don't know what data type you're using
                    Private _MoveStep As Integer '? I don't know what data type you're using
                     
                    Public Property PlayerName As String
                    Get
                    Return _PlayerName
                    Eng Get
                    Set(ByVal value As String)
                    _PlayerName = value
                    End Set
                    End Property
                     
                    .
                    . ' Same thing for your other Player properties
                    .
                     
                    Public Sub New()
                    End Sub
                     
                    Public Sub New(ByVal playerName As String, ByVal position As Integer, ByVal moveStep As Integer)
                    Me.PlayerName = playerName
                    Me.Position = position
                    Me.MoveStep = moveStep
                    End Sub

                    Then, to maintain a collection of Players, in an appropriate place in your code:

                    Dim Players() As Player

                    (This is quik and dirty mind you! I'd actually create another class to maintain the Players collection and put the SaveData and LoadData methods in this class). Now, to save your Player data, all you need to do is something like this:

                    Public Sub SavePlayerData()
                    Dim sw As New StreamWriter(Path.Combine(Application.StartupPath, "PlayerData.xml"))
                    Dim xmls As New XmlSerializer(Players.GetType())
                    xmls.Serialize(sw, Players)
                    sw.Close()
                    End Sub

                    To load that data:

                    Public Function LoadPlayerData()
                    Dim sr As New StreamReader(Path.Combine(Application.StartupPath, "PlayerData.xml"))
                    Dim xmls As New XmlSerializer(Players.GetType())
                    Players = CType(xmls.Deserialize(sr), Player())

                    Done! You don't have to do any parsing of lines or data because the Serializer does it all for you! RageInTheMachine9532 "...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome

                    C 1 Reply Last reply
                    0
                    • D Dave Kreskowiak

                      Nonononono!!! Since you control writing the file, you're doing it in such a way that makes it easy to write but also makes it very tedious to read it back in. What's up with these Now's?? Since your Format's don't have any parameters, calling Now all the time isn't doing anythis. And using String.Format doesn't benefit you either!

                      strmw.WriteLine(String.Format("Player:" & x, Now)) '?????????

                      If I was in your position, I'd be saving all my Player data into a collection of Player objects. Then you can just serialize the collection out to an XML file and read it back in just as easy.

                      Public Class Player
                      Private _PlayerName As String
                      Private _Position As Integer '? I don't know what data type you're using
                      Private _MoveStep As Integer '? I don't know what data type you're using
                       
                      Public Property PlayerName As String
                      Get
                      Return _PlayerName
                      Eng Get
                      Set(ByVal value As String)
                      _PlayerName = value
                      End Set
                      End Property
                       
                      .
                      . ' Same thing for your other Player properties
                      .
                       
                      Public Sub New()
                      End Sub
                       
                      Public Sub New(ByVal playerName As String, ByVal position As Integer, ByVal moveStep As Integer)
                      Me.PlayerName = playerName
                      Me.Position = position
                      Me.MoveStep = moveStep
                      End Sub

                      Then, to maintain a collection of Players, in an appropriate place in your code:

                      Dim Players() As Player

                      (This is quik and dirty mind you! I'd actually create another class to maintain the Players collection and put the SaveData and LoadData methods in this class). Now, to save your Player data, all you need to do is something like this:

                      Public Sub SavePlayerData()
                      Dim sw As New StreamWriter(Path.Combine(Application.StartupPath, "PlayerData.xml"))
                      Dim xmls As New XmlSerializer(Players.GetType())
                      xmls.Serialize(sw, Players)
                      sw.Close()
                      End Sub

                      To load that data:

                      Public Function LoadPlayerData()
                      Dim sr As New StreamReader(Path.Combine(Application.StartupPath, "PlayerData.xml"))
                      Dim xmls As New XmlSerializer(Players.GetType())
                      Players = CType(xmls.Deserialize(sr), Player())

                      Done! You don't have to do any parsing of lines or data because the Serializer does it all for you! RageInTheMachine9532 "...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome

                      C Offline
                      C Offline
                      campbells
                      wrote on last edited by
                      #10

                      does it need any loop?? cause wat in my mind is the game maybe have 1-4 player, so let said in this round have 3 players player:1 NAme:A Position:10 Movestep:2 player:2 NAme:B Position:8 Movestep:2 player:3 NAme:C Position:7 Movestep:2 -- so i was thinking to use the x value to loop 3 times since got 3 player and read 4 line accordinly.... am not sure can it work but i only know a bit on using the readline, i never write it in xml b4..not really understand how it work ..

                      D 1 Reply Last reply
                      0
                      • C campbells

                        does it need any loop?? cause wat in my mind is the game maybe have 1-4 player, so let said in this round have 3 players player:1 NAme:A Position:10 Movestep:2 player:2 NAme:B Position:8 Movestep:2 player:3 NAme:C Position:7 Movestep:2 -- so i was thinking to use the x value to loop 3 times since got 3 player and read 4 line accordinly.... am not sure can it work but i only know a bit on using the readline, i never write it in xml b4..not really understand how it work ..

                        D Offline
                        D Offline
                        Dave Kreskowiak
                        wrote on last edited by
                        #11

                        campbells wrote:

                        does it need any loop??

                        Nope. You don't need to worry about how many players are in the file or parsing each and every line. The Serializer takes care of all of this for you. RageInTheMachine9532 "...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome

                        C 2 Replies Last reply
                        0
                        • D Dave Kreskowiak

                          campbells wrote:

                          does it need any loop??

                          Nope. You don't need to worry about how many players are in the file or parsing each and every line. The Serializer takes care of all of this for you. RageInTheMachine9532 "...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome

                          C Offline
                          C Offline
                          campbells
                          wrote on last edited by
                          #12

                          do u have more example or article about this xml thing?

                          1 Reply Last reply
                          0
                          • D Dave Kreskowiak

                            campbells wrote:

                            does it need any loop??

                            Nope. You don't need to worry about how many players are in the file or parsing each and every line. The Serializer takes care of all of this for you. RageInTheMachine9532 "...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome

                            C Offline
                            C Offline
                            campbells
                            wrote on last edited by
                            #13

                            i wonder is i have 3 player i do i read the first line to get how many player at that time??? cause i jsut understand is will recall the player status part but how it know how many times to loop it?

                            D 1 Reply Last reply
                            0
                            • C campbells

                              i wonder is i have 3 player i do i read the first line to get how many player at that time??? cause i jsut understand is will recall the player status part but how it know how many times to loop it?

                              D Offline
                              D Offline
                              Dave Kreskowiak
                              wrote on last edited by
                              #14

                              Your not listening... Doing it using a Serialization method frees you having to loop anything while reading the file. The Serializer takes care of that for you!! All you need to do is check the Bounds of the array to get the number of Players in it after the Players array is recreated. RageInTheMachine9532 "...a pungent, ghastly, stinky piece of cheese!" -- The Roaming Gnome

                              1 Reply Last reply
                              0
                              Reply
                              • Reply as topic
                              Log in to reply
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes


                              • Login

                              • Don't have an account? Register

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Categories
                              • Recent
                              • Tags
                              • Popular
                              • World
                              • Users
                              • Groups