Chris I've had problems with this one too. Here's what I found. If you use the Preserve keyword, you can resize only the last array dimension, and you can't change the number of dimensions at all. For example, if your array has only one dimension, you can resize that dimension because it is the last and only dimension. However, if your array has two or more dimensions, you can change the size of only the last dimension and still preserve the contents of the array. The following example shows how you can increase the size of the last dimension of a dynamic array without erasing any existing data contained in the array. ReDim X(10, 10, 10) . . . ReDim Preserve X(10, 10, 15) My head hurts a little bit - so I won't be able to offer an answer at the moment! I hope this little bit of help can get you to come up with a different solution. Good luck! Martyn Haigh Site Developer The Virgin Cosmetics Company City Fields, Chichester, West Sussex PO20 2FP tel: 01243 622282 The information in this email is confidential and may be legally privileged. It is intended solely for the addressee. Access to this email by anyone else is unauthorised. If you are not the intended recipient, any disclosure, copying, distribution or any action taken or omitted to be taken in reliance on it, is prohibited and may be unlawful. -----Original Message----- From: Chris Marsh [mailto:chris at webbtech.co.uk] Sent: 24 December 2002 12:37 To: thelist at lists.evolt.org Subject: [thelist] [ASP] Dynamically resizing multi-dimensional array Dear all I'm trying to read information from a CSV file and create a multi-dimensional array with it. My code is as follows: Function GetDef() Dim oFSO, oFile, oTSO, sDef Set oFSO = Server.CreateObject("Scripting.FileSystemObject") If Not oFSO.FileExists(Application("PATH_DEFINITION")) Then GetDef = Null Exit Function End If Set oFile = oFSO.GetFile(Application("PATH_DEFINITION")) If oFile.Size = 0 Then GetDef = Null Exit Function End If Set oTSO = oFile.OpenAsTextStream(1, 0) Redim aDefinition(0, 0) Dim sDefRec, aDefRec, iCount Do While Not oTSO.AtEndOfStream sDefRec = oTSO.ReadLine aDefRec = Split(sDefRec, ",") Redim Preserve aDefinition(oTSO.Line - 2, UBound(aDefRec)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ For iCount = 0 To UBound(aDefRec) aDefinition(oTSO.Line - 2, iCount) = aDefRec(iCount) Next Loop GetDef = aDefinition Set oFile = Nothing Set oTSO = Nothing Set oFSO = Nothing End Function I've tested just about everything with response.write, and the only thing that doesn't seem to work is the indicated line. It works in the first pass of the loop, (tried with an Exit Do after the indicated line) but when I try to resize aDefinition after this dynamically, I get a "Subscript out of range" error. I'm having trouble locating a tutorial/article on resizing dynamic arrays, but I assume I'm trying to go about this the wrong way. Can anyone enlighten me? Many thanks, and yuletide greetings or whatnot... Regards Chris Marsh -- * * Please support the community that supports you. * * http://evolt.org/help_support_evolt/ For unsubscribe and other options, including the Tip Harvester and archives of thelist go to: http://lists.evolt.org Workers of the Web, evolt !