Textdatei offen? [gelöst]
-
- Beiträge: 200
- Registriert: So 11. Jul 2010, 18:39
- OS, Lazarus, FPC: Linux
- CPU-Target: 64 Bit
- Wohnort: Wien
- Kontaktdaten:
Textdatei offen? [gelöst]
Ich würde gerne feststellen, ob bestimmte Textdateien, spezifisch Output und StdErr, überhaupt zum Schreiben offen sind., Wie geht das am besten, bitte?
Zuletzt geändert von diogenes am Di 4. Mai 2021, 17:03, insgesamt 1-mal geändert.
Ceterum censeo computatores per Pascal docendos esse.
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Textdatei offen?
Hi!
Output und StdErr sind immer offen per Definition. Das braucht man nicht testen.
Winni
Output und StdErr sind immer offen per Definition. Das braucht man nicht testen.
Winni
-
- Beiträge: 200
- Registriert: So 11. Jul 2010, 18:39
- OS, Lazarus, FPC: Linux
- CPU-Target: 64 Bit
- Wohnort: Wien
- Kontaktdaten:
Re: Textdatei offen?
Auch unter Wind...ows? Zu XP-Zeiten hatte ich feststellen müssen, dass man da extra aufmachen musste. Außer ich erinnere mich falsch.
Ceterum censeo computatores per Pascal docendos esse.
- Winni
- Beiträge: 1577
- Registriert: Mo 2. Mär 2009, 16:45
- OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
- CPU-Target: 64Bit
- Wohnort: Fast Dänemark
Re: Textdatei offen?
Hi!
Auch unter Windows. Auch unter XP. Auch unter ... was hättest Du denn gerne? BSD? Mac? ....
Winni
Auch unter Windows. Auch unter XP. Auch unter ... was hättest Du denn gerne? BSD? Mac? ....
Winni
-
- Beiträge: 200
- Registriert: So 11. Jul 2010, 18:39
- OS, Lazarus, FPC: Linux
- CPU-Target: 64 Bit
- Wohnort: Wien
- Kontaktdaten:
Re: Textdatei offen?
Passt schon. Wenn die immer offen sind, sind sie halt immer offen. Hab ich mich eben falsch erinnert.
Danke
Danke

Ceterum censeo computatores per Pascal docendos esse.
-
- 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: Textdatei offen?
Dies gilt aber nur für Konsolenanwendungen. Ist der Compilerschalter -WG (Win32-GUI-Anwendung) gesetzt, sind StdOut/-In/-Err nicht automatisch geöffnet.Winni hat geschrieben: So 2. Mai 2021, 20:28 Auch unter Windows. Auch unter XP. Auch unter ... was hättest Du denn gerne? BSD? Mac? ....
Edit: In einer Win32-GUI-Anwendung muss man die Verbindung zur Konsole selbst herstellen.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 200
- Registriert: So 11. Jul 2010, 18:39
- OS, Lazarus, FPC: Linux
- CPU-Target: 64 Bit
- Wohnort: Wien
- Kontaktdaten:
Re: Textdatei offen?
Ah ja. Das war's also. Und wie stelle ich zur Laufzeit dann fest, ob die besagten Textdateien offen sind?
Ceterum censeo computatores per Pascal docendos esse.
-
- 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: Textdatei offen?
Ich denke, es ist sicher, den Zustand je nach Betriebssystem anzunehmen. Im Wesentlichen hängt es ja nicht von der Laufzeit sondern von der Compilezeit ab.diogenes hat geschrieben: So 2. Mai 2021, 21:59 Ah ja. Das war's also. Und wie stelle ich zur Laufzeit dann fest, ob die besagten Textdateien offen sind?
Alternativ kannst du einfach fehlertolerant auf die Dateien zugreifen. Falls du einen Fehler erhälst, ist die Datei entweder nicht offen oder das Zielvolume voll (usw.).
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein
-
- Beiträge: 200
- Registriert: So 11. Jul 2010, 18:39
- OS, Lazarus, FPC: Linux
- CPU-Target: 64 Bit
- Wohnort: Wien
- Kontaktdaten:
Re: Textdatei offen?
Das mit der Fehlertoleranz habe ich mir schon überlegt. Ich wollte (auch) wissen, ob's da eine elegantere Methode gibt 

Ceterum censeo computatores per Pascal docendos esse.
-
- Beiträge: 955
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: Textdatei offen?
Gibt es:
Je nachdem, ob du (unter Windows) mit oder ohne -WG kompilierst, ist der Exitcode (echo %ERRORLEVEL%)entweder 1 oder 2 (du musst im Fall von -WG mit start /WAIT tfiletest.exe starten, da sonst die Anwendung von der Kommandozeile abgetrennt wird und der Exitcode nicht durchkommt).
Der Trick funktioniert übrigens mit jedem TextFile (für file musst du FileRec nehmen, da gilt aber das gleiche).
Code: Alles auswählen
program tfiletest;
begin
if TextRec(Output).Mode = fmClosed then
ExitCode := 1
else
ExitCode := 2;
end.
Der Trick funktioniert übrigens mit jedem TextFile (für file musst du FileRec nehmen, da gilt aber das gleiche).
FPC Compiler Entwickler
-
- Beiträge: 200
- Registriert: So 11. Jul 2010, 18:39
- OS, Lazarus, FPC: Linux
- CPU-Target: 64 Bit
- Wohnort: Wien
- Kontaktdaten:
Re: Textdatei offen?
Danke, sieht gut aus!
Wenn der Wert also fmClosed ist, dann müsste man auch mit Assign zuweisen, oder? Meines Wissens nach ist der Modus auch fmClosed nach einem Assign, aber vor Rewrite, Reset oder Append. Oder irre ich mich da? Wenn nicht, was ist der Modus für nicht zugewiesene Texdateien?
Wenn der Wert also fmClosed ist, dann müsste man auch mit Assign zuweisen, oder? Meines Wissens nach ist der Modus auch fmClosed nach einem Assign, aber vor Rewrite, Reset oder Append. Oder irre ich mich da? Wenn nicht, was ist der Modus für nicht zugewiesene Texdateien?
Ceterum censeo computatores per Pascal docendos esse.
-
- Beiträge: 955
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: Textdatei offen?
Der Zustand vor einem Assign-Aufruf ist undefiniert, da ein TextRec oder FileRec nicht automatisch initialisiert wird. Eine Datei wird erst durch den Aufruf von Reset, Rewrite oder Append geöffnet (eine Assign-Funktion setzt normal nur die OpenFunc-Funktion des TextRec/FileRec und eben Mode auf fmClosed (und was halt noch nötig ist, damit die OpenFunc-Funktion dann korrekt funktioniert)).diogenes hat geschrieben: Mo 3. Mai 2021, 10:11 Danke, sieht gut aus!
Wenn der Wert also fmClosed ist, dann müsste man auch mit Assign zuweisen, oder? Meines Wissens nach ist der Modus auch fmClosed nach einem Assign, aber vor Rewrite, Reset oder Append. Oder irre ich mich da? Wenn nicht, was ist der Modus für nicht zugewiesene Texdateien?
FPC Compiler Entwickler
-
- Beiträge: 200
- Registriert: So 11. Jul 2010, 18:39
- OS, Lazarus, FPC: Linux
- CPU-Target: 64 Bit
- Wohnort: Wien
- Kontaktdaten:
Re: Textdatei offen?
Problem gelöst. Durch Euch inspiriert, hae ich ein wenig im Internetz gewühlt und gefunden, dass Windows eine AllocConsole-Funktion hat, die die Kanäle öffnet. Alles gut, danke! 

Ceterum censeo computatores per Pascal docendos esse.
-
- Beiträge: 955
- Registriert: Mi 3. Jun 2020, 07:18
- OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
- CPU-Target: Aarch64 bis Z80 ;)
- Wohnort: München
Re: Textdatei offen?
Dann musst du aber dennoch manuell Output und StdErr öffnen, da diese nichts von deiner Nutzung einer Windows Funktion mitbekommen. Außerdem führt das glaube ich dazu, dass ein neues Konsolenfenster aufgemacht wird, wenn du aus einer Konsole heraus startest, da die eigentliche Anwendung von der Konsole bereits abgelöst wurde (und PowerShell statt CMD hat auch noch ihren eigenen Spaß mitgebracht...diogenes hat geschrieben: Di 4. Mai 2021, 17:03 Problem gelöst. Durch Euch inspiriert, hae ich ein wenig im Internetz gewühlt und gefunden, dass Windows eine AllocConsole-Funktion hat, die die Kanäle öffnet. Alles gut, danke!![]()

FPC Compiler Entwickler