Counting fields in a record
Posted: Sat Jan 30, 2010 2:03 am
I am using the FreeBasic compiler but I suspect that Qbasic techniques would also help me here.
My FB programs currently read in a CSV file that is approximately 300,000 rows by exactly 19 data items per row. I first use a Line Input routine to determine the number of rows and then read the file sequentially into memory where I then do manipulations and save as a new file.
===============
i = 0
OPEN FILENAMECURRENT$ FOR INPUT AS #1
DO WHILE NOT EOF(1)
i = i + 1
LINE INPUT #1, OPTIONLINE$
CHAR1$ = LEFT$(OPTIONLINE$, 1)
IF CHAR1$ = "" THEN EXIT DO
LOOP
CLOSE #1
FINALROWNUMBER_MASTER% = i
OPEN FILENAMECURRENT$ FOR INPUT AS #1
FOR i = 1 TO FINALROWNUMBER_MASTER%
FOR j = 1 TO 19
INPUT #1, WorkingRawArray$(i, j)
NEXT
NEXT
CLOSE #1
======================
My data vendor now tells me that due to extraneous events it is possible that some rows will have 19 items and some will have 20 items. I think I want to do the same line input routine to determine the number of rows but then read each line in one at a time. For rows with 19 items I will add an extra +",DUMMY" value at the end to cause all rows to be the same data item length. I can probably figure that part out myself.
My problem is what would be a good way to determine whether there are 19 or 20 data items in the row?
Any help would be appreciated.
Thanks
dbish
My FB programs currently read in a CSV file that is approximately 300,000 rows by exactly 19 data items per row. I first use a Line Input routine to determine the number of rows and then read the file sequentially into memory where I then do manipulations and save as a new file.
===============
i = 0
OPEN FILENAMECURRENT$ FOR INPUT AS #1
DO WHILE NOT EOF(1)
i = i + 1
LINE INPUT #1, OPTIONLINE$
CHAR1$ = LEFT$(OPTIONLINE$, 1)
IF CHAR1$ = "" THEN EXIT DO
LOOP
CLOSE #1
FINALROWNUMBER_MASTER% = i
OPEN FILENAMECURRENT$ FOR INPUT AS #1
FOR i = 1 TO FINALROWNUMBER_MASTER%
FOR j = 1 TO 19
INPUT #1, WorkingRawArray$(i, j)
NEXT
NEXT
CLOSE #1
======================
My data vendor now tells me that due to extraneous events it is possible that some rows will have 19 items and some will have 20 items. I think I want to do the same line input routine to determine the number of rows but then read each line in one at a time. For rows with 19 items I will add an extra +",DUMMY" value at the end to cause all rows to be the same data item length. I can probably figure that part out myself.
My problem is what would be a good way to determine whether there are 19 or 20 data items in the row?
Any help would be appreciated.
Thanks
dbish