Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   ToolsAPI Notification F9 (https://www.delphipraxis.net/186068-toolsapi-notification-f9.html)

win568 31. Jul 2015 09:40

ToolsAPI Notification F9
 
Hi

Ich suche derzeit in der ToolsAPI eine Notification, die ausgelöst wird, wenn der User F9 drückt, bevor der Compiler beginnt. Es gibt zwar die IOTAIDENotifier mit BeforeCompiler, nur wird diese auch bei Crlt+F9 ausgelöst. Ich bräuchte aber noch die Unterscheidung, ob nur F9 gedrückt wurde. Könnte es zwar mit Keyboard Shortcut auch lösen, es wäre mir aber ein Notifier lieber.
Ideen ??

Memnarch 31. Jul 2015 09:45

AW: ToolsAPI Notification F9
 
Direkt die Tasten zu unterscheiden wird schwierig. Könnte funktionieren (GetKeyState wäre hier wohl die wahl), aber das wirkt etwas schmutzig. Es gibt die Möglichkeit mitzubekommen bevor kompiliert wird und IIRC wenn der Prozess der debuggt werden soll gestartet wird.
Kannst du mir das Problem genauer schildern?

win568 31. Jul 2015 09:52

AW: ToolsAPI Notification F9
 
Hi

Wir modularisieren derzeit unsere Software. Um diese dann effizient compilieren zu können, haben wir eigene AddIns entwickelt, mit denen wir die gesamte Compilierung selber implementiert haben, da die Delphi eigenen dazu zu langsam und speicherfressend sind. Wenn ich nun mit F9 das Projekt starten möchte, soll vor dem Start, geprüft werden, ob das Startprojekt aktiv ist und wenn nicht automatisch umgeschaltet werden. Es gibt da zwar die BeforeProgramLaunch Methode im IOTADebuggerNotifier, jedoch ist es hier zu spät. Wir haben festgestellt, dass bei einem Umschalten zu diesem Zeitpunkt die IDE mehr Speicher beim Debuggen benötigt, als wenn ich vorher das Projekt umschalte und erst dann F9 drücke. Genau diesen Punkt möchte ich nun automatisieren. Deshalb benötige ich ein Event, das nach dem Drücken von F9, vor dem eigentlichen Compiler ausgeführt wird.

Memnarch 31. Jul 2015 09:56

AW: ToolsAPI Notification F9
 
Friss dich durch das MainMenü, grab die Action hinter Run(oder was du brauchst). Häng deine eigene an. Beim aufrufen machst du was du brauchst und rufst dann die originale Action auf.

EDIT: Das umschalten brauchst du, weil bei jedem neucompilieren eines Modules die Startapplikation auch neu gemacht werden muss? Ansonsten gäbs da ja entsprechende Debuggereinstellungen um für Launchprogramm des Modules.
EDIT2: Gegen (IDE)-Speicherhunger hilft auch das kompilieren als extern per MSBUILD (IIRC).

win568 31. Jul 2015 09:58

AW: ToolsAPI Notification F9
 
Hi

Die Idee ist mir zwar auch schon gekommen, jedoch wäre mir ein Notifier lieber :-D. Diese Art ist ja auch eher mehr ein Hack. Ich habe leider in der gesamten ToolsAPI nichts gefunden :?

Memnarch 31. Jul 2015 10:05

AW: ToolsAPI Notification F9
 
Kleiner Hack ja, aber wenn du länger in der IDE arbeitest wirst du merken das Hacks hier und da dazugehören. Du musst sie "nur" robust schreiben und darfst die nicht hinklatschen. Habe z.B. einen Hack geschrieben, der es mir ermöglicht endlich wieder korrekt die LibraryPath(und weitere Werte) für die einzelnen Platformen zu setzen(Win, OSX, Android...). Das ist ja in der ToolsApi broken seit der Multiplatformeinführung.

Aber nochmal zum Anfang: wofür genau musst du das Startprojekt vor dem modul kompilieren? Und warum musst du das überhaupt unterscheiden(F9 und CTRL+F9)?

win568 31. Jul 2015 10:15

AW: ToolsAPI Notification F9
 
Hi

Glaub mir, ich schreibe seit 2000 IDE PlugIns und habe bereits viele Hacks drinnen :roll:. Bin jedoch nur dann bereit, wenn gar nichts mehr geht, dass ich auf diese Art der Implementierung zurückgreife. Ich habe mir da bereits oft die Finger verbrannt und Fehler in diesem Bereich zu suchen ist enorm aufwändig :evil:.

Tja, mit Ctrl+f9 wird das aktive Package compiliert. Wenn der User nun F9 drückt, und es handelt sich um eine Projektgruppe mit Packages, schalte ich automatisch auf das vorher festgelegte Startprojekt (oder wenn keines festgelegt auf das erste zu startende Projekt in der Projektgruppe) um, damit er dann das Projekt debuggen kann. Funkt auch um BeforeLaunchProject, jedoch benötigt die IDE hier mehr Speicher, als wenn ich das Projekt umschalte, bevor dann der Compilelauf stattfindet.
Da es ja Packages sind, die erzeugt werden funkt dieser Weg. Wird eine Projektgruppe ohne Packages verwendet, wird ein anderes Verfahren verwendet.

Memnarch 31. Jul 2015 10:21

AW: ToolsAPI Notification F9
 
warum setzt du nicht die Debugger einstellungen des Projektes um das Startprogramm festzulegen und lässt den Rest die IDE machen? Da muss doch eigentlich kein Plugin her.

win568 31. Jul 2015 10:26

AW: ToolsAPI Notification F9
 
:-D. Geht wenn man nur mit einer Projektgruppe arbeitet. Da wir viele Unterschiedliche haben, teilweise mit mehreren Startprojekten, musste da eine Logik her. Je nach Anwendungsart wird dann das vorher festgelegte Startprojekt, dass zu der Projektgruppe gespeichert wird, gestartet.
Derzeit haben wir über 100 Projektgruppen. Das größte Projekt hat 17 Mio Locs. Ein Packageprojekt umfasst derzeit mehr als 90 Packages, die statisch bzw. dynamisch in die Exe gelinkt/geladen werden.

Memnarch 31. Jul 2015 10:38

AW: ToolsAPI Notification F9
 
könntest du nicht einfach per IDE-Plugin die Launchapplication für die Module beim before compile setzen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:56 Uhr.
Seite 1 von 2  1 2      

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