各位,string 类型长度不够怎么办? 也就是说存不下我给出的

wscft 2007-07-30 09:20:52
string 类型长度不够怎么办?也就是说存不下我给出的字符串的长度,
代码如下:
var
ls_condition:String;
begin

ls_condition := '
@ C/L@70075 ; @ C/L@70076 ; @ CHA/T@001 ; @ CHA/T@002 ; @@1 ; @@20001 ; @@20002 ; @CMF@70061 ; @CMF@70062 ; @COC@70057 ; @COC@70058 ; AmoldHeiko@@00214 ; BarlManfred@@00213 ; BenMander@@33001 ; ChristianHunkler@@30073 ; DaanVan Hoyweghen@@30005 ; DamianCummins@@00121 ; DieterSack@@33004 ; DominicVanoppen@@01589 ; DriesMichael@@00255 ; FelskeAndreas@@00110 ; Hans-ChristianMarxen@@01634 ; JoergSchlecht@@00269 ; LiebischRainer-Andreas@@00117 ; LucGuns@ @00212 ; ManfredJilg@@33003 ; MoonBeumSheen@@0368 ; NeilBrodie@@33002 ; PeterMichael Lorz@@340001 ; Rodriguez-PerezFrancisco@@00604 ; RolandKrokosinki@@00216 ; SchulikMichael@@00171 ; Van DeMaele Filip@@00913 ; Van HoyweghenPaul@@00097 ; YBS²ÆÎñ¿ØÖƲ¿SF@SF@70069 ; YBS²ÆÎñ¿ØÖƲ¿SF@SF@70070 ; YBSÉú²ú²¿ST@ST@70065 ; YBSÉú²ú²¿ST@ST@70066 ; YBSÊг¡ÏúÊÛ²¿SM@SM@70067 ; YBSÊг¡ÏúÊÛ²¿SM@SM@70068 ; YBS×ܾ­Àí°ì¹«ÊÒSG@SG@70063 ; YBS×ܾ­Àí°ì¹«ÊÒSG@SG@70064 ; °²·å@An Feng@00379 ; °²Á¢»³@An Lihuai@00576 ; °²È«¡¢»·±£¡¢¹¤³Ì¡¢Î¬ÐÞ²¿@CT@70020 ; °²È«¡¢»·±£¡¢½¡¿µ²¿@CTS@70025 ; °²È«¡
';

提示信息:
One or more lines were too long and having been truncated

各位帮我想想办法, 有没有比string 型更长的类型呢,我这个也不能拆开来,
谢谢大家,是不是编译器有个什么设置要设定一下呢?
...全文
1641 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
wscft 2007-08-01
  • 打赏
  • 举报
回复
??? 那位高人帮帮我啊 
jadeluo 2007-07-31
  • 打赏
  • 举报
回复
LZ肯定是想偷懒。
从其他地方复制来的这段字符串想直接粘贴到Delphi源程序中了事。
结果当然是否定的,这样干是行不通的。

如果不想处理这段字符串,可以考虑将经放在资源文件中,程序运行后从资源中读出来而不是固定写在源代码中。
wscft 2007-07-31
  • 打赏
  • 举报
回复
我最后直接在程序中这样:
ls_condition :=
' (''70075'',''70076'',''001'',''002'',''1'',''20001'',''20002'',''70061'',''70062'',''70057'',''70058'',''00214'',''00213'',''33001'', ' +
' ''30073'',''30005'',''00121'',''33004'',''01589'',''00255'',''00110'',''01634'',''00269'',''00117'',''00212'',''33003'',''0368'', ' +
' ''33002'',''340001'',''00604'',''00216'',''00171'',''00913'',''00097'',''70069'',''70070'',''70065'',''70066'',''70067'', ' +
' ''70068'',''70063'',''70064'',''00379'',''00576'',''70020'',''70025'',''70026'',''70071'',''70072'',''00368'',''00793'',''00983'', ' +
' ''01769'',''01080'',''01221'',''01737'',''00673'',''01326'',''01054'',''00852'',''01538'',''01073'',''01510'',''01331'',''01676'', ' +
' ''00765'',''01102'',''00094'',''01062'',''01024'',''01181'',''01248'',''00890'',''70039'',''70040'',''70037'',''70038'',''70059'', ' +
' ''70060'',''70085'',''70086'',''01349'',''00016'',''01530'',''70003'',''70004'',''70005'',''70006'',''70009'',''70010'',''00405'', ' +
' ''01502'',''00532'',''0218'',''01311'',''00615'',''01417'',''01509'',''00475'',''00883'',''00961'',''00261'',''00568'',''00095'', ' +
' ''00730'',''01007'',''00699'',''0288'',''01482'',''00698'',''0163'',''0290'',''01239'',''01765'',''01032'',''0291'',''01212'',''01650'', ' +
' ''01660'',''00434'',''10'',''0344'',''00682'',''01442'',''0282'',''00849'',''01174'',''0206'',''01399'',''00172'',''00933'',''0138'', ' +
' ''00633'',''01309'',''01005'',''01459'',''1459'',''0225'',''01357'',''00939'',''00881'',''01726'',''01513'',''00577'',''00782'',''0132'', ' +
' ''00598'',''00602'',''00804'',''01031'',''00734'',''0271'',''00181'',''01524'',''01770'',''01160'',''00766'',''0095'',''01754'',''00871'', ' +
' ''01725'',''00955'',''01758'',''00134'',''01265'',''01089'',''00433'',''01708'',''01639'',''01544'',''01134'',''00522'',''00617'',''00775'', ' +
' ''01570'',''00527'',''00737'',''01365'',''1011383'',''00282'',''00664'',''01310'',''00265'',''00543'',''01308'',''01460'',''01059'',''0080'', ' +
' ''01197'',''00853'',''00702'',''01117'',''00757'',''00049'',''01789'',''00440'',''01606'',''00947'',''01565'',''00228'',''01285'',''00614'', ' +
' ''01541'',''00603'',''0365'',''01222'',''01656'',''00959'',''01563'',''01192'',''00483'',''01246'',''00646'',''01303'',''00050'',''01353'', ' +
' ''00029'',''0054'',''3033'',''01730'',''00274'',''01787'',''00557'',''0091'',''00865'',''01483'',''00281'',''01774'',''01141'',''00487'', ' +
' ''00925'',''00550'',''00670'',''01196'',''01484'',''01671'',''01330'',''3013'',''01562'',''01232'',''00656'',''00872'',''01658'',''01451'', ' +
' ''00479'',''00008'',''01390'',''3001'',''00671'',''0353'',''00191'',''01550'',''01194'',''00909'',''00569'',''01038'',''0213'',''01464'',''00083'', ' +
' ''01636'',''01784'',''01039'',''01207'',''01474'',''01352'',''00887'',''3007'',''01573'',''00193'',''00701'',''01714'',''01058'',''01605'',''01149'', ' +
' ''00870'',''01227'',''01036'',''01075'',''01476'',''01567'',''70082'',''01642'',''00506'',''01379'',''00485'',''01044'',''01696'',''01242'',''00958'', ' +
' ''01525'',''0307'',''01293'',''70043'',''70044'',''70045'',''70046'',''70047'',''70048'',''70041'',''70042'',''70055'',''70056'',''70053'',''70054'', ' +
' ''01072'',''01412'',''0255'',''01040'',''00570'',''00222'',''01603'',''00723'',''0097'',''01688'',''01319'',''00756'',''00851'',''00838'',''01009'', ' +
' ''00760'',''01184'',''01422'',''01559'',''01341'',''01022'',''01761'',''00414'',''30004'',''00441'',''01290'',''00106'',''00531'',''00085'',''0215'', ' +
' ''01767'',''01307'',''01115'',''01546'',''00712'',''00064'',''0219'',''01576'',''01507'',''00331'',''00948'',''01323'',''00762'',''0251'',''0119'', ' +
' ''01200'',''00463'',''00857'',''00736'',''01607'',''01277'',''00975'',''3019'',''01325'',''0184'',''00996'',''01333'',''00138'',''01640'',''00854'', ' +
' ''00392'',''01060'',''3023'',''01132'',''00015'',''00818'',''00659'',''00784'',''00936'',''00830'',''0297'',''00356'',''0128'',''00862'',''01287'', ' +
' ''00897'',''01780'',''00394'',''00586'',''00413'',''00057'',''00326'',''00425'',''01597'',''01128'',''00492'',''01438'',''01329'',''00624'',''00610'', ' +
' ''3002'',''00945'',''00609'',''00652'',''01654'',''01745'',''70021'',''70022'',''70084'',''70081'',''01503'',''0277'',''01602'',''01713'',''0079'', ' +
' ''01463'',''00874'',''00477'',''00104'',''30020'',''01740'',''00779'',''01542'',''01096'',''01376'',''01182'',''00842'',''00904'',''00992'',''00155'', ' +
' ''30034'',''00937'',''00260'',''00635'',''01295'',''0318'',''01699'',''30100'',''01267'',''00991'',''00812'',''00665'',''01574'',''00209'',''01131'', ' +
' ''3032'',''01771'',''01033'',''00827'',''00749'',''01140'',''106002'',''0330'',''00367'',''01733'',''01154'',''01624'',''00781'',''01487'',''0317'', ' +
' ''01731'',''01601'',''00330'',''00855'',''00343'',''01692'',''01651'',''01046'',''01155'',''00687'',''01001'',''01299'',''0256'',''00601'',''00846'', ' +
' ''01517'',''00426'',''01588'',''01340'',''01668'',''00894'',''30019'',''01615'',''01252'',''0147'',''00389'',''70031'',''70032'',''01018'',''0235'', ' +
' ''00690'',''01235'',''01599'',''00683'',''00654'',''00835'',''00739'',''0195'',''0175'',''00098'',''00733'',''01724'',''00680'',''0367'',''00466'', ' +
' ''01153'',''00534'',''01427'',''01426'',''70077'',''70007'',''70008'',''01'',''02'',''00986'',''70029'',''70030'',''70073'',''70074'',''01078'', ' +
' ''00802'',''01481'',''01635'',''01675'',''00481'',''01636'',''01637'',''01638'',''01639'',''01640'') ' ;

赋值的时候没有错误,但是当我想用 ls_condition 来参与运算的时候就发现,付给ls_condition的内容后面很长一段没有了,


我的程序代码如下:
1: // 员工姓名 从 emp表中取得 len(emp.ssno) < 9 的胸卡号
begin
if (combo_czf.Text='In') or (combo_czf.Text='Not In') then
begin
check_rowcount:=0;
for i:=0 to (chkb_val.Items.Count-1) do
begin
if chkb_val.Checked[i] then
begin
if check_rowcount=0 then
begin
show_val:=chkb_val.Items.Strings[i];
vararray:=getsplit(chkb_val.Items.Strings[i],'@',1);
temp_val:='''' + vararray[2] + '''';
Inc(check_rowcount);
end
else
begin
show_val:=show_val+' ; '+chkb_val.Items.Strings[i];
vararray:=getsplit(chkb_val.Items.Strings[i],'@',1);
temp_val:=temp_val+','''+vararray[2] + '''';
end;
end;

end;

temp_val:=' ('+temp_val+') ';
temp_field:='badgeview.ssno';
end

也就是我这个地方赋给 temp_val 的值,是一段一段的加起来的啊,
本人是delphi新手,用的不熟,请多多包涵,问题很急的啊,后天就要给用户上线了, 我头都大了, 哪位大哥知道怎么解决一定告诉我啊!
解决了另开帖子给分都行, 小弟泣血求助!
msn: wscft@hotmail.com
wscft 2007-07-31
  • 打赏
  • 举报
回复
我就是分行, 一段一段的加起来的啊, 这是一个对员工查询条件的下的值, 当操作员选择 所有的员工就出来这么多的数据, 这个数据我也是用循环放在单个的变量中的, 一个一个的往最终的变量里面加的,
可是, 加到一定的数据的字符后, 就加不进去了, 也没有错误提示。
我跟踪程序的时候的结果就是这个样子啊,
brightyang 2007-07-30
  • 打赏
  • 举报
回复
用ansistring
wscft 2007-07-30
  • 打赏
  • 举报
回复
我改成过 widestring了, 但是还是不行的啊, 编译开关是怎么设置的呢?
楼上的朋友, 您遇到这种问题是怎么解决的呢 ?
brightyang 2007-07-30
  • 打赏
  • 举报
回复
var
s1:ansistring; // 4GB
s2:string;//根据编译开关可能是 ansistring,可能是 shortstring
wooxer 2007-07-30
  • 打赏
  • 举报
回复
使用widestring吧
skerryer 2007-07-30
  • 打赏
  • 举报
回复
厉害!!!!
huitouren519 2007-07-30
  • 打赏
  • 举报
回复
用+号连接起来啊
comanche 2007-07-30
  • 打赏
  • 举报
回复
怎么搞的, 这么简单的事, 你用 + 起来的字符串就是你要的内容了嘛, 无非一个是常量给一个是变量给的事, 结果都是一样的, 该怎么用就怎么用
wscft 2007-07-30
  • 打赏
  • 举报
回复
我是要把这个字符串作为参数传给后台的一个存储过程的,你说不写到一个字符串里面, 怎么办啊? 
每换一行用+号连接起来,最后再提取参与运算的时候,还会自动把截断字符串的啊, 

delphi 编译器不让写那么长的常量 这个存储过程的参数也不接手数组的啊  该怎么办呢 ? 
呜呜。。。。。。。
Lizzy 2007-07-30
  • 打赏
  • 举报
回复
用+号连接
iamduo 2007-07-30
  • 打赏
  • 举报
回复
就是 jadeluo(秀峰) ( ) 信誉:100 说的。
jadeluo 2007-07-30
  • 打赏
  • 举报
回复
基本的语法问题。
LZ的写法不正确, 按comanche(太可怕)的方法, 每换一行用+号连接起来。

ls_condition := '@ C/L@70075 ; @ C/L@70076 ; @ CHA/T@001 ; @ CHA/T@002 ; @@1 ; ' +
'@@20001 ; @@20002 ; @CMF@70061 ; @CMF@70062 ; @COC@70057 ; @COC@70058 ; ‘ +
'AmoldHeiko@@00214 ; BarlManfred@@00213 ; BenMander@@33001 ; ' +
'ChristianHunkler@@30073 ; DaanVan Hoyweghen@@30005 ; DamianCummins@@00121 ; ' +
'DieterSack@@33004 ; DominicVanoppen@@01589 ; DriesMichael@@00255 ; ' +

......

'²È«¡';
comanche 2007-07-30
  • 打赏
  • 举报
回复
强调一下, 你不行的原因是 delphi 编译器不让写那么长的常量, 而不是 string 长度问题
另外检查一下 project->options->compiler huge strings 是否选上, 这个是为向前兼容用, 去掉string 就用的是 shortstring, 默认是 AnsiString
comanche 2007-07-30
  • 打赏
  • 举报
回复
string 4gb 界限, 你还不够用的啊, 我从没大于过 4gb -_-
wscft 2007-07-30
  • 打赏
  • 举报
回复
comanche(太可怕), 你说的非常对啊, 但是这种用 + 号加出来的字符还不是要赋值给一个 string 型的变量么? 那这样的问题还是解决不了啊, 
你遇到这种问题是怎么解决的呢 ?
brightyang 2007-07-30
  • 打赏
  • 举报
回复
......
人人都有高招?
hongqi162 2007-07-30
  • 打赏
  • 举报
回复
TStringStream
加载更多回复(2)

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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