Autor Beitrag
delphi10
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 447
Erhaltene Danke: 2

W2K, XP, Vista64, Win7 64
RAD-Studio 2010
BeitragVerfasst: Do 11.03.10 14:41 
Hallo
Kann ein Programm feststellen, ob es aus der IDE oder mittels Doppelclick im Explorer gestartet wurde? Ich habe jetzt folgende Lösung eingebaut: In der IDE setze ich einen Parameter, der im Programm abgefragt wird. Dieser Parameter ist ja nur beim Start aus der IDE vorhanden, beim Start aus dem Explorer nicht. Funktioniert, aber es scheint mir nicht besonders elegant zu sein. Ein Compiler-Schalter o.ä. wäre mir lieber.
Hintergrund: Ich habe im Prog. einen Selfcheck implementiert, der aber leider bei einem Start aus der IDE (durchaus berechtigte) exceptions ohne Ende produziert. Gut, ich könnte den Check auch auskommentieren und zum Release wieder einbauen, ich will aber sichergehen, dass ich es nicht vergesse.
Besten Dank für Tipps oder Link.
Gruß Delphi10

_________________
Salus populi suprema lex esto
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 11.03.10 14:51 
Du kannst prüfen ob das Programm gerade debuggt wird. Allerdings passiert das dann auch, wenn du es auf einem anderen PC aus Delphi heraus machst, aber nicht, wenn du es ohne Debugging aus der IDE startest.

Ich selbst habe das sehr viel einfacher gelöst. Zum Release kompiliert das Releaseskript die Exe einfach mit einer anderen Includedatei. Das geht automatisch, da es einfach die entsprechende Zeile in der Projektdatei durch die andere ersetzt und nach dem Kompilieren wiederherstellt. Vorher löscht es auch noch das Ausgabeverzeichnis und erstellt so alles neu bevor es automatisch das Setup erstellt und die fertigen Pakete auf den FTP-Server hochlädt.

Das geht seit XP mit den erweiterten Shellbefehlen direkt per Batchdatei, einfacher ist natürlich ein kleines Tool, das in der Batchdatei ausgerufen wird und die Zeile ändert.

Auf diese Weise kann ich mittels kleinen Änderungen an den Buildskripten die Compilerschalter für verschiedene Versionen sehr einfach setzen und diese automatisiert erstellen. Und ich habe eben ohne Skript eine Debugversion, die ich jederzeit in Delphi laden und weiterentwickeln kann.


Zuletzt bearbeitet von jaenicke am Do 11.03.10 14:52, insgesamt 2-mal bearbeitet
Nersgatt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1581
Erhaltene Danke: 279


Delphi 10 Seattle Prof.
BeitragVerfasst: Do 11.03.10 14:52 
Ich glaube, das wäre das falsche Vorgehen. Erklär mal, warum die Anwendung Exceptions wirft, wenn Sie aus der IDE gestartet wird und warum sie diese nicht wirft, wenn sie direkt gestartet wird.

_________________
Gruß, Jens
Zuerst ignorieren sie dich, dann lachen sie über dich, dann bekämpfen sie dich und dann gewinnst du. (Mahatma Gandhi)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 11.03.10 14:58 
Die Exe wird die dort vermutlich auch werfen, nur dass man davon nichts sieht, weil man die Exceptions ja (ggf. nach deren Weitergabe usw.) abfängt. Beim Debuggen zeigt Delphi aber diese dann auch an. Und die dann in Delphi zu unterdrücken ist auch keine sinnvolle Lösung, denn dann sieht man diese auch an anderen (unerwarteten) Stellen nicht mehr.

Das war jedenfalls einer der Gründe weshalb ich es so mache wie ich es im Moment mache.
Tastaro
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 414
Erhaltene Danke: 23



BeitragVerfasst: Do 11.03.10 15:34 
Um die gestellte Frage zu beantworten:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
if DebugHook <> 0 then
begin
   //DebugHook ist dann <> 0, wenn aus der IDE gestartet wurde
end;


Beste Grüße
delphi10 Threadstarter
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 447
Erhaltene Danke: 2

W2K, XP, Vista64, Win7 64
RAD-Studio 2010
BeitragVerfasst: Fr 12.03.10 15:06 
Hallo
Erstmal Danke für Eure schnellen und kompetenten Antworten.
@jaenicke: Ist sehr flexibel und läßt sich für vielfältige Zwecke formulieren
@Tastaro: Genau auf den Punkt gebracht.
Eingebaut habe ich erstmal die Lösung vom Tastaro, was ohne großen Umbauaufwand erledigt war. Langfristig und bei größeren Projekten werde ich aber jaenickes Vorschlag präferieren. Letztendlich lösen aber beide mein Problem.
Gruß Delphi10

_________________
Salus populi suprema lex esto
hathor
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 12.03.10 20:08 
Stichwort: Design Time Control