![]() |
Delphi-Version: 5
Bedingte Kompilierung, wenn IDE gestartet ist
Hallo zusammen,
ich möchte über Compilerschalter bzw. -direktiven erkennen, ob die IDE gerade gestartet ist, d.h. ob ich im Debugmodus bin. Ich stelle mir das in etwa so vor:
Code:
Eine selbstgeschriebene Funktion "IsIDEStarted: boolean" (diese fragt auf DebugHook <> 0 ab) habe ich schon. Sie nützt mir aber nichts, da ich mit Konstanten arbeiten will und ich diese natürlich nicht dynamisch verändern kann.
const
{$IF DEBUG} MY_VALUE = 50; YET_ANOTHER_VALUE = 10; {$ELSE} MY_VALUE = 25; YET_ANOTHER_VALUE = 5; {$END} Gibt es dafür eine Lösung? MfG Dietmar |
AW: Bedingte Kompilierung, wenn IDE gestartet ist
Erklär doch mal, warum das eine Konstante sein soll/muss.
Imho gibt es für die Abrage da keinen Unterschied. Man fragt ab
Delphi-Quellcode:
und es ist egal, ob Konstante oder Funktion
if IsIDEStarted then
|
AW: Bedingte Kompilierung, wenn IDE gestartet ist
Ein Kompilerschalter bestimmt zur compiletime was kompiliert wird. Das Problem ist dabei, dass du das Programm ja zuerst debuggen kannst und dann diese Exe nutzen kannst.
Das heißt mit einem Kompilerschalter wird es nicht funktionieren, da er zur compiletime nicht weiß ob er debuggen wird. MfG Fabian |
AW: Bedingte Kompilierung, wenn IDE gestartet ist
Liste der Anhänge anzeigen (Anzahl: 1)
![]() ![]() ![]() zu ![]() und auch auf Luckies Webseite gibt es ein Beispiel und ich glaub auch noch einen Artikel. Zitat:
(abgesehn, daß eigentlich fast immer ein Debugger vorhanden ist, wärend du in der Delphi-IDE dein Programm kompilierst) [add] Ob ein Debugger läuft kannst du also niemals beim Kompilieren auswerten. Aber z.B. neuere Delphis kennen mehrere Projektoptionen/Profile und beim Debug-Profil wird ein Compilerschalter "DEBUG" gesetzt, welcher über {$IFDEF DEBUG} genutzt werden kann. Bei älteren Delphis mußt du diesen in den Projektoptionen selber setzen. Achtung: Solche Optionen gelten nur für neukompilierte Dateien, also Strg+F9 nicht vergessen, nachdem das umgestellt wurde. Also entweder du nutzt unterschiedliche Compilerprofile, welche aber nicht automatisch umschalten oder du kannst erst zur Laufzeit prüfen und kannst keine Konstanten nutzen. |
AW: Bedingte Kompilierung, wenn IDE gestartet ist
Entschuldigt bitte, dass ich diese Thema wieder aufwärme. Ich möchte aber gern auf den exakten Titel/Betreff zurück kommen:
Ich habe ein Programm, dass de facto wie ein TSR arbeiten soll. Ich möchte hier nicht diskutieren, warum, weshalb, wieso. Dazu setze ich schon in der dpr-Datei
Delphi-Quellcode:
, weiterhin wird bei
Application.ShowMainForm:= False;
Delphi-Quellcode:
CanClose auf False gesetzt und stattdessen nur ein
OnFormCloseQuery
Delphi-Quellcode:
ausgeführt. Das klappt auch perfekt.
Hide;
Wenn ich das Programm aber bearbeite, ist dieses Verhalten nervig. Ich muss dann das Programm jedes Mal über den Taskmanager von Hand abwürgen bzw. dafür sorgen, dass das Hauptfenster
Delphi-Quellcode:
gesetzt wird.
Visible:= True;
Schöner wäre es, wenn ich - der Debugger ist mir dabei völlig schnurz - per Compilerschalter feststellen könnte, ob die IDE läuft. Damit wäre das Arbeiten am Code wesentlich einfacher. Also gibt es einen Schalter für die IDE? |
AW: Bedingte Kompilierung, wenn IDE gestartet ist
Nein, das musst du selbst prüfen.
|
AW: Bedingte Kompilierung, wenn IDE gestartet ist
Hallo,
mach das doch von einem Parameter abhängig. Beim Start aus der IDE (Menupunkt Start-Parameter) setzt du diesen Parameter, sonst nicht. Und zum Schluss noch ein IFDEF kurz vorm Release, damit nicht jemand das Programm per Parameter selber startet. Heiko |
AW: Bedingte Kompilierung, wenn IDE gestartet ist
Die imho bessere Alternative sind unterschiedliche Defines für Debug- und Release-Build.
|
AW: Bedingte Kompilierung, wenn IDE gestartet ist
Zitat:
Delphi-Quellcode:
So mach ich das schon sehr lange und es funzt. Ich hab mir sogar eine kleine App mit dem Fenstertitel 'TAppBuilder' erstellt und das Projekt Bds.dpr genannt. Diese kleine Exe starte ich dann bei Problemen mit der ursprünglichen Anwendung und gaukle der somit vor, dass die Delphi-IDE läuft. Damit kannst du quasi deine App dann beim Kunden "debuggen". Extrem praktisch.
function IsDelphiRunning: boolean;
begin Result := FindWindow('TAppBuilder', Nil) > 0; end; [OT]So nebenbei bemerkt: Das Prinzip mit der eigenen Bds.exe funktioniert sogar mit einigen Bibliotheken zum Testen, die nur laufen, wenn die BDE gestartet ist.[/OT] |
AW: Bedingte Kompilierung, wenn IDE gestartet ist
Probier mal
Delphi-Quellcode:
Wobei man fairerweise wohl dazu sagen muss, daß
if DebugHook > 0 then
ShowMessage('Debugger ist da') else ShowMessage('Kein Debugger'); ![]() Sherlock |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:40 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