Seite 1 von 1

Heraus finden ob von IDE gestartet wurde

Verfasst: 15.03.2022 08:56
von MarkusR
Moin,
gibt es ein Befehl welcher mir sagt ob ich das Programm aus der IDE gestartet habe?
Oder nutzt Ihr da nur diese Compiler Optionen?
Ich möchte zur Laufzeit eine Unterscheidung zwischen Entwickler und User.

Re: Heraus finden ob von IDE gestartet wurde

Verfasst: 15.03.2022 10:53
von Olafmagne
Moin,

Über das menue Compiler/Compiler-Optionen/kompilieren\Sarten kann man eine kommandozeilen parameter mitgeben.

Vor dem Erstellen einer .exe, einfach einen entsprechenden Parameter, zB exe, eingeben, beim Sart aus der IDE zB IDE, und im Code den Parameter abfragen.
Et voila, Progamm weiss was Programmierer wünscht!

Re: Heraus finden ob von IDE gestartet wurde

Verfasst: 15.03.2022 11:00
von Kiffi
Da der Debugger ja nicht mit in die Exe kompiliert wird, könnte man es auch so versuchen:

Code: Alles auswählen

Global IsExe = #True

Procedure TestIfIsExe()
  IsExe = #False
EndProcedure

Debug TestIfIsExe()

MessageRequester("", Str(IsExe))

Re: Heraus finden ob von IDE gestartet wurde

Verfasst: 15.03.2022 12:25
von Benubi
Das wären wohl die praktikabelsten Möglichkeiten; etwas aufbeläht in meinen Worten zusammengefasst:

Bei den Compiler Optionen zum Source (ggf. in den Projekteigenschaften wenn das ein Projekt ist) kannst Du dann Startparameter für deine aus der IDE gestarteten Programme hinzufügen. Im Menü Compiler -> Compiler Options -> Kompilieren/Starten -> Executable-Kommandozeile einfach direkt die Parameter hinschreiben. Du könntest einen Startparameter einfügen und abfragen "--developer" oder "-dev". Dann würdest Du vermutlich im Code einen fest-programmierten Pfad nutzen...

Des Weiteren lässt sich in der selben Maske unter "Aktuelles Verzeichnis" ein alternativer Pfad eintragen. Also den Developer Pfad - dann brauchst Du den auch nicht mehr fest einprogrammieren und ggf. brauchst Du auch keinen Startparameter (aber doppelt gemoppelt hält besser).

Du kannst auch prüfen ob der Debugger an ist mit #PB_Compiler_Debugger.

Ansonsten müsstest Du mit GetCurrentDirectory() und/oder ProgramFilename() prüfen ob der Pfad einem Installationspfad entspricht; dein Executable kann, sofern kein Verzeichnis angegeben wurde, in mindestens drei verschiedenen Verzeichnissen ausgeführt werden (Source Verzeichnis, Temp, PB Wurzel- oder Kompilerverzeichnis), je nachdem wo das Ziel-Executable erzeugt wird. Daher auch das Häkchen mit "Temporäres Executable im Quellcode-Verzeichnis erstellen". Ist mMn komplizierter als Parameter und/oder Verzeichnis in der Compiler Options Maske einzutragen, und später abzufragen; und hübscher weil keine hardgecodeten lokalen Entwickler-Pfade im Executable verbleiben.

Re: Heraus finden ob von IDE gestartet wurde

Verfasst: 15.03.2022 13:19
von MarkusR
Danke euch allen.
Ist alles nützlich :)

Re: Heraus finden ob von IDE gestartet wurde

Verfasst: 25.03.2022 08:19
von helpy
Das mit der Debugger-Abfrage ist jedoch kein eindeutiges Zeichen dafür, dass ein Programm aus der IDE gestartet wurde.
(1) Ich kann eine EXE mit pbcompiler und aktiviertem DEBUGGER erzeugen und auch mit externem Debugger starten.
(2) Ein Programm kann aus der IDE auch ohne DEBUGGER gestartet werden.

Das eindeutigste ist die genannte Möglichkeit in der IDE in den Compiler-Optionen einen Startparameter "--StartedWithIDE" zu setzen und zu überprüfen.

Es gibt aber noch eine weitere Möglichkeit:
Wenn Ihr die Umgebungsvariable PUREBASIC_HOME im System nicht selbst setzt, dann könnt ihr im PB-Programm prüfen, ob diese existiert. Diese wird von der IDE auf das Verzeichnis gesetzt, in dem sich die IDE purebasic.exe befindet.

Re: Heraus finden ob von IDE gestartet wurde

Verfasst: 25.03.2022 11:28
von MarkusR
@helpy
Danke