请创建一个新的FMX应用程序,添加一个按钮和一个备注以运行此示例。我有以下代码:
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语句。
我该如何解决?
首先我在这里
然后按Enter键,我有了这个!
如果将光标放在行的开头而不是行的结尾,则可以添加新的空格而无需完成。如何解决这个问题呢?好吧,我发现发生此问题是因为有以下代码:
TThread.Synchronize(nil, procedure
begin
Memo1.Lines.Add(result);
end);
如果删除此代码,则不会再出现此问题。这是IDE中的错误吗?
答案 0 :(得分:7)
这是IDE中的错误吗?
是的。这是一个缺陷。请向质量门户网站提交报告。
答案 1 :(得分:2)
这是IDE中的错误吗?
是的,这是IDE中的错误。您的代码在语法上是有效的。
我该如何解决?
避免这种情况的最好方法是创建代码,并用org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 49: illegal string body character after dollar sign;
solution: either escape a literal dollar sign "\$5" or bracket the value expression "${5}" @ line 49, column 13.
sh """
^
括起来以处理任何异常:
try...except...
所以您的代码将是:
try
MyClass := TComponent.Create(Self);
try
finally
MyClass.Free;
end;
except on E: Exception do
end;