This tip comes from Rafeeq
I was in search of an array function like the one below for ASP (being so lazy!),
but I couldn't find one... so I decided to create my own!
This function reads a file line by line and stores each line a dynamic array. First two
object varibles -
fso (file system object)
ts (textfileobject) - are created.
Then I declared an array using
ReDim statement with the size set one.
Now as long as I read from the file, I change the size of the array dynamically without destroying the previous elements and copy the current line read to the current array element.
The final statement returns the myarray object from function
Here's the entire source code listing:
Cool Na! If you've trouble using this code (not for commercial purpose) feel free to drop a line at email@example.com! (For more information on using the FileSystemObject, see the following FAQ: What is the FileSystemObject? For more information on resizing arrays, be sure to visit the FAQ: How can I dynamically resize an array?)
Comment from Bill Wilkinson
For large text files the above script is going to have horrible performance, doing the
ReDim Preserve on every line!
*SO* much better to do:
ReDim Preserve on each line???
Each empty element of an array only eats up 16 bytes of memory, so if the file turned out
to have only 1 line, we are only wasting 16,000 bytes of memory. And even then we only
waste it long enough to run through the loop. We only have to do a
ReDim Preserve --
which is a VERY expensive operation in terms of time it takes and memory it
uses! -- once every 1,000 lines (plus once more at the very end). If you had 1,300 lines in
your file, you just save 1,298
ReDim Preserve calls! A huge performance
Thanks for the comment, Bill! :-)
|Return to user tips...|