释放选中了Marker的表单会导致应用程序崩溃(MapView)

时间:2017-08-10 20:34:25

标签: android delphi android-mapview delphi-10.1-berlin c++builder-10.1-berlin

如果使用以下方法在MapView上选择了任何标记:

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := TCloseAction.caFree;
end;

表单关闭后,应用程序崩溃。

但是,如果使用这个:

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
try
MapView1.DisposeOf;
finally
Action := TCloseAction.caFree;
end;
end;

应用程序不会崩溃,但在关闭表单后会触发Access违规消息。可能是什么导致了这个?有一点可以避免吗?

祝你好运

1 个答案:

答案 0 :(得分:0)

编辑:

实际上我是以错误的方式向地图添加标记。你不能像这样添加TMarkerDescriptor:

MapView1.AddMarker(MyMarker1);  // MyMarker is a TMapMarkerDescriptor

您必须使用这样的TMapMarker:

MMyMarker1 := MapView1.AddMarker(MyMarker1); // MMyMarker1 is a TMapMarker and MyMarker1 is a TMapMarkerDescriptor

但是,您必须使用:

MMyMarker1.DisposeOf;
对于您添加到地图中的每个标记,在OnFormClose

以避免崩溃,如下所示:

procedure TForm69.FormClose(Sender: TObject; var Action: TCloseAction);
begin
try
MMyMarker1.DisposeOf;
finally
 Action := TCloseAction.caFree;
end;
end;