AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung FMX anwendung optional als konsolen Anwendung betreiben
Thema durchsuchen
Ansicht
Themen-Optionen

FMX anwendung optional als konsolen Anwendung betreiben

Ein Thema von QuickAndDirty · begonnen am 15. Sep 2022 · letzter Beitrag vom 16. Sep 2022
Antwort Antwort
Seite 1 von 2  1 2      
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.883 Beiträge
 
Delphi 12 Athens
 
#1

FMX anwendung optional als konsolen Anwendung betreiben

  Alt 15. Sep 2022, 16:50
Hallo, Ich habe eine Nützliche funktion die in einer FMX Anwendung liegt,
über einen Startparameter nach außen verfügbar gemacht.
Dann führt die Exe nur diese eine Funktion aus und beendet sich wieder.
Jetzt ist es so, dass FMX Anwendungen ja nicht auf W2K laufen.
Wenn ich im Programmteil, sobald der startparameter gefunden wird, dafür sorge, dass keine "FMX.Forms" erstellt werden,
kann ich dann davon ausgehen, das das Programm auf W2K lauffähig ist?
Die Funktion benötigt dennoch Components , aber keine Controls, vor allem weil sie eben FireDac und einen SoapClient benötigt.

Was macht, dass W2K FMX anwdungen als "ist keine W32 Anwedung" betrachtet?
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: FMX anwendung optional als konsolen Anwendung betreiben

  Alt 15. Sep 2022, 17:13
Muss ja nicht zwangsläufig FMX sein was einen Showstopper im Gepäck hat, sondern praktisch ein beliebiger Teil in der RTL.

Dieses scheußliche Konzept der Unit-initialization nimmt einem ja auch jegliche Kontrolle was deine .exe alles anstellt bevor auch nur deine allererste Zeile ausgeführt wird.

Niemand wird dir eine Garantie geben können, dass ein FMX-Programm zu 100% das tut was du dir vorgestellt hast.
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.479 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: FMX anwendung optional als konsolen Anwendung betreiben

  Alt 15. Sep 2022, 17:26
Ich denke auch, Du wirst es einfach ausprobieren müssen, zumal wir nicht wissen, welche Units Du alle verwendest. Es wurde ja hier schon angesprochen, allein aufgrund der Initialisierungen können Sachen aufgerufen werden, die an neue Techniken anknüpfen, die eben in W2K nicht vorhanden sind.

Wenn es nicht klappt, evtl. auch mal versuchen mit den GlobaluseXXX = false neue Beschleunigungs-Techniken für die Anzeige zu deaktivieren.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.142 Beiträge
 
Delphi 12 Athens
 
#4

AW: FMX anwendung optional als konsolen Anwendung betreiben

  Alt 15. Sep 2022, 17:27
Und auch statische Links auf Funktionen (WinAPI) und damit auch auf DLLs,
welche dort nicht vorhanden sind, würden sofort beim Start knallen, noch lange bevor irgendein Code von dir ausgeführt würde.

Fazit: Du mußt deinen Code auslagern (z.B. DLL oder BPL), wo dann sonst nichts Böses enthalten ist.


Rate mal, warum ich gern Delayed-Importe nutze (man kann aber auch dynamische Importe nutzen, also LoadLibrary+GetProcAddress), für Dinge, die eventuell nicht vorhanden sind werden.


Und wer ganz böse ist ... da EXE und DLL das selbe PE-Format und die gleiche Eintrittsprozedur implementieren,
könnte man eine EXE auch als DLL laden (und mit bissl Gekacktem auch andersrum) ... wobei die DLL als EXE zu laden bissl krank ist und man da besser den DLLHost von Windows für benutzt.


Zitat:
ist keine W32 Anwedung
Das dürfte wohl eher nicht am FMX liegen,
sondern daran, dass aktuelle Delphis eine höhere PE-Version angeben,
welche W2K nicht unterstützt / nicht kennt.

Wenn ja, dann wäre es auch egal, ob du so kompilierst, dass FMX garnicht enthalten ist.
Du könntest aber den PE-Header umschreiben (ich glaub die Version ging auch irgendwie als Compiler-Directive, oder eben nach dem Kompilieren die Bits drehen)
Oder du mußt eben ein älteres Delphi nutzen.


Problem bei Fehlermeldungen wie "ist keine W32 Anwedung" ist aber, dass diese Fehlermeldung garnicht von der EXE selber kommen muß,
sondern es kann auch über eine DLL kommen, welche geladen werden soll und die dann nicht passt.
(du weißt nicht von wo der Fehlercode kommt, da Microsoft zum GetLastError leider keine ZusatzInfos bereitstellt, also einen "Text", wo z.B. der Dateiname zum Fehlercode drin stünde)
Da kannst du nur mit dem ProcessExplorer schauen, was versucht wird zu laden und das Letze dürfte dann das sein, was wirklich knallt.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (15. Sep 2022 um 17:37 Uhr)
  Mit Zitat antworten Zitat
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
480 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: FMX anwendung optional als konsolen Anwendung betreiben

  Alt 15. Sep 2022, 20:09
@himitsu
Zitat:
...könnte man eine EXE auch als DLL laden
Wie soll das funktionieren? Bei meinen Versuchen hat es immer geknallt. Daher mache ich es auf die "kranke Weise".
Bernd
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.009 Beiträge
 
Delphi 12 Athens
 
#6

AW: FMX anwendung optional als konsolen Anwendung betreiben

  Alt 15. Sep 2022, 21:21
Ich habe das schon lange ad acta gelegt und mache für eine Kommandozeilenversion immer ein separates Projekt. Dabei ist der eigentliche Code in den entsprechenden Units vorhanden und wird bei Bedarf sowohl von der GUI- als auch von der CMD-Variante verwendet. Damit hält sich die Pflege in vertretbaren Grenzen und es lebt sich damit deutlich befreiter.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.908 Beiträge
 
Delphi 12 Athens
 
#7

AW: FMX anwendung optional als konsolen Anwendung betreiben

  Alt 16. Sep 2022, 07:35
Ich habe das schon lange ad acta gelegt
Darf man fragen warum ?
Ich habe mir einen zentralen Verwalter für gui/console gebaut, der im DPR ganz früh die Verarbeitung übernimmt und im Konsolenbetrieb auch Tastaturbefehle abfängt und eine MessageLoop simuliert.
So kann ich gui und console Betrieb sauber in Module trennen, und bei Bedarf sogar von console auf GUI umschalten und erst bei Bedarf erzeugen.
Zurück komme ich da dann durch Application.Hide, vermutlich könnte ich das gui aber auch irgendwie zerstören, da sehe ich aber keinen Sinn drin wenn man das mal gelauncht hat.

Das habe ich zwar nur mal testweise in kleineren Projekten gemacht und nutze das nicht in großen produktiven Projekten,
allerdings ich sehe keinen Grund warum man das nicht machen sollte.
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.883 Beiträge
 
Delphi 12 Athens
 
#8

AW: FMX anwendung optional als konsolen Anwendung betreiben

  Alt 16. Sep 2022, 08:33
Wenn es nicht klappt, evtl. auch mal versuchen mit den GlobaluseXXX = false neue Beschleunigungs-Techniken für die Anzeige zu deaktivieren.
Hatte schonmal alle GlobalUse* Variablen deaktiviert...hat damals nichts gebracht. Aber da wollte ich noch erreichen , dass das Forumlar gezeichnet wird...in W2K
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.883 Beiträge
 
Delphi 12 Athens
 
#9

AW: FMX anwendung optional als konsolen Anwendung betreiben

  Alt 16. Sep 2022, 08:39
Ich habe das schon lange ad acta gelegt und mache für eine Kommandozeilenversion immer ein separates Projekt. Dabei ist der eigentliche Code in den entsprechenden Units vorhanden und wird bei Bedarf sowohl von der GUI- als auch von der CMD-Variante verwendet. Damit hält sich die Pflege in vertretbaren Grenzen und es lebt sich damit deutlich befreiter.
Der UI und BL code sind sauber getrennt. Ich würde es auch so machen wie du. Es gibt leider andere Zwänge die es notwendig machen diese Exe Datei zu benutzen.
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.883 Beiträge
 
Delphi 12 Athens
 
#10

AW: FMX anwendung optional als konsolen Anwendung betreiben

  Alt 16. Sep 2022, 08:45
[QUOTE=Rollo62;1511866]
Das habe ich zwar nur mal testweise in kleineren Projekten gemacht und nutze das nicht in großen produktiven Projekten,
allerdings ich sehe keinen Grund warum man das nicht machen sollte.
Es ist ein kleines Projekt!
Ich habe bisher nur VCL-GUI Anwendung und VCL-Dienst Anwendungen in einem Projekt untergebracht (in der dpr) .
Deswegen wollte ich wissen ob ich eine in W2K lauffähige konsolen Anwendung die einen kleinen teil der Business Logic der Anwendung verfügbar macht
UND
eine FMX Anwendung die ja nicht auf W2K zum laufen zu kriegen ist, in einem Projekt unterbringen kann.
Reich es in der DPR die FMX forms nicht zu erzeugen? Oder Darf es auch kein Application object sein? Das wäre evtl schlecht...
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:08 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