Seite 1 von 1

Ausgabe in Kommandozeile wenn /PM:PM

Verfasst: Mo, 07. Mär 2016 9:49
von Wonderer
Ich habe hier ein Programm welches umgestellt wurde auf GUI.

Wie kann ich jetzt dennoch in der Kommandozeile - wenn dort der Aufruf erfolgt - eine Ausgabe vornehmen?
Angenommen das Programm erwartet Kommandozeilen-Parameter und prüft auch am Anfang einige Datenbanken ob diese vorhanden und konsistent sind. Wenn irgendetwas nicht Ok ist soll eine Ausgabe nicht als Windows-Fenster erfolgen sondern im Kommandozeilen-Fenster als Text...

Ich weiß das klingt seltsam - als Anforderung von einem GUI-Programm - aber gesetzt den Fall man möchte das so - geht das? :)

Re: Ausgabe in Kommandozeile wenn /PM:PM

Verfasst: Mo, 07. Mär 2016 9:56
von brandelh
Das ist das Standardverhalten solange man nicht die Prozedur AppSys überschreibt.
Also normal geht ein XbpCrt() Fenster auf, das auf die Consolen Befehle reagiert:

Code: Alles auswählen

? "Test"
@ 1,1 say "Test2
Die GUI Fenster (XbpDialog()) sind zusätzlich und über ihr Objekt anzusprechen.

Re: Ausgabe in Kommandozeile wenn /PM:PM

Verfasst: Mo, 07. Mär 2016 11:07
von AUGE_OHR
Wonderer hat geschrieben:Ich habe hier ein Programm welches umgestellt wurde auf GUI.

Angenommen das Programm erwartet Kommandozeilen-Parameter und prüft auch am Anfang einige Datenbanken ob diese vorhanden und konsistent sind. Wenn irgendetwas nicht Ok ist soll eine Ausgabe nicht als Windows-Fenster erfolgen sondern im Kommandozeilen-Fenster als Text...
unter Windows gibt man einen Text per MsgBox() aus wenn die Xbase++ App mit /PM:PM gelinkt wurde.

Re: Ausgabe in Kommandozeile wenn /PM:PM

Verfasst: Mo, 07. Mär 2016 11:12
von brandelh
Der PM Schalter verbietet NICHT die Verwendung der alten ? / SAY Anweisungen.
Für Statusmeldungen wie oben beschrieben (eine Art von Debugging) ist das sogar sehr nützlich.

Re: Ausgabe in Kommandozeile wenn /PM:PM

Verfasst: Mo, 07. Mär 2016 11:18
von brandelh
wenn die EXE allerdings aus einem CMD Fenster gestartet wurde verhält es sich je nach PM Einstellung anders. /PM=PM (GUI=YES) öffnet ein Fenster und gibt dort die Infos aus ...

Re: Ausgabe in Kommandozeile wenn /PM:PM

Verfasst: Mo, 07. Mär 2016 12:56
von georg
Kunden haben manchmal seltsame Wünsche ...

Wenn die Ausgabe in dem cmd-Fenster erfolgen soll, aus dem das Programm gestartet wird, dann gäbe es den Ansatz, mit zwei Programmen zu operieren:

das erste Programm (stub) übernimmt die Prüfungen und gibt gegebenenfalls eine Fehlermeldung aus, ist alles in Ordnung, startet
das zweite Programm, das dann die normalen Aktionen ausführt.

Dadurch kannst Du mit vollem grafischen Programm arbeiten, und doch bleibt die Kontrolle über das cmd-Fenster möglich.


Ich vermute mal, es geht darum, dass die (Fehler-)Ausgabe des Programms umgeleitet und ausgewertet werden kann. Das geht nicht, wenn das Programm ein Fenster öffnet.

Re: Ausgabe in Kommandozeile wenn /PM:PM

Verfasst: Mo, 07. Mär 2016 13:05
von Herbert
Du kannst das Programm etwas unorthodox unter einem CMD-Fenster starten. Die Ausgabe erfolgt so auch dort.
Ich habe noch die alte Sache mit dem /?-Parameter so gelöst. In der Main-Rutine könntest in dieser Art ganz billig nach Auffinden eines groben Fehlers an das CMD eine Info weitergeben.

Code: Alles auswählen

IF cUser=='?' .OR. cUser=='/?'
  ?'Aufruf: ZL7 [n] [/m] [pfad]'
  QUIT
ENDIF

Re: Ausgabe in Kommandozeile wenn /PM:PM

Verfasst: Mo, 07. Mär 2016 16:29
von Wonderer
Danke für die Antworten, Hinweise und Vorschläge.