Не совсем ifdefs, но вы можете использовать наследование классов и тестирование по назначенным, чтобы увидеть, следует ли вам предпринимать действия. Вы все еще хотели бы иметь какую-то настройку прокси, чтобы вы и другой разработчик могли компилировать ... только ваша версия имеет добавленную цель прокси. Например:
В «разделяемом» модуле, который имели бы оба разработчика, было бы что-то вроде этого:
type
TMyComponent = class
public
procedure DoSomething; virtual;
end;
var
MyComponent : TMyComponent;
procedure TMyComponent.DoSomething;
begin
// stubbed
end;
в вашем «специальном» блоке вы должны иметь следующий код:
type
TMyRealComponent = Class(tMyComponent)
public
procedure DoSomething; override;
end;
procedure TMyRealComponent.DoSomething;
begin
// do the real process here
end;
initialization
MyComponent := TMyRealComponent.Create;
finalization
if Assigned(MyComponent) then
MyComponent.Free;
end.
В своем коде, когда вы хотите посмотреть, можно ли что-то делать, вы можете написать:
if Assigned(MyComponent) then
MyComponent.DoSomething;
Если вы хотите отключить этот код отладки, удалите специальный модуль из проекта.