mlcktmguy
asked on
'Out of String Space' Error, what to do?
I am getting "error 14, Out of string space' from my VB app. I do have several large tables and forms in the app. What are the limits of 'string' space in a VB app. Is it possible to control, expand or even monitor them beyond the task manager memory usage monitor.
I am running Window XP. I am not an OS guy but on a very high level I thought that the operating system would aquire wahtever resources it needs to satisfy a given applications memory requirements. Event to the point of using available hard drive space, which would obviously severely slow down the app but still enable it to run.
I am running Window XP. I am not an OS guy but on a very high level I thought that the operating system would aquire wahtever resources it needs to satisfy a given applications memory requirements. Event to the point of using available hard drive space, which would obviously severely slow down the app but still enable it to run.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
By way of explanation: I have heard that VB isn't very good about recovering string space. The example referenced in the article, where it does "MyString = MyString & MyString" in a loop 100 times kills the program demonstrates (apparently) that every time you save the new string, it goes and gets some a new piece of heap space but doesn't seem to recover the old space.
pelegst
In bingie's link:
MyString = "Hello"
For Count = 1 To 100
MyString = MyString & MyString
Next Count
If the computer managed to get to 100, MyString would be 5*(2^100) characters long. It would need more memory to store the string than exisits in the world! It doesn't demonstrate that the old space isn't recovered.
In bingie's link:
MyString = "Hello"
For Count = 1 To 100
MyString = MyString & MyString
Next Count
If the computer managed to get to 100, MyString would be 5*(2^100) characters long. It would need more memory to store the string than exisits in the world! It doesn't demonstrate that the old space isn't recovered.
5,764,607,523,034,234,880 terabytes (plus 10 bytes), to be exact.
Good ol' Microsoft, lol...
From MSDN:
>> There are two kinds of strings: variable-length and fixed-length strings.
>> A variable-length string can contain up to approximately 2 billion (2^31) characters.
>> A fixed-length string can contain 1 to approximately 64K (2^16) characters.
-Burbble
Good ol' Microsoft, lol...
From MSDN:
>> There are two kinds of strings: variable-length and fixed-length strings.
>> A variable-length string can contain up to approximately 2 billion (2^31) characters.
>> A fixed-length string can contain 1 to approximately 64K (2^16) characters.
-Burbble
ASKER
Interesting. How do I define my strings to ensure that they are variable length? Typically to define a string in a module I use:
Dim VarA as String
I understand that in UDT's I associate with file handling they must be fixed length. I define those as:
Public Type defstrat
ECode As String * 7
ACode As String * 7
DefStrategy As String * 50
crlf As String * 2
End Type
Is there more to it than that? What if I define my Stirngs as variant instead of String?
Dim VarA as String
I understand that in UDT's I associate with file handling they must be fixed length. I define those as:
Public Type defstrat
ECode As String * 7
ACode As String * 7
DefStrategy As String * 50
crlf As String * 2
End Type
Is there more to it than that? What if I define my Stirngs as variant instead of String?
You are correct:
Dim VarA as String
would define VarA as a variable length string.
Idle_Mind
Dim VarA as String
would define VarA as a variable length string.
Idle_Mind
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
I just found out that one of the users that is experiencing the 'Out of String' error is running XP Pro with Service Pack 2 installed. I do not have Service Pack 2 on any of my machines and the app runs without error. Does anyone know if Service Pack 2 could be the culprit. Specifically does it mess with memory management? I read through the write-ups and didn't see anything in it that should cause an issue with this single user, standalone app. However I have heard numerous horror stories from those that installed, that's why I have not.
I am running Win XP Pro w/ SP2 and have not yet encounterd any problems with VB6. (That doesn't mean it's not the problem though...)
Idle_Mind
Idle_Mind
Debug.Print Len(sMyString)