String类型最大可以存储多少数据

fjy101 2000-12-26 04:27:00
...全文
2004 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Phoenix2000 2000-12-30
  • 打赏
  • 举报
回复
Delphi 编译器有一个选项叫做“Huge Strings”,也就是巨型字符串,如果这个选项被打开,那么 Delphi 就将 String 类型自动视为 AnsiString 类型(AnsiString 类型是 32 位的 Delphi 编译器新增加的类型);否则的话,String 与过去老的 Pascal 语言的 String 是一样的(Delphi 中还定义了 ShortString 类型,与老的 Pascal 中的 String 完全一样)。理论上新的 AnsiString 可以存储 4GB 大小的内容,但是事实上这是不可能的。因为 Windows 9x 为每个应用程序提供最大 4GB 的连续虚拟内存空间,而这 4GB 空间中有一半被操作系统保留用作缓冲池,应用程序是不能访问的。所以实际上最大可用内存只有 2GB 。而 Delphi 的 AnsiString 类型变量除了因兼容老式的 String 而保留第一个字节为(象征性的)长度字节外,还有一个负的偏移地址,因此 AnsiString 类型事实上是一个指向可变长度内存块的指针,也就是指向字符串的指针。它的负偏移地址最大不能超过 2GB 的寻址范围。所以,出于超大容量信息处理,推荐使用 C/C++ 的空终结字符数俎(也就是 C/C++ 的“字符串”)。很多人说 Object Pascal 的字符串处理速度比 C/C++ 的空终结字符数俎要快,因为不必对字符数组的每一个字符以及‘\0’进行扫描处理,其实并不完全是这样。
GoodHope 2000-12-29
  • 打赏
  • 举报
回复
略小于2GB(估计差8个字节)
The_east_key 2000-12-29
  • 打赏
  • 举报
回复
建议您访问www.etechbase.net/tech,里面有很多资料,也许可以解决您的问题。
访问http://168.168.18.11:81/etechbase/advsearch.php将您的问题输入查询内容框,选择不同的精确程度,即可以找到你所需要的答案。效果还是可以的。
kingofwang 2000-12-26
  • 打赏
  • 举报
回复
ansistring是BCB里对应delphi里的string的,可以找到它的源码查查看。
comanche 2000-12-26
  • 打赏
  • 举报
回复
你也可以打 String 在帮助中得到这个对照表
comanche 2000-12-26
  • 打赏
  • 举报
回复
看看这, 我所知最早的 String是原于Pascal, 那时只能存255个字,第一字节是长度,Delphi下的String 已经被改进,虽然它还保留原始的特点,可以肯定的是可以到4G!! 不过我还是不用String, 我用AnsiString, 下面表格中指出它就是 AnsiString类型的

Delphi Size/Values C++ implementation Implementation

ShortInt 8-bit integer signed char typedef
SmallInt 16-bit integer short typedef
LongInt 32-bit integer int typedef
Byte 8-bit unsigned integer unsigned char typedef
Word 16-bit unsigned integer unsigned short typedef
Integer 32-bit integer int typedef
Cardinal 32-bit unsigned integer unsigned int typedef
Boolean true/false bool typedef
ByteBool true/false or 8-bit unsigned integer unsigned char typedef
WordBool true/false or 16-bit unsigned integer unsigned short typedef

LongBool true/false or 32-bit unsigned integer BOOL (WinAPI) typedef
AnsiChar 8-bit unsigned character char typedef
WideChar word-sized Unicode character wchar_t typedef
Char 8-bit unsigned character char typedef
AnsiString Delphi AnsiString AnsiString class
String[n] old style Delphi string, n = 1..255 bytes SmallString<n> template class
ShortString old style Delphi string, 255 bytes SmallString<255> typedef
String Delphi AnsiString AnsiString typedef

Single 32-bit floating point number float typedef
Double 64-bit floating point number double typedef
Extended 80-bit floating point number long double typedef
Real 32-bit floating point number double typedef
Pointer 32-bit generic pointer void * typedef
PChar 32-bit pointer to characters unsigned char * typedef
PAnsiChar 32-bit pointer to ANSI characters unsigned char * typedef
Comp 64-bit floating point number Comp class
OleVariant OLE variant value OleVariant class

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧