Delphi 2009 button.enabled показывает ошибку в структуре, но все еще компилируется - PullRequest
0 голосов
/ 12 февраля 2010

Мне просто интересно, сталкивался ли кто-нибудь еще с этой довольно тупой ошибкой. У меня есть процедура, которая выглядит примерно так:

procedure dostuff();
begin
  if session_started = true then // global var
  begin
   // do bunch of calculations
   // goes on for a while
   // then at the end we enable the save button 
   save_score.enabled := true; // save_score is a tbutton - nothing special about it!
  end;
end;

С этим объявлением представление структуры говорит мне, что TButton не содержит члена с именем «Enabled» в строке 4499. Но код компилируется и выполняется просто отлично! И если я сделаю это так:

procedure dostuff();
begin
  if session_started = true then // global var
  begin
    // do bunch of calculations
    // goes on for a while
    // then at the end we enable the save button 
    with save_score do
    begin
      enabled := true;
    end;
  end;

конец;

Тогда я не получаю жалоб от зрителя, и он все еще компилируется.

Значит, кто-нибудь знает, что за сделка здесь? Это не разрушение земли каким-либо образом, а просто странно, что он будет жаловаться на такой, казалось бы, безобидный кусок кода.

1 Ответ

0 голосов
/ 15 февраля 2010

Эта функция называется «Insight Insight»: она должна показывать вам ошибки в вашем исходном коде перед выполнением компиляции.
Узлы, соответствующие ошибкам, можно увидеть в средстве просмотра «Структура» (нажмите Shift + Alt + F11, чтобы отобразить его).

С самого начала в Error Insight была ошибка.
В настоящее время он менее глючит, чем раньше, но все же.

Некоторые вещи в Delphi IDE зависят от Error Insight и тоже страдают от этих ошибок.
Например, некоторые из встроенных возможностей рефакторинга не работают, когда понимание ошибки полагает, что основной код ошибочен.

Вы можете отключить Error Insight , но это не решает некоторые из зависимостей (то есть рефакторинг все еще не работает, но теперь вы не можете видеть априори).

Это одна из причин, таких как ModelMaker Code Explorer (MMX).
MMX - это дешевое расширение Delphi, которое имеет множество действий по рефакторингу, которые просто работают.

- Йерун

...