Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Fummeln in der .dpr -> IDE ist verwirrt (https://www.delphipraxis.net/162581-fummeln-der-dpr-ide-ist-verwirrt.html)

Medium 30. Aug 2011 09:56

Fummeln in der .dpr -> IDE ist verwirrt
 
Moin!
Ich möchte gern zählen, wie oft meine Anwendung gestartet wird, und jede neue Instanz auf einen anderen Monitor schieben, bzw. nicht starten, wenn schon alle angeschlossenen Bildschirme "belegt" sind. Dabei will ich jedoch nirgends einen persistenten Zähler führen, also war meine Idee in der DPR folgendes zu tun:
Delphi-Quellcode:
var
  i: Integer;

const
  AppTitle = 'MyWindowNumber';

begin
  Application.Initialize;
  Application.Title := '_temp_';
  i := 0;
  while FindWindow('TApplication', PChar(AppTitle+IntToStr(i))) <> 0 do inc(i);
  Application.Title := AppTitle+IntToStr(i);
  if i<=Screen.MonitorCount then
  begin
    Application.CreateForm(...);
    // usw.
Dumm ist nur, dass ich dann das Programm auf einmal nicht mehr aus der IDE heraus starten kann! Erzeugen und die .exe starten tut wunderbar, in der IDE ist der Button einfach deaktiviert und F9 macht einfach nichts. Versuche ich das Projekt neu zu öffnen, bekomme ich diese nette Meldung:
Code:
---------------------------
Fehler
---------------------------
Fehler im Modul : Der Aufruf von Application.CreateForm fehlt oder ist nicht korrekt.
---------------------------
OK  Hilfe  
---------------------------
Witzigerweise geht auf einmal alles wieder, wenn ich aus obigem QT einfach die Zeile
Delphi-Quellcode:
Application.Title := AppTitle+IntToStr(i);
auskommentiere, was mir erstmal verdammt unlogisch vorkommt. Zumal ein Zuweisen des Titels 3 Zeilen zuvor offenbar kein Problem für die IDE war, und kompilieren so wie Starten ausserhalb Delphis geht ja auch mit dieser Zeile. Ich würd nur schon ganz gerne weiterhin debuggen können... Und das Projekt öffnen, ohne immer erst mit Notepad in der .dpr rumzukommentieren :stupid:. Was kann man da tun? (Gutes altes Delphi 7 hier. Es lebe Legacy! ;) )

Progman 30. Aug 2011 10:12

AW: Fummeln in der .dpr -> IDE ist verwirrt
 
Ich habe bereits auch die Erfahrung gemacht, dass in der dpr für Application.Titel keine Variablen genommen werden können bzw. es dann Probleme gibt.
Außerdem kommt Deplhi manchmal mit selbst gemachte Einträgen in der dpr nicht richtig klar, da sie dann einen Unterschied zu dem darstellen, was in den anderen Project-Dateien (meist XML?) steht.
Bei größeren eigenen Änderungen lösche ich einfach alle Project-Dateien außer .dpr .res und erzwinge so ein neues Erzeugen der anderen Dateien. Allerdings muss man dann die Optionen neu einstellen (Ausführungspfad u.ä.)

Medium 30. Aug 2011 10:41

AW: Fummeln in der .dpr -> IDE ist verwirrt
 
Das nenn ich ja mal einen blöden Bug. Und ich kann nachvollziehen, dass es an der Nichtbenutzung eines Literals liegt - die Konstante allein geht nämlich auch nicht. Da ich aber kaum mehr als 4 Bildschirme pro PC erwarten muss, tut es zunächst ein Workaround der Art hier:
Delphi-Quellcode:
  case i of
    0: Application.Title := 'MyWindowNumber0';
    1: Application.Title := 'MyWindowNumber1';
    2: Application.Title := 'MyWindowNumber2';
    3: Application.Title := 'MyWindowNumber3';
  end;
Grottenhäßlich, aber dann muss ich dieses Bauchweh wohl akzeptieren :(

Danke dir!

Stevie 30. Aug 2011 14:36

AW: Fummeln in der .dpr -> IDE ist verwirrt
 
Das Problem liegt daran, dass Delphi die dpr parsed um so einige Dinge in den Projekt optionen einstellbar zu machen (Titel der App, erstellte Forms, etc). Du könntest deine speziellen Sachen in eine eigene Unit packen und diese als Prozedur in der main aufrufen.

Medium 30. Aug 2011 16:07

AW: Fummeln in der .dpr -> IDE ist verwirrt
 
Mein Verdacht bzgl. der Ursache ist da de gleiche. Nur hat es mich doch etwas gewundert, dass der Parser da an etwas eher banalem scheitert, wenn man doch bedenkt, dass die selbe Firma den gebaut hat, die nen ganzen Compiler hinbekommen hat - nen recht guten dazu :mrgreen:. Zumal es logisch "holpert", da man ja keinerlei syntaktischen Fehler gemacht hat. Es kompiliert halt auch.
Nunja, ist ja kein Beinbruch, und wenn das etwas umfangreicher würde, ist das Auslagern auch eine prima Idee. Danke!

himitsu 30. Aug 2011 16:21

AW: Fummeln in der .dpr -> IDE ist verwirrt
 
IDE und Compiler scheinen unterschiedliche Parser zu nutzen. (bis XE ... ich hoffe das hat sich jetzt geändert)
Und dann kann es noch sein, daß die Projekt-Optionen nur an bestimmten Stellen (ohne Verschaltelung ala IF) nach diesem Zeug suchen.

Stevie 30. Aug 2011 18:45

AW: Fummeln in der .dpr -> IDE ist verwirrt
 
Das ganze ist mir aufgefallen, als ich mal das Application.Initialize aus der dpr genommen und in einer anderen Unit ausgeführt hatte und plötzlich keine Runtime Themes mehr anschalten konnte in den Projektoptionen. Sobald es wieder in der main steht ist alles gut.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:38 Uhr.

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