Delphi XE2 - функции вложенного класса не компилируются - PullRequest
4 голосов
/ 18 ноября 2011

Я обновляю некоторые устаревшие компоненты сторонних производителей с исходного кода Delphi 6 до XE2.

Сторонний источник имеет вложенную функцию класса в процедуре класса. Копируйте точную рабочую копию, которая потерпит неудачу:

type
  TMyClass1 = class
  public
    class procedure DoSomething;
  end;

{ TMyClass1 }

class procedure TMyClass1.DoSomething;
  class function DoSomethingelse: boolean;
  begin
    result := false;
  end;
begin

end;

попытка скомпилировать это приводит к ошибке о том, что doSomethingelse является необъявленным идентификатором. Теперь я могу (предположительно) решить эту проблему, вытащив вложенную функцию на тот же уровень, но есть ли опция компилятора, которую я могу установить, чтобы предотвратить это? Это то, что недавно изменилось? Кто-нибудь еще сталкивался с этой проблемой?

Спасибо

1 Ответ

6 голосов
/ 18 ноября 2011

Чтобы скомпилировать ваш код в XE2, просто удалите ключевое слово class из определения DoSomethingelse, даже если этот код компилируется в более старых версиях delphi (я тестировал ваш код в Delphi 5, 7 и 2007).не вижу смысла (или различия) в объявлении встроенной (внутренней) процедуры или функции с ключевым словом class.

...