関係ないかもしれませんが、最近 Delphi XE2 を再インストールしました。
私は変数を持っていますpath(タイプ TPath、TMS Gogole マップのものですが、それが重要であるとは思えません)。
デバッガーで停止しpath、 を評価します。これは として評価されNilます。
実行すると、例外が発生Read of address 0します。これは、これが原因であると思われます。
次に、それが進化するAssigned(path)と同時に評価すると(行で停止したときと同じ結果-実行されます))。path = NilTrueShowMessage
誰かが私にそれを説明できますか?
クリーン&リビルドしても何も変わりません。Delphi を削除して再インストールした方がよいでしょうか?
(@mbratch に謝罪します。varデモに使用しました。実際の名前は実際のものですpath)
[更新] TMS によって提供され、それらのために動作する完全なコード サンプル (別のタイム ゾーンで、ここでも質問する理由です)。
This was retested here with:
uses
uwebgmapspolylines;
procedure TForm1.FormCreate(Sender: TObject);
var
p: TPath;
begin
p := TPath.Create;
if Assigned(p) then
ShowMessage('creation OK');
end;
and this proves the correct creation of TPath returns a valid instance.
に立ち寄ってif Assigned(p) then評価するpと が得られますNilが、評価するAssigned(p)と が得られTrueます。
IDE で変数宣言の上にカーソルを置くと、型が UWebGMapsPolyLines で宣言されていることが示されます
[さらなる更新] 2 票で締めくくりますか? 真剣に?これはあり得ないと思っている人もいると思いますが、実際にそうです!!!
奇妙なことは、@j がそれを試して を得たということp <> Nilです。ただし、2 台目の PC で試してみましたp = Nilが、TMS から提供された、ここに投稿されたコードを引き続き使用できます。
奇妙に思えるかもしれませんが、2 台の PC で再現できます。P は Nil ですが、Assigned() です。
足を踏み入れる Assigend() のコードがありません。また、コードを明示的にわずかに変更してif System.Assigned(p)も、同じ結果が得られました。助言がありますか?


