関係ないかもしれませんが、最近 Delphi XE2 を再インストールしました。
私は変数を持っていますpath
(タイプ TPath、TMS Gogole マップのものですが、それが重要であるとは思えません)。
デバッガーで停止しpath
、 を評価します。これは として評価されNil
ます。
実行すると、例外が発生Read of address 0
します。これは、これが原因であると思われます。
次に、それが進化するAssigned(path)
と同時に評価すると(行で停止したときと同じ結果-実行されます))。path = Nil
True
ShowMessage
誰かが私にそれを説明できますか?
クリーン&リビルドしても何も変わりません。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)
も、同じ結果が得られました。助言がありますか?