![]() |
Gibt es eine Schnittstelle zur IDE?
Hallo,
ich habe vor einiger Zeit mal ein eigenes quasi PositionsMarker-Programm geschrieben und welches eigentlich auch schon ganz gut mit dem Delphi10 zusammenarbeitet. Trotzdem aber möchte ich das noch etwas perfektionieren. Hierfür nötig wäre dann allerdings so etwas wie eine Schnittstelle zur IDE, über die man diese IDE dann (per PostMessage oder wie sonst auch immer) ansprechen kann, um bestimmte Parameter bezüglich des gerade angezeigten .Pas-Files abzufragen. Oder auch um spezielle Befehle bzgl. dieses Files da hinschicken und dann ausführen lassen zu können. Zum Beispiel um die IDE zuerst zu fragen, ob dieser aktuelle .Pas-File gerade gesavt vorliegt, und wenn nicht, dann auch einen Befehl dort hinschicken zu können, um die IDE zu veranlassen, das doch dann bitte zu tun. Schön wäre in diesem Sinne z.B. auch, wenn man den jeweils aktuell gerade angezeigten .Pas-File auch noch irgendwie schnell auslesen könnte, um dann darin (ohne ihn vorher immer zuerst saven zu müssen) bestimmte Stellen schnellst möglich suchen zu können etc... Frage also: Gibt es so eine IDE-Schnittstelle überhaupt, die man für sowas nutzen könnte? Thx im Voraus. Gruß ... |
AW: Gibt es eine Schnittstelle zur IDE?
OpenToolsAPI (OTA)
Du kannst ein DesignTime-Package erstellen, was in der IDE hängt und mit der IDE reden kann. Und da kannst dir dann auch deine Schnittstellen nach außen reinbauen und durchreichen. (quasi eine Middleware) ![]() ![]() ![]() ![]() uvm. |
AW: Gibt es eine Schnittstelle zur IDE?
Besten Dank für das Info.
Da werde ich gleich mal etwas die Nase reinstecken *g* |
AW: Gibt es eine Schnittstelle zur IDE?
Einie direkte Hilfe gibt es nicht.
Die Units selbst sind die "offizielle" Dokumentation, vor allem die Kommentare in der ToolsAPI.pas Package: DesignIntf.dcp und die restlichen Units im Verzeichnis C:\Programme\Embarcadero\RAD Studio\*\source\ToolsAPI. Und dann gibt es noch paar Fremdkomponenten, die das Kapseln, und ein paar Tutorials und Blogs. |
AW: Gibt es eine Schnittstelle zur IDE?
Es ist schon recht mühsam, damit voran zu kommen...
Geduld braucht man auf jeden Fall. |
AW: Gibt es eine Schnittstelle zur IDE?
Dave's Development Blog muss bei diesem Thema auf jeden Fall genannt werden:
![]() ![]() |
AW: Gibt es eine Schnittstelle zur IDE?
Zitat:
|
AW: Gibt es eine Schnittstelle zur IDE?
Der Support verweißt immernoch auf die Kommentare darin, wenn man was sucht.
Wobei ich das auch immer häufiger so mache, also via PasDoc für die Codevervollständigung und das HelpInsight direkt die Hilfe rein und auch die internen Funktionen/Klassen so kommentiert. Ich finde da als Vorteil, dass man bei der Benutzung direkt die Hilfe sieht und bei der Entwicklung direkt auch die Hilfe mit vor Augen hat und sie somit bei Änderungen umgehend anpassen kann. Also ein direkter Nachteil ist es nicht, auch wenn bei der ToolsAPI ein paar Beispiele dort drin fehlen und es ein bissl braucht, bis man das grundlegende Prinzip erkannt hat. > Nahezu alle grundlegenden Eintrittspunkte, da endet der Name des Interfaces mit "Services" und man kommt über Cast aus den Varialen BorlandIDEServices (zur Laufzeit) oder SplashScreenServices (beim Startvorgang der IDE) dort rein und dann hangelt man sich dort weiter durch. > In den Units nametlich etwas suchen, was man möchte, und dann den Weg zum passende ServiceInterface rausfinden. |
AW: Gibt es eine Schnittstelle zur IDE?
Danke allen.
Leider aber habe ich schon beim Minimal-Experten "Hello World", mit dem ich dieses Kapitel schnell mal einfacherweise beginnen wollte, das wahrscheinlich auch schon erst mögliche Problem, welches da nach dem Compilierversuch lautet: [dcc32 Fataler Fehler] HelloWorldExpert_Unit.pas(5): F2613 Unit 'ToolsAPI' nicht gefunden. bzgl. dieses Quellcodes:
Delphi-Quellcode:
unit HelloWorldExpert_Unit;
interface uses ToolsAPI; type THelloWorldExpert = class(TNotifierObject, IOTAWizard, IOTAMenuWizard) function GetIdString: string; function GetName: string; function GetState: TWizardState; function GetMenuText: string; procedure Execute; end; ... Wie muss dieses ToolsAPI bei Delphi10.3.3 in der uses-clausel denn genau angegeben werden? Habe die Delphi10.3.3-Prof Version. |
AW: Gibt es eine Schnittstelle zur IDE?
Zitat:
1. "Link with runtime packages" einschalten 2. Designide package zur Liste hinzufügen |
AW: Gibt es eine Schnittstelle zur IDE?
Ich habe es zwar auch schon ein paar mal genutzt, kann aber keine konkrete Problemlösung anbieten.
Es sind einige Schritte zu beachten, insbesondere muss auch das Package entsprechend eingerichtet werden, damit es in der IDE eingebunden werden kann. Schau mal an dem folgenden Beispiel, was man grundsätzlich tun muss: ![]() Davon ausgehend hatte ich mich dann weiter gehangelt... |
AW: Gibt es eine Schnittstelle zur IDE?
Dank allen für die Tipps!
|
AW: Gibt es eine Schnittstelle zur IDE?
Wenn ich ein Package per Datei>Neu>Package neu erzeuge und ich dort diese HelloWorldExpert_Unit.pas eingetragen habe, dann kompiliert er mir dieses Package nun auch ohne Fehler. Bzw. er führt auch den Menü-Punkt "erzeugen" ohne Fehler aus. Nur dass dabei jetzt aber eine Package1.dproj -Datei und keine .bpl-Datei entsteht, wie ich sie aber brauche, um sie in die Package-Liste unter Options.. mit aufnehmen zu können.
Wie komme ich denn nach erfolgreichem Kompilieren von Package1.dproj jetzt auch noch zu dieser .bpl-Datei? Thx. |
AW: Gibt es eine Schnittstelle zur IDE?
Hast Du designide unter erforderten Packages bei Deinem Package eingetragen?
Das ist eine Voraussetzung für die Installation als Delphi-Experten. Ob Dich das jetzt weiter bringt, kann ich aber nicht wirklich einschätzen. |
AW: Gibt es eine Schnittstelle zur IDE?
Doch hatte ich. Sonst hätte ich ja wahrscheinlich auch garnicht fehlerlos kompilieren (und das "erzeugen" ausführen) können.
|
AW: Gibt es eine Schnittstelle zur IDE?
Die DPROJ entsteht nicht beim Compilieren, sondern schon beim Öffnen/Erstellen einer DPR/DPK, wenn sie noch fehlt.
DPR (Delphi-PRogramm oder -PRoject), bzw. DPK (Delphi-PacKage) sind der Projekt-QuellCode und DPROJ (Delphi-PROJect) die Projekt-Optionen (BuildScript). Die BPL landet im Package-Ausgabeverzeichnis und hast du das nicht selbst angegeben, dann darfst dort suchen: C:\Users\Public\Documents\Embarcadero\Studio\20.0\ Bpl PS: Rechts, in der Projektverwaltung, da hast im Kontextmenü direkt ein "Installieren", ansonsten Hauptmenü > Komponente > Package installieren ... |
AW: Gibt es eine Schnittstelle zur IDE?
Ja, gefunden, danke. Leider aber ist im Hilfe-Menue von Delphi diese Zeile 'Mein erster Experte: HelloWorld' nicht aufgetaucht. Auch nach einem Restart Delphis nicht. Woran könnte das event. noch liegen?
Hier der Programm-Code der allerdings seinerzeit für Delphi6 geschriebe wurde:
Delphi-Quellcode:
unit HelloWorldExpert_Unit;
interface uses ToolsAPI, Vcl.Dialogs; type THelloWorldExpert = class(TNotifierObject, IOTAWizard, IOTAMenuWizard) function GetIdString: string; function GetName: string; function GetState: TWizardState; function GetMenuText: string; procedure Execute; end; implementation function THelloWorldExpert.GetIDString: string; Begin result:='BlackBird.HelloWorld'; end; function THelloWorldExpert.GetName: string; Begin result:='Hello-World Experte'; end; function THelloWorldExpert.GetState: TWizardState; Begin result:=[wsEnabled]; end; function THelloWorldExpert.GetMenuText: string; Begin result:='Mein erster Experte: HelloWorld'; end; procedure THelloWorldExpert.Execute; Begin ShowMessage('Hello World'); end; procedure Register; Begin RegisterPackageWizard(THelloWorldExpert.Create as IOTAWizard); end; end. |
AW: Gibt es eine Schnittstelle zur IDE?
sieht eigentlich OK aus.
Dein Package ist auch installiert und geladen? Man könnte jetzt in die Packageliste gucken oder schnell noch eine Zeile ganz unten einfügen.
Delphi-Quellcode:
initialization
ShowMessage('Moin.'); end. |
AW: Gibt es eine Schnittstelle zur IDE?
Moin, moin, :stupid:
installiert habe ich das, wie du geraten, per Install-MenueZeile im Kontextmenue der .bpl-Datei in der Projektverwaltung. Aber "geladen"? ..habe ich da nichts extra. Ansonsten steht dieses neue Package in der Package-Liste unter Projekt>Optionen>Packages ganz oben am Listenanfang. Und auch wenn ich diese Initialization + showMessage('Moin'); -Anweisungen noch in den Experten einbaue, taucht nach jedem Kompilieren oder Erzeugen des Packages so ein "Moin"-MessageWindow auf. Ich nehme an, damit bin ich auf dem richtigen Wege. Diese erwartete Menuezeile im Hilfe-Menue bleibt allerdings irgendwie noch verschollen! |
AW: Gibt es eine Schnittstelle zur IDE?
Hast Du mal alle Untermenüs durchgeschaut?
Bei Delphi 7 kamen die Menüeinträge der selbst gebauten Experten (wenn ich mich recht entsinne) ins Hilfemenü. Wenn man's woanders hin haben wollte, so musste man das im Quelltext entsprechend veranlassen. Wie's bei aktuellen Delphis ist, weiß ich nicht. |
AW: Gibt es eine Schnittstelle zur IDE?
Ich habe Deinen Code jetzt nicht genauer angesehen, aber vielleicht hilft das weiter:
![]() |
AW: Gibt es eine Schnittstelle zur IDE?
@Delphi.Narium: Auch in den Untermenues des Hilfemenues (Auswahlpunkt des Hauptmenues) ist diese zusätzliche Zeile leider nicht aufgetaucht.
@himitsu, seitdem ich dieses initialization + showMessage('Moin') da noch mit eingebaut hatte, taucht übrigens bei jedem neuen Starten des Delphis mitten auf dem Delphi-StarterScreen auch so kleines Moin-MessageWindow auf. Also dürfte das Package damit wahrscheinlich doch schon irgendwie richtig geladen sein. Aber wie gesagt, die zusätzliche Menuezeile bleibt verschollen. @stahli: Thx, ![]() edit: noch den Link des funktionierenden Beispiels eingefügt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:04 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