关于delphi的字符串(50分)

  • 主题发起人 主题发起人 tfnmao
  • 开始时间 开始时间
T

tfnmao

Unregistered / Unconfirmed
GUEST, unregistred user!
关于delphi的字符串有以下的两个问题
1、string是一个char数组并且第一位已被长度占去,故有255个字符,
而在实际测试中发现string根要不受255的限制,
如tedit的中的字符数可以远远超过255
2、'...' 是一个长度超过255的字符串
var
a:pchar;
begin
strcopy(a,'...')//编译无法通过因为'...'超过255
end;
这是什么原因呢?有谁能解答

用来用去还是学的C的char数组好
 
1:你在Delphi中查下string帮助,我记不清了,只知道string有3种类型,
其中有longstring,...,longstring是可长过256位的,若你声明为string,
delphi根据你的程序自动转为3种中的一种。
 
用链,可以64K!
 
1、你说的String的长度限制,那是N年的事情,从D3开始就已经没有这种限制了,ShortString
才有256个字节的长度限制。
2、你的那个字符串的定义是 String 还是 String[1000],如果是后者的话不行。
 
长字符串的长度是2G,你根本用不完
如果直接给一个字符串变量静态赋值,是不会超过255的,不信你就试试
test:='0123456.................';
 
'0123456.................'这个静态字符串不能超255否则编译报错
 
回答的是向后兼容(back comp)的 String 类型,这种类型是String[N] 第一个字节(String[0])
保存串的长度;这种形式在理论上要优于('/0')结束的字符串;所以称之为Pascal风格字符串(可直接查看反汇编代码)
现在的Delphi已基本上不支持(String[N])的类型了Delphi 默认的String类型是ANSIString
类型,除非加上编译指示;
现在只不过是C++占绝对优势Delphi才不得不以#0结束;
如果还不懂请看下面的C代码
char *hx="Hello World!";
char hxo[]={'1','3','4'};
int *hxInt;
hxInt = (int *)hx;
hxInt = (int *)hxo;
如果还不懂可直接和我联系delphifans_hx@yahoo.com.cn

 
多人接受答案了。
 
后退
顶部