Возможно, это не относится к делу, но я недавно переустановил Delphi XE2.Assigned (my_var) оценивает значение True, где var вычисляет значение Nil (!! ??)
У меня есть переменная path
(типа TPath, карта TG Gogole, хотя я сомневаюсь, что это важно).
Я останавливаю в отладчике и оцениваю path
, что оценивается как Nil
.
Если я запускаю, я получаю исключение, Read of address 0
, которое, как я подозреваю, из-за этого.
Когда я затем оценить Assigned(path)
в то же самое время, что она path = Nil
эволют к True
(тот же результат, когда я остановить на ShowMessage
линии - которая выполняется)).
Может кто-нибудь объяснить это мне?
Очистить & rebuild ничего не меняет. Может быть, лучше удалить & переустановить Delphi?
(извинения @mbratch, я использовал var
для демонстрации, настоящее имя actully path
)
[Обновление] Полный пример кода, как это предусмотрено TMS и работать на них (в другой зоне tiem , вот почему я прошу здесь тоже).
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
[Futher обновление] Два голоса, чтобы закрыть? Шутки в сторону? Я думаю, от людей, которые думают, что этого просто не может быть - и все же это !!!
Странная вещь, что @j попробовал и получил p <> Nil
. Тем не менее, я попробовал это на втором ПК и до сих пор получаю p = Nil
с помощью кода, размещенного здесь, который был предоставлен TMS.
Я признаю, что это кажется странным, но я могу воспроизвести его на двух ПК. P - Nil, но все равно Assigned().
У меня нет кода Assigend() для входа. Кроме того, я немного изменил код до явно if System.Assigned(p)
и получил тот же результат. Какие-либо предложения?
Эта переменная на самом деле называется 'var'? Разве это не 'var' ключевое слово Delphi (Pascal)? – lurker
Итак, у вас есть какие-либо 'с' утверждениями, которые могут запутать отладчик? –
Можете ли вы изменить свое сообщение, чтобы показать свой фактический код? С этим мы сможем выяснить, что происходит. –