From: argusy@slmember.on.net   
      
   Now I've seen your example, I was right in thinking you were getting a couple   
   or   
   three CrLfs at the end of your file.   
      
   could try   
   dim falsecount as long   
      
      
    ' Copy the data into the array.   
    For R = 0 To num_rows   
    ' air code!! I think it would count the crlf as two   
    if len(lines(R)) < 3 then ' could be zero   
    the_array(R) = Split(lines(R), ",")   
    falsecount = falsecount + 1   
    endif   
    Next R   
    'air code again!! I think this is how to do it   
    redim preserve array(num-rows - falsecount)   
      
      
   Argusy   
      
      
   Paul M. Cook wrote:   
   > "Steve Gerrard" wrote in message   
   > news:UJWdnVVt0dMNVWLeRVn-qQ@comcast.com...   
   >   
   >>"Paul M. Cook" wrote in message   
   >>news:w1NLf.92$pE4.64@trnddc04...   
   >>   
   >>>Let's say you have a CSV file and you load it into a variant array using   
   >>   
   > the   
   >   
   >>>split function on VBCrLF. Then you load a variable with the line count   
   >>   
   > and   
   >   
   >>>loop through the array for 0 to line count. This works well unless you   
   >>   
   > have   
   >   
   >>>blank lines at the end of the CSV file. Now if you process the loop,   
   >>   
   > you'll   
   >   
   >>>get an out of bounds subscript at the end of the loop because you are   
   >>>referencing null values at the end of the variant array.   
   >>>   
   >>>How would you go about stripping the extraneous CRLFs from the end of   
   >>   
   > the   
   >   
   >>>file?   
   >>>   
   >>   
   >>If it is just an out of bounds subscript, then use UBound(MyArray) instead   
   >   
   > of   
   >   
   >>the line count. That will tell you how many actual array entries you have.   
   >>   
   >>   
   >   
   >   
   > Here is some of the code:   
   >   
   >   
   > Dim whole_file As String   
   > Dim lines As Variant   
   > Dim the_array() As Variant   
   >   
   >   
   > Open InDirPath For Input As #1   
   >   
   > ' Load the file into a memory string   
   >   
   > whole_file = Input$(LOF(1), 1)   
   >   
   > Close #1   
   >   
   > ' Break the file into lines.   
   > lines = Split(whole_file, vbCrLf)   
   >   
   > ' Dimension the array.   
   > num_rows = UBound(lines)   
   > ReDim the_array(num_rows)   
   >   
   > ' Copy the data into the array.   
   > For R = 0 To num_rows   
   > the_array(R) = Split(lines(R), ",")   
   > Next R   
   >   
   >   
   > In my case, num_rows will include a count representing the extra CRs at the   
   > end of the file. So if the file looks like this:   
   >   
   > 1234,abcd,9876   
   > 2334,kjkjk,0008   
   >    
   >    
   >   
   > Then num_rows will be 4.   
   >   
   >   
   >   
      
   --- SoupGate-Win32 v1.05   
    * Origin: you cannot sedate... all the things you hate (1:229/2)   
|