複雑なコードがありますが、要約すると、次のようになります。
RecordSet
名前付きrstRecords
;
という名前のグローバルstring
変数StrLetters
。;を実行するたびに内容を持つという名前
のstring
変数。
A. _StrText
different
loop
While Loop
loop
が に行くたびにnext
、それはAdd more content to the string StrLetters
. お気に入り:
Do While Not rstRecords.EOF
'Codes Here
Here I call a method named FeedLetter, that has lot of codes but also feed this string
Loop
Private Sub FeedLetter()
'Lot of code
'And Here I feed that string
StrLetters = StrLetters + StrText
End Sub
多数のレコードがあり、マウスを変数の上に置くと、StrLetters
このツールチップが表示されます<Out Of Memory>
。そして、次のエラー、String Out of Space
.
Theloop
が終わると、メソッドは の値を使用StrLetters
して紙に出力します。
VB6
変数にMax Lengh Value
.
これを回避する方法を知りたいのですが...
アップデート
ここでエラーが発生しています ( cStringBuilderClass
Dave による方法)。
電話する:
Buffer.CapacityIncrement = Len(strIncommingContent)
Buffer.Append (strIncommingContent)
ここでエラーが発生します:
Public Sub EnsureCapacity(ByVal lngMinimum As Long)
Dim lngDiff As Long
If ((m_lngCapacity < lngMinimum) And (lngMinimum > 0)) Then
' If current capacity isn't enough, then figure out how many capacity increments you need to meet
' the given minimum
lngDiff = lngMinimum - m_lngCapacity
If (lngDiff < m_lngCapacityIncrement) Then
' The If...ElseIf... is quicker than the math in the ElseIf
lngDiff = m_lngCapacityIncrement
ElseIf (lngDiff > m_lngCapacityIncrement) Then
' Note that the division is using \ operator instead of /. \ truncates decimal part
lngDiff = ((lngDiff \ m_lngCapacityIncrement) + 1) * m_lngCapacityIncrement
End If
m_str = m_str & String$(lngDiff, vbNullChar)
m_lngCapacity = (m_lngCapacity + lngDiff)
End If
End Sub