Board logo

Subject: 提交一个代码自动填充的问题 [Print This Page]

Author: lingeasy    Time: 2017-2-4 21:57     Subject: 提交一个代码自动填充的问题

在使用匿名函数 或者 需要动态传递过程的函数时<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 编辑 ]
Author: Passion    Time: 2017-2-9 11:04

格式比较杂乱,看不太懂。 能否整理一下描述?




Welcome to CnPack Forum (http://bbs.cnpack.org/) Powered by Discuz! 5.0.0