VB 字符串数组最大容量 100
一个一维的字符串数组,最多能容量多少大小的字符呢?比如能否容纳得下300M的字符呢?我亲自测试了一个3百多M的txt文件,用Open语句一行一行地顺序读入,读了6个小时才...
一个一维的字符串数组,最多能容量多少大小的字符呢?比如能否容纳得下300M的字符呢?
我亲自测试了一个3百多M的txt文件,用Open 语句一行一行地顺序读入,读了6个小时才读了50M,那这样测试,要读完3百M,那么得36个小时?光读取文件就要花两天时间?
好像大于几十M之后,就内存溢出了,好像没法达到理论上的2G的。
大家怎么看待?
也就是说,处理大容量的txt时,有什么好办法?但是后台调用Word来处理,肯定行! 展开
我亲自测试了一个3百多M的txt文件,用Open 语句一行一行地顺序读入,读了6个小时才读了50M,那这样测试,要读完3百M,那么得36个小时?光读取文件就要花两天时间?
好像大于几十M之后,就内存溢出了,好像没法达到理论上的2G的。
大家怎么看待?
也就是说,处理大容量的txt时,有什么好办法?但是后台调用Word来处理,肯定行! 展开
6个回答
展开全部
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
展开全部
一个字符最长大概20亿(即2^31)字节
如果数组里有很个字符变量,按理讲是可以的
如果数组里有很个字符变量,按理讲是可以的
追问
你是说,一个VB字符串变量最大长度达到20亿字节,也就是约1900M?
那么字符串数组的最大容量,就远远是1900M的n多倍了?
追答
是的,数组里是所有字符变量的总和,只要你内存够大,存多少都可以
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在Windows中,字符串最大可以存储2^31个字节(2^31=2147483648b=2147483Kb=2147Mb=2Gb =表示近似值)
但是在VB中的字符型变量只能存储65535个字节,同样一个一维的字符串数组(数组也是变量,不过是数组变量罢了)也只能存储65535个字节,也就是65.535Mb,所以不能存储300M的字符。
但是在VB中的字符型变量只能存储65535个字节,同样一个一维的字符串数组(数组也是变量,不过是数组变量罢了)也只能存储65535个字节,也就是65.535Mb,所以不能存储300M的字符。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没有问题的。
变长字符串最多可包含大约 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“
变长字符串最多可包含大约 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“
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
按你描述:一行一行的,溢出等等,非常肯定说你是把读到的每一行加到一个字符变量里,然后这个变量就越来越大。 如果真是这样的话,原因就在这里了!
如果仅仅读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。
如果仅仅读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。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询