• 0

(VB) Read Text File Into a 2 Dimensional Array


Question

I need to read a sequential data file into an array. I'm not where things are going wrong here. I keep getting an error "Input past end of file". I'm pretty certain my text file is good. Anyone tell me what I'm doing wrong? My text books aren't yielding the answers, nor is the internet thus far.

Dim strRecords(6, 5) As String

Dim product_list As String

Dim ProductList As Integer

Dim dataFile As String

Dim row As Integer

Dim col As Integer

dlgCommon.Filter = "DAT|*.dat|Text|*.txt|All|*.*"

dlgCommon.ShowOpen

product_list = dlgCommon.FileName

ProductList = FreeFile

Open product_list For Input As #1

Do Until EOF(1)

For row = 1 To 6

For col = 1 To 5

Input #1, strRecords(row, col)

Next col

Next row

Loop

And the text file...

"L666","SURGE PROTECTOR","PC KING",3.30,160,"N"<CR>

"M013","MS MOUSE","MEMORY-REX",23.22,28,"N"<CR>

"H013","20 GB HARD DISK","MICRO SHOP",190.90,18,"N"<CR>

"L005","17'' MONITOR","KING",205.00,4,"N"<CR>

"M713","56K BAUD MODEM","MEMORY-REX",99.00,88,"N"<EOF>

Thanks,

~D

5 answers to this question

Recommended Posts

  • 0
  MrA said:
Why aren't you using a structure to hold your data instead of a 2D array.  Also, items 4 & 5 of each line are numbers, not strings.  That may cause you some problems later (or maybe now).

585015640[/snapback]

Could you clarify your question. Are you asking why I am not using a structure or why I am not using a 2D array?

I know for this assignment I must use an array. I understand the concept of the array and how information is read into it. I just can't get information read into it. heh..

Also, I adjusted the text file making everything strings. I'll validate the numbers as needed.

  • 0
  deck said:
Could you clarify your question.  Are you asking why I am not using a structure or why I am not using a 2D array?

I know for this assignment I must use an array.  I understand the concept of the array and how information is read into it.  I just can't get information read into it. heh..

Also, I adjusted the text file making everything strings.  I'll validate the numbers as needed.

585015699[/snapback]

I'm asking why you are using a 2D array. You could define a structure and make a 1D array of that structure.

Type MyStruct
    Item1 as String
    Item2 as String
    Item3 as String
    Item4 as Single
    Item5 as Integer
    Item6 as String
End Type

Dim myArray(5) as MyStruct

Get rid of the DO LOOP. It will cause problems. Or you could change the loop to:

Dim i as Integer
i = 1
Do Until EOF(1)
  For col = 1 To 6
    Input #1, strRecords(col, i)
  Next
  i = i + 1
Loop

At then end of your data file, put:

"M713","56K BAUD MODEM","MEMORY-REX",99.00,88,"N"&lt;CR&gt;
&lt;EOF&gt;

  • 0

What is the "Input #" line storing in each string? Is it reading the entire line or is it stopping at each comma-delineated element?

For example:

Line 1 = "L666","SURGE PROTECTOR","PC KING",3.30,160,"N"

What does strRecords(1,1) equal?

Either: "L666","SURGE PROTECTOR","PC KING",3.30,160,"N"

Or: "L666"

  • 0
  DrZoidberg said:
What is the "Input #" line storing in each string?  Is it reading the entire line or is it stopping at each comma-delineated element?

For example:

Line 1 = "L666","SURGE PROTECTOR","PC KING",3.30,160,"N"

What does strRecords(1,1) equal?

Either: "L666","SURGE PROTECTOR","PC KING",3.30,160,"N"

Or: "L666"

585015945[/snapback]

I want it to read the entire line.

THEN, I want that line to be searchable using only the first field (L666). So I read the records into the array then search the first field of each of those records for the one I want.

I was able to get my array working... sort of... now I'm working on searching it.

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Yeah they will set the print spooler service to disabled.
    • I personally only have a Windows PC for gaming. It is an expensive console. If I did not play DCS and MS flightsim I would be a PlayStation user. For non-gaming I have moved over to the Mac some years ago and I will not be moving off of it, as I like and use the Apple ecosystem quite a bit. (Mac's, phone, watch, Air pods, Apple TV, Apple Music, iPad etc). I would love to run Linux on my gaming PC and still be able to play all of my games on it, but it is still not there.
    • It is nothing more than a gaming PC with an Xbox sticker. If you follow the beta channels for Windows 11 on reddit and other places, the Windows 11 Xbox app has gotten some big changes. In fact just days before then announced their handheld PC, users could see their full gaming library in the updated Xbox app for Windows 11. Xbox console only games were in that list for the first time. Of course you can only play them if you stream them with a GPU subscription. You can call it want you want, but Xbox is leaving the traditional console market. They lost and they are moving on. For gamers that do NOT want to deal with a Windows PC, for lots of reasons, even ones that boot into the Xbox app, and prefer ease and cost of consoles, they will just move to PlayStation as time goes on. All but two of those games in that latest Xbox show, were coming to PS day one. The two that were not, are probably just times exclusives. Microsoft spent almost 100 billion on gaming publishers, that had multiple studios/games in the hopes it would get people to jump on the Xbox Console wagon/Game Pass Subs. It simply did not happen and just over a year after buying AB, they started porting games to the PS to see if it would make money. Now that can port them fast enough. The investors want ROI on that 100 billion, they are getting via Microsoft/Xbox being a 3rd party game publisher.
    • Multi-million? They are almost half a trillion in market cap. Yeah, the one thing I hate the most about Windows 11 is the lack of options. Also, the recommended apps section of Windows XP worked perfectly, one of my favorite features of that OS. For once, I didn't have to spend time customizing the Start Menu if I didn't want to. I have no idea how they can take such a gracefully simple feature and ruin it with the nonsense that is the modern recommended section.
  • Recent Achievements

    • Week One Done
      slackerzz earned a badge
      Week One Done
    • Week One Done
      vivetool earned a badge
      Week One Done
    • Reacting Well
      pnajbar earned a badge
      Reacting Well
    • Week One Done
      TBithoney earned a badge
      Week One Done
    • First Post
      xuxlix earned a badge
      First Post
  • Popular Contributors

    1. 1
      +primortal
      673
    2. 2
      ATLien_0
      285
    3. 3
      Michael Scrip
      223
    4. 4
      +FloatingFatMan
      195
    5. 5
      Steven P.
      139
  • Tell a friend

    Love Neowin? Tell a friend!