提交一个代码自动填充的问题
在使用匿名函数 或者 需要动态传递过程的函数时<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,'(?<=\=)[^\;]+'),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,'(?<=\=)[^\;]+'),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 编辑 ]
|