CnPack Forum


 
Subject: 提交一个代码自动填充的问题
lingeasy
新警察
Rank: 1



UID 62650
Digest Posts 0
Credits 10
Posts 3
点点分 10
Reading Access 10
Registered 2011-4-10
Status Offline
Post at 2017-2-4 21:57  Profile | Blog | P.M. 
提交一个代码自动填充的问题

在使用匿名函数 或者 需要动态传递过程的函数时<br />
如果用到类类似如下代码:<br />
TThread.Synchronize(nil,procedure begin Memo1.Text:=szResultInfo;end);<br />
自动补充代码会有问题。<br />
<br />
不确定是Delphi自身的原因还是cnwizards的原因。<br />
举例代码如下:<br />
??IdHttp:=Yi_GetIdHttp();<br />
??nResultCode:=0;<br />
??repeat<br />
? ? szCheckUrl:=CONST_WX_CHECKLOGIN;<br />
? ? szCheckUrl:=StringReplace(szCheckUrl,'{$UUID}',szUUID,[rfReplaceAll, rfIgnoreCase]);<br />
? ? szCheckUrl:=StringReplace(szCheckUrl,'{$R}',IntToStr(not Yi_GetJavaTime(now)),[rfReplaceAll, rfIgnoreCase]);<br />
? ? szCheckUrl:=StringReplace(szCheckUrl,'{$RND}',IntToStr(Yi_GetJavaTime(now)),[rfReplaceAll, rfIgnoreCase]);<br />
? ? try<br />
? ?? ?szResultInfo:=IdHttp.Get(szCheckUrl);<br />
? ?? ?nResultCode:=StrToIntDef(Yi_RegExFind(szResultInfo,'(?&lt;=\=)[^\;]+'),0);<br />
//如果此时在这个位置回车 会自动填充 finally end <br />
? ?? ?TThread.Synchronize(nil,procedure begin Memo1.Text:=szResultInfo;end);<br />
? ? except<br />
? ?? ?nResultCode:=0;<br />
? ? end;<br />
??until (nResultCode=201) or (nResultCode=200) or (nResultCode=400);<br />
<br />
代码变成以下代码:<br />
??IdHttp:=Yi_GetIdHttp();<br />
??nResultCode:=0;<br />
??repeat<br />
? ? szCheckUrl:=CONST_WX_CHECKLOGIN;<br />
? ? szCheckUrl:=StringReplace(szCheckUrl,'{$UUID}',szUUID,[rfReplaceAll, rfIgnoreCase]);<br />
? ? szCheckUrl:=StringReplace(szCheckUrl,'{$R}',IntToStr(not Yi_GetJavaTime(now)),[rfReplaceAll, rfIgnoreCase]);<br />
? ? szCheckUrl:=StringReplace(szCheckUrl,'{$RND}',IntToStr(Yi_GetJavaTime(now)),[rfReplaceAll, rfIgnoreCase]);<br />
? ? try<br />
? ?? ?szResultInfo:=IdHttp.Get(szCheckUrl);<br />
? ?? ?nResultCode:=StrToIntDef(Yi_RegExFind(szResultInfo,'(?&lt;=\=)[^\;]+'),0);<br />
<br />
? ? finally<br />
<br />
? ? end;<br />
? ?? ?TThread.Synchronize(nil,procedure begin Memo1.Text:=szResultInfo;end);<br />
? ? except<br />
? ?? ?nResultCode:=0;<br />
? ? end;<br />
??until (nResultCode=201) or (nResultCode=200) or (nResultCode=400);<br />
<br />
<br />
无论是Delphi自身原因还是cnwizards,都希望大神能修复下。程序里有大量使用过程传递。<br />
常规过程传递到无所谓,主要是经常用到同步 Synchronize,来更新主界面信息。而且不仅仅影响此部分,也同样导致其他很多代码自动输入 完成 的地方无法正常工作。

比如把finally和end删掉 再想回车另起一行的时候 又会出现,导致必须删掉后留一行 按空格将位置对齐再输入。而一旦按回车又会出现finally和end 极其头疼

[ 本帖最后由 lingeasy 于 2017-2-4 21:59 编辑 ]
Top
Passion (LiuXiao)
管理员
Rank: 9Rank: 9Rank: 9


UID 359
Digest Posts 19
Credits 6838
Posts 3591
点点分 6838
Reading Access 102
Registered 2004-3-28
Status Offline
Post at 2017-2-9 11:04  Profile | Blog | P.M. 
格式比较杂乱,看不太懂。 能否整理一下描述?
Top
 




All times are GMT++8, the time now is 2024-11-22 01:17

    本论坛支付平台由支付宝提供
携手打造安全诚信的交易社区 Powered by Discuz! 5.0.0  © 2001-2006 Comsenz Inc.
Processed in 0.008209 second(s), 7 queries , Gzip enabled

Clear Cookies - Contact Us - CnPack Website - Archiver - WAP