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
Konsole dauerhaft aktivieren
-
- 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
Ich hab's einfach mit try/except umrahmt und dann war's gut.
greetz, Dets ...
greetz, Dets ...
-
- 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
Aber gibt es denn keine Möglichkeit, feststellen zu lassen, ob die Konsole aktiviert ist oder nicht?
-
- 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
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?
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
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Re: Konsole dauerhaft aktivieren
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.
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
-
- 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
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.
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
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein