不能超过1023个字符?(100分)

  • 主题发起人 主题发起人 midier
  • 开始时间 开始时间
M

midier

Unregistered / Unconfirmed
GUEST, unregistred user!
var
i:integer;
trackstr:string;
begin
for i:=1 to 1000 do
trackstr:=trackstr+possce(xx:string);//possce(xx:string) 返回字符串
trackstr:=trackstr+'FF2F00';
end;
运行程序发现trackstr后面没有'FF2F00',用调试器,发现trackstr后面有许多乱七八糟的
字符;强制去掉,加上'FF2F00',调试器提示’line too long(’超过1023个字符‘)‘?
 
string肯定可以超过1023个字符。
  是否你的possce函数返回的字符串有问题,比如说全角和半角,错位造成乱码等
建议把possce贴出来看看,或调试看看possce的返回值是否正常
 
string 的长度几乎和你内存一样大:)如果用虚拟内存那就更大,
可能是你程序的问题
 
不可能吧,你试下这段程序:
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
str:string;
begin
str:='';
for i:=1 to 20000 do
str:= str+'1';
label1.Caption :=inttostr(length(str));
end;
完全正常呀,你还是检查检查其它的程序吧。。。
 
问题应该出在你的 possce(xx:string); 函数,贴它出来看看。
 
估计是你的程序问题或IDE设置问题
 
当字符串太大使Delphi会自动将它转变为WideString,不过也可以直接用WideString。
 
procedure tform1.button1click(sender:tobject);
var
i,strlength:integer;
trackstr:string;
begin
strlength:=0;
for i:=1 to 1000 do
trackstr:=trackstr+possce(xx:string);//possce(xx:string) 返回字符串
trackstr:=trackstr+'FF2F00';
strlength:=strlength+length(trackstr) div 2;
end;

possce(xx:string): 函数返回的串长度不会超过10,我检查过,值是正确的;
‘trackstr:=trackstr+'FF2F00';’这句程序还没有运行之前,查看trackstr的值是正确,
当这句程序运行后,用delphi的调试器‘Evaluate/Modify..’发现Trackstr的值并没有加上
‘FF2F00’,反而后面加了许多乱码,强制修改,DELPHI提示‘Line too long (more than 1023 characters)’

 
注意应该用:
var
trackstr:widestring;
begin
setlength(trackstr,2048); { 2k串够你用了! }



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