AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Delphi OTA: Name des gerade KOMPILIERTEN Projekts ermitteln? (nicht ActiveProject)
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi OTA: Name des gerade KOMPILIERTEN Projekts ermitteln? (nicht ActiveProject)

Ein Thema von blackfin · begonnen am 8. Jun 2012 · letzter Beitrag vom 8. Jun 2012
Antwort Antwort
blackfin
(Gast)

n/a Beiträge
 
#1

Delphi OTA: Name des gerade KOMPILIERTEN Projekts ermitteln? (nicht ActiveProject)

  Alt 8. Jun 2012, 10:53
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:

// 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;
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.
Kann man das Projekt, das gerade kompiliert wird, auch irgendwie herausfinden? Finde dazu keine Funktion in der OTA-API...

Geändert von blackfin ( 8. Jun 2012 um 10:58 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.155 Beiträge
 
Delphi 12 Athens
 
#2

AW: Delphi OTA: Name des gerade KOMPILIERTEN Projekts ermitteln? (nicht ActiveProject

  Alt 8. Jun 2012, 10:57
Bekommen die Compile-Events nicht das jeweilige Projekt als Parameter übergeben?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#3

AW: Delphi OTA: Name des gerade KOMPILIERTEN Projekts ermitteln? (nicht ActiveProject

  Alt 8. Jun 2012, 11:01
Zitat von himitsu:
Bekommen die Compile-Events nicht das jeweilige Projekt als Parameter übergeben?
Oh mann, manchmal bin ich echt blind.....

DANKE!!! fürs "vor den Kopf stossen"!

Merke: Fang nie das Coden ohne 3 Kaffee an...
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz