VB 字符串数组最大容量

2025-05-10 13:55:02
推荐回答(5个)
回答1:

1)VB6.0中关于String数据类型的说明如下:

字符串有两种:变长与定长的字符串。

*变长字符串最多可包含大约 20 亿 ( 2^31)个字符。
*定长字符串可包含 1 到大约 64K ( 2^16 ) 个字符。

2)VB读入大容量文本文件到富文本框,采取用二进制方法一次读入全部字节,再用StrConv函数根据系统的缺省码页将字符串转成 Unicode,显示与富文本框控件。

3)即使是逐行读入也应该先读到变量,再用可显示控件显示,不然读取速度大大降低。

StrConv 函数,返回按指定类型转换的 Variant (String)。

实现代码如下:

Private Sub Command16_Click()
    Dim strWj As String
    Dim strj() As String
    Dim aryContent() As Byte
    Dim i As Long
    Dim j As Long
    CommonDialog1.CancelError = True ' 设置“CancelError”为 True
    On Error GoTo ErrHandler
    CommonDialog1.Flags = cdlOFNHideReadOnly    ' 设置标志
    ' 设置过滤器
    CommonDialog1.Filter = "All Files (*.*)|*.*|Text Files" & "(*.txt)|*.txt|Batch Files (*.bat)|*.bat"
    CommonDialog1.FilterIndex = 2    ' 指定缺省的过滤器
    CommonDialog1.ShowOpen    ' 显示“打开”对话框
    ' 显示选定文件的名字
    'MsgBox CommonDialog1.FileName
    Open CommonDialog1.FileName For Binary As #1
        ReDim aryContent(LOF(1) - 1)
        Get #1, , aryContent
    Close #1
    strWj = StrConv(aryContent, vbUnicode)
    RichTextBox1 = strWj
    Exit Sub
ErrHandler:
    ' 用户按了“取消”按钮
    Exit Sub
End Sub

回答2:

一个字符最长大概20亿(即2^31)字节
如果数组里有很个字符变量,按理讲是可以的

回答3:

在Windows中,字符串最大可以存储2^31个字节(2^31=2147483648b=2147483Kb=2147Mb=2Gb =表示近似值)
但是在VB中的字符型变量只能存储65535个字节,同样一个一维的字符串数组(数组也是变量,不过是数组变量罢了)也只能存储65535个字节,也就是65.535Mb,所以不能存储300M的字符。

回答4:

没有问题的。

变长字符串最多可包含大约 20 亿 ( 2^31)个字符。
定长字符串可包含 1 到大约 64K ( 2^16 ) 个字符。
1.字符串是一个字符序列,必须用双引号括起来 2.说明:
双引号为分界符,输入和输出时并不显示。 字符串中包含字符的个数称为字符串长度。 长度为零的字符串称为空字符串,比如“”,引号里面没有任何内容 字符串中包含的字符区分大小写。
字符串可分为变长字符串和定长字符串两种。
3.VB字符串分为两种:变长字符串,定长字符串。
变长字符串的长度是不确定的,可以从0~2^31,约21亿个字符。 定长字符串有确定个数的字符,最大长度不超过2^16个字符。
4.举例: (1)“Hello” “12345”
(2)变长字符串(长度为字符串长度) 例:dim a as string a="123" a="456789“

回答5:

按你描述:一行一行的,溢出等等,非常肯定说你是把读到的每一行加到一个字符变量里,然后这个变量就越来越大。 如果真是这样的话,原因就在这里了!

如果仅仅读300M到内存,那是很快的。
vb字符串可以容纳的字符数绝对超过你机器的内存!

Sub test()
Dim s As String
s = String(1024& * 1024 * 300, 0) ‘300M
Debug.Print Len(s)
End Sub

vb字符串 "每次" 分配单元不宜超过64K,尽量要减少分配内存的次数。要么一次读入(get),要么一行一行读入(line input)数组然后join。