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)
and ts
(textfileobject) - are created.
Set fso = CreateObject("Scripting.FileSystemObject")
|
Then I declared an array using ReDim
statement with the size set one.
reDim myarray(0)
|
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 File(filename)
.
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 rafeeqce@myiris.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:
|
But 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
advantage!
Thanks for the comment, Bill! :-)
Happy Programming!
Return to user tips... |