字符串的长度超过255怎么办?

时间:2022-06-12 11:03:40
有如下代码:

procedure TForm1.FormCreate(Sender: TObject);
var
temp:string;
begin
temp:='sadhfajkshfasdkjhfasjkdhfkjadskjfsadklfjsdakljfskdljfksldjfksldjfksladjfklsadjfksladjfklsadjflkasdjfklasdjfklsadjfksldajfksladjfksladjfklsadnfcm,zxnvksdlanjflksadnfklsadnfksaldfksaldjfklsadjfksladfjksdlfjskldasdhfjkasdhfjkashdajkshdkashfksahdfjksahfjkashfjksahdfjkshdfcjksdhcjkshdbkcjhsdkjhcsjkdhcjksdhjkshdfkjsdhfskjdhfjksdhfjksdahcjksdhcjkshdfjkshdjksdhfcjksdhfcjksdhfcjksdhfcjksdh';
temp:=temp+temp+temp+temp+temp+temp+temp;
end;

end.

编译时出现如下错误:
[Error] Unit1.pas(29): String literals may have at most 255 elements

请问各位高手该如何解决
其中
工程选项的编译中:huge string 已打勾
加入{$H+} 错误依旧
将string 改为widestring 错误依旧



肯请各位高手了!

21 个解决方案

#1


procedure TForm1.FormCreate(Sender: TObject);
var
  temp: string;
begin
  temp :=
'sadhfajkshfasdkjhfasjkdhfkjadskjfsadklfjsdakljfskdljfksldjfksldjfksladjfklsa' +
'djfksladjfklsadjflkasdjfklasdjfklsadjfksldajfksladjfksladjfklsadnfcm,zxnvksd' +
'lanjflksadnfklsadnfksaldfksaldjfklsadjfksladfjksdlfjskldasdhfjkasdhfjkashdaj' +
'kshdkashfksahdfjksahfjkashfjksahdfjkshdfcjksdhcjkshdbkcjhsdkjhcsjkdhcjksdhjk' +
'shdfkjsdhfskjdhfjksdhfjksdahcjksdhcjkshdfjkshdjksdhfcjksdhfcjksdhfcjksdhfcjk' +
'sdh';
  temp := temp+temp+temp+temp+temp+temp+temp;
end;

#2


解决了!
高手,能解释一下原因吗?
谢谢

#3


一次性将字符常量定义超过256字节的确不好办呀。你只能采用楼上的用+连接起来的方法了。

#4


楼主!
报错不是String长度问题.
问题是:DELPHI 代码编辑器,对字段串支持长度,最长255。跟数据类型没关系。

#5


同意,字符串长度超过255就用字符串相加的办法解决

#6


一般要养成好的编码习惯,超过Right Margin(代码编辑器中右边的那条竖线)的代码就换行(字符串就用连接号换行联接),首先是看起来清晰明了,也省却很多麻烦(包括楼主所说的这种错误)

#7


谢谢

#8


那如果是从数据库中取出的值超过255位怎么付给一个变量?

#9


赋值不会出错:

china_jian(怀剑) ( ) 信誉:100  2004-01-03 14:17:00  得分:0 
  楼主!
报错不是String长度问题.
问题是:DELPHI 代码编辑器,对字段串支持长度,最长255。跟数据类型没关系。

#10


注意,是对“代码编辑器”有这种问题

#11


是單行代碼不能超過255,你直接在對象查看器裡面寫commandText的時候也是這樣的。

#12


学习,up!!

#13


我想结贴,不只如何操作。

#14


不行就用WideString

#15


点击管理,在右侧输入密码,在每个人的回复后面输入相应的分数,按结帖就可以了。

#16


没有输入密码的框
也没看见结帖的按钮

#17


#18


学习了,接分

#19


没试过这种情况,见识了。

#20


&呵

#21


你看到的这个帖子,最上面有如下连接:

回复 | 推荐 | 收藏 | 专题 | 公告 | 管理 | 保存 | 回复通知 | 关闭窗口 

点“管理”,再出来的页面才要你输入密码和给谁多少分,都输完了再点击“给分”

#1


procedure TForm1.FormCreate(Sender: TObject);
var
  temp: string;
begin
  temp :=
'sadhfajkshfasdkjhfasjkdhfkjadskjfsadklfjsdakljfskdljfksldjfksldjfksladjfklsa' +
'djfksladjfklsadjflkasdjfklasdjfklsadjfksldajfksladjfksladjfklsadnfcm,zxnvksd' +
'lanjflksadnfklsadnfksaldfksaldjfklsadjfksladfjksdlfjskldasdhfjkasdhfjkashdaj' +
'kshdkashfksahdfjksahfjkashfjksahdfjkshdfcjksdhcjkshdbkcjhsdkjhcsjkdhcjksdhjk' +
'shdfkjsdhfskjdhfjksdhfjksdahcjksdhcjkshdfjkshdjksdhfcjksdhfcjksdhfcjksdhfcjk' +
'sdh';
  temp := temp+temp+temp+temp+temp+temp+temp;
end;

#2


解决了!
高手,能解释一下原因吗?
谢谢

#3


一次性将字符常量定义超过256字节的确不好办呀。你只能采用楼上的用+连接起来的方法了。

#4


楼主!
报错不是String长度问题.
问题是:DELPHI 代码编辑器,对字段串支持长度,最长255。跟数据类型没关系。

#5


同意,字符串长度超过255就用字符串相加的办法解决

#6


一般要养成好的编码习惯,超过Right Margin(代码编辑器中右边的那条竖线)的代码就换行(字符串就用连接号换行联接),首先是看起来清晰明了,也省却很多麻烦(包括楼主所说的这种错误)

#7


谢谢

#8


那如果是从数据库中取出的值超过255位怎么付给一个变量?

#9


赋值不会出错:

china_jian(怀剑) ( ) 信誉:100  2004-01-03 14:17:00  得分:0 
  楼主!
报错不是String长度问题.
问题是:DELPHI 代码编辑器,对字段串支持长度,最长255。跟数据类型没关系。

#10


注意,是对“代码编辑器”有这种问题

#11


是單行代碼不能超過255,你直接在對象查看器裡面寫commandText的時候也是這樣的。

#12


学习,up!!

#13


我想结贴,不只如何操作。

#14


不行就用WideString

#15


点击管理,在右侧输入密码,在每个人的回复后面输入相应的分数,按结帖就可以了。

#16


没有输入密码的框
也没看见结帖的按钮

#17


#18


学习了,接分

#19


没试过这种情况,见识了。

#20


&呵

#21


你看到的这个帖子,最上面有如下连接:

回复 | 推荐 | 收藏 | 专题 | 公告 | 管理 | 保存 | 回复通知 | 关闭窗口 

点“管理”,再出来的页面才要你输入密码和给谁多少分,都输完了再点击“给分”