Konsole dauerhaft aktivieren

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
br_klaus
Beiträge: 244
Registriert: Do 21. Jan 2010, 22:33
OS, Lazarus, FPC: Windows Vista (L 0.9.31 FPC 2.5.1)
CPU-Target: 32Bit
Wohnort: z.z. Brasilien, sonst 82335 Berg-Leoni (südlich von München)

Konsole dauerhaft aktivieren

Beitrag von br_klaus »

Wie kann man RunError 103 (File not open) abfangen bei Writeln auf die Konsole (wenn sie nämlich nicht aktiviert wurde)? Ich weiß nicht warum, aber manchmal wird die Konsole aktiviert, manchmal nicht, obwohl ich nichts an den Compiler-Einstellungen ({$APPTYPE Console})
ändere. Ist das ein Bug in Lazarus/FPC ?

Herzlichen Dank
P. Nikolaus

Dets
Beiträge: 61
Registriert: Di 11. Sep 2007, 16:59
OS, Lazarus, FPC: Ubuntu Maverick (L 0.9.28.2-10, FPC 2.4.0)
CPU-Target: 32Bit
Wohnort: Lage
Kontaktdaten:

Re: Konsole dauerhaft aktivieren

Beitrag von Dets »

Ich hab's einfach mit try/except umrahmt und dann war's gut.

greetz, Dets ...

br_klaus
Beiträge: 244
Registriert: Do 21. Jan 2010, 22:33
OS, Lazarus, FPC: Windows Vista (L 0.9.31 FPC 2.5.1)
CPU-Target: 32Bit
Wohnort: z.z. Brasilien, sonst 82335 Berg-Leoni (südlich von München)

Re: Konsole dauerhaft aktivieren

Beitrag von br_klaus »

Aber gibt es denn keine Möglichkeit, feststellen zu lassen, ob die Konsole aktiviert ist oder nicht?

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Konsole dauerhaft aktivieren

Beitrag von Socke »

Die Variable System.IsConsole: Boolean kann abgefragt werden.
Du könntest natürlich für alle Schreiboperationen auch die IO-Exceptions ausschalten. Dann wird nur der Variablen IOResult ein bestimmter Wert zugewiesen.

Wie sehen denn deine Compiler-Schalter aus? Ist vielleicht der Parameter -WG (Win-GUI-Anwendung erstellen) gesetzt?
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Lori
Beiträge: 93
Registriert: Sa 9. Sep 2006, 22:17

Re: Konsole dauerhaft aktivieren

Beitrag von Lori »

Aber dafür kann man doch auch debugln statt writeln nutzen.

Das gibt auf der Konsole aus, wirft aber im Falle das keine Konsole zur Verfügung steht keinen Fehler sondern wird deaktiviert.
loris-spinnereyen.de

Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Konsole dauerhaft aktivieren

Beitrag von Socke »

Die Ausgabe von DebugLn() bzw. DbgOut() kann aber per Umgebungsvariable oder Kommandozeilenparameter beeinflusst werden, was in der Regel nicht gewünscht ist.
Außerdem gibt es einige Unterschiede in der Handhabung (nimmt nur Strings entgegen; immer in eine Datei). Man kann sich natürlich auch eigene Wrapper-Funktionen schreiben.

Eine ganz andere Alternative wäre, im Start-Up-Code auf IsConsole() zu prüfen und im Fehlerfall die Datei 'NUL' mit StdOut (oder Output, bitte Dokumentation beachten) zu öffnen. Zumindest kann man in Batch-Skripten mit echo "abc" > NUL eine Ausgabe ins Datennirvana schicken; eigentlich müsste es auch mit normalen Programmen funktionieren bzw. einen anderen Namen dafür geben.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Antworten