У меня очень странная проблема, возникающая в среде разработки Delphi XE2.Delphi - E2003 Необъявленный идентификатор Проблема
В одном пакете, я следующие классы объявлены:
TCommandInfo = class
private
fParameters : TCommandParameters;
// other fields...
public
property Parameters : TCommandParameters read fParameters;
// other properties...
end;
TReceiveCommand = class(TCommand)
// other fields and properties
private
fInfo : TCommandInfo;
public
property Info : TCommandInfo read fInfo;
end;
TReceiveErrorCommand = class(TReceiveCommand);
TReceiveDataCommand = class(TReceiveCommand)
// procedures and properties defined, etc.
end;
Теперь в совершенно другой пакет, который зависит от пакета выше, я эту функцию:
procedure DoDataCommand;
var
cmd : TReceiveDataCommand;
success : Boolean;
params : TCommandParameters;
begin
cmd := TReceiveDataCommand.Create;
success := cmd.Initialize;
if success then begin
// #### ERROR HERE ####
params := cmd.Info.Parameters;
end;
end;
Я «Я вижу, что при попытке скомпилировать зависимый пакет, я получаю ошибку E2003 с сообщением« Undeclared identifier: «Info» », и когда я CTRL + CLICK на TReceiveDataCommand беру меня в объявление, среда IDE перескакивает в другое место в исходном файле содержащих пакетов.
У меня есть тот же самый код, который работает на моей машине на работе, и это работает в обязательном порядке. Мне интересно, есть ли какие-то затяжные BPL-рыки вокруг где-то, но у меня было хорошее понимание.
Кажется странным, что IDE приводит меня в неправильное положение при попытке перейти к источнику класса TReceiveDataCommand.
Любые предложения, пожалуйста?
Я предполагаю, что вы используете устаревший файл dcp –
Я сделал чистую/чистую все около 5 раз, и это не имеет никакого значения. – weblar83
Какую версию Delphi вы используете? Я нащупываю ваш пример сейчас в течение нескольких часов, и только однажды мне удалось воспроизвести вашу проблему. Это было на Delphi XE8, где IDE сообщало, что в классе нет поля, даже если вы его понимаете в конструкторе класса. Поэтому я даже не смог скомпилировать код на первом месте. Когда я скопировал этот код в Delphi XE3, он скомпилировался без проблем. Когда я затем скопировал этот код из Delphi XE3 в новый проект в Delphi XE8, он также скомпилировался и работал без проблем. ... – SilverWarior