![]() |
Delphi OTA: Name des gerade KOMPILIERTEN Projekts ermitteln? (nicht ActiveProject)
Hallo liebe Delphianer,
ich baue mir gerade eine Pre-/Post-Build Automation mit der Delphi-OTA zusammen. An sich klappt das ganz gut, allerdings scheitere ich daran, herauszubekommen, welches Projekt gerade aktiv kompiliert wird. Ich finde bei der OTA nur "ActiveProject", was aber nicht immer das Projekt ist, das gerade kompiliert wird, sondern das, was in der IDE als "aktiv" markeirt wurde. Beispiel, wo es nicht funzt: Wenn man bei einem Projekt andere Projekte als Abhängigkeiten eingetragen hat, kann man ja mehrere EXEs auf einmal kompilieren (man wählt das Projekt an, das die anderen Projekte als Abhängigkeiten hat, drückt F9, dann werden die anderen Projekte, die in den Abhängigkeiten sind, vorher kompiliert). Soweit alles super, nur schaltet während der Kompilierphase die IDE das aktive Projekt nicht auf das Projekt um, das gerade als Abhängigkeit kompiliert wird. Somit zeigt das OTA-ActiveProject immer auf das aktive Projekt, das als letztes nach den Abhängigkeiten kompiliert wird und die Build-Automation für die Abhängigkeiten-Projekte schlägt fehl. Ich habe folgenden Code, um das gerade aktive Projekt für die Build-Automation zu ermitteln:
Delphi-Quellcode:
Das Problem ist hier das "ProjectGroup.ActiveProject". Das zeigt immer auf das gerade "aktive" Projekt, aber nicht, wenn gerade ein Projekt als Abhängigkeit kompiliert wird.// Get the currently active project function TehXBeforeAfterCompilation.GetCurrentProject: IOTAProject; var ModServices: IOTAModuleServices; Module: IOTAModule; Project: IOTAProject; ProjectGroup: IOTAProjectGroup; i: Integer; begin Result := nil; ModServices := BorlandIDEServices as IOTAModuleServices; for i := 0 to ModServices.ModuleCount - 1 do begin Module := ModServices.Modules[i]; if Supports(Module, IOTAProjectGroup, ProjectGroup) then begin Result := ProjectGroup.ActiveProject; // HIER! Das ist der Lump, der nicht funktioniert, da ActiveProject nicht das Projekt ist, das gerade compiliert wird. exit; end else begin if Supports(Module, IOTAProject, Project) then begin if Result = nil then Result := Project; end; end; end; end; Kann man das Projekt, das gerade kompiliert wird, auch irgendwie herausfinden? Finde dazu keine Funktion in der OTA-API... |
AW: Delphi OTA: Name des gerade KOMPILIERTEN Projekts ermitteln? (nicht ActiveProject
Bekommen die Compile-Events nicht das jeweilige Projekt als Parameter übergeben?
|
AW: Delphi OTA: Name des gerade KOMPILIERTEN Projekts ermitteln? (nicht ActiveProject
Zitat:
DANKE!!! fürs "vor den Kopf stossen"! :thumb: Merke: Fang nie das Coden ohne 3 Kaffee an... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz