请创建一个新的FMX应用程序,添加一个按钮和一个备忘录以运行此示例。我有以下代码:
如果您删除此代码,则问题不再发生。这是IDE中的一个错误吗?
procedure TForm1.Button1Click(Sender: TObject);
begin
TTask.Run(procedure
var
client: TIdHTTP;
result: string;
begin
client := TIdHTTP.Create(nil);
try
try
client.ReadTimeout := 4000;
client.ConnectTimeout := 4000;
result := client.Get('a valid url here just as test');
TThread.Synchronize(nil, procedure
begin
Memo1.Lines.Add(result);
end);
except
on E: Exception do
begin
TThread.Synchronize(nil, procedure
begin
Memo1.Lines.Add(E.Message);
end);
end
end;
finally
client.Free;
end;
end);
end;
我的代码按照预期工作,但问题出现在IDE中。如果我将光标放在匿名函数主体的某个位置,就会自动关闭finally语句。
我该如何解决这个问题?
首先,我在这里。
然后我按回车键,就会出现这个!
如果你把光标放在行的开头而不是结尾,你可以添加新的空格而不需要完成。如何解决这个问题?嗯,我已经发现这个问题是因为有这段代码:
TThread.Synchronize(nil, procedure
begin
Memo1.Lines.Add(result);
end);
如果您删除此代码,则问题不再发生。这是IDE中的一个错误吗?
end
(所以,如果我按五次回车,就会得到五个end
)。这让我疯狂。我之前没见过这种行为在早期的 Delphi 版本中。 - Andreas Rejbrand