unit PrePostProcessor;
interface
uses
SysUtils, ToolsAPI;
type
TCompilerNotifier =
class(TNotifierObject, IOTAIDENotifier)
public
// IOTAIDENotifier
procedure FileNotification(NotifyCode: TOTAFileNotification;
const FileName:
string;
var Cancel: Boolean);
virtual;
procedure BeforeCompile(
const Project: IOTAProject;
var Cancel: Boolean);
overload;
virtual;
procedure AfterCompile(Succeeded: Boolean);
overload;
virtual;
// IOTAIDENotifier50
procedure BeforeCompile(
const Project: IOTAProject; IsCodeInsight: Boolean;
var Cancel: Boolean);
overload;
virtual;
procedure AfterCompile(Succeeded: Boolean; IsCodeInsight: Boolean);
overload;
virtual;
end;
implementation
{ TCompilerNotifier }
{ veraltete Methoden }
procedure TCompilerNotifier.BeforeCompile(
const Project: IOTAProject;
var Cancel: Boolean);
begin
end;
procedure TCompilerNotifier.AfterCompile(Succeeded: Boolean);
begin
end;
{ neue Methoden }
procedure TCompilerNotifier.BeforeCompile(
const Project: IOTAProject; IsCodeInsight: Boolean;
var Cancel: Boolean);
begin
if SameText(ExtractFileExt(Project.FileName), '
.bpg')
then Exit;
// This should never happen
if IsCodeInsight
then Exit;
// Project.FileName gibt den Dateinamen des Projekts an (.dpr).
{ // save all
Cancel := not (BorlandIDEServices as IOTAModuleServices).SaveAll;
if Cancel then Exit; }
end;
procedure TCompilerNotifier.AfterCompile(Succeeded: Boolean; IsCodeInsight: Boolean);
begin
if not IsCodeInsight
then
end;
procedure TCompilerNotifier.FileNotification(NotifyCode: TOTAFileNotification;
const FileName:
string;
var Cancel: Boolean);
begin
Cancel := False;
end;
var
NotifierIndex: Integer;
{ CompilerNotifier registrieren }
initialization
NotifierIndex := (BorlandIDEServices
as IOTAServices).AddNotifier(TCompilerNotifier.Create);
finalization
if NotifierIndex >= 0
then
(BorlandIDEServices
as IOTAServices).RemoveNotifier(NotifierIndex);
// clear all IOTACustomMessages here, else Delphi unloads the dll and then
// it wants to free the messages -> AccessViolation
(BorlandIDEServices
as IOTAMessageServices).ClearToolMessages;
end.