"File not Found" bei rewrite - was soll das?

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Antworten
braunbär
Beiträge: 463
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 3.6, FPC 3.2.2
CPU-Target: 64Bit
Wohnort: Wien

"File not Found" bei rewrite - was soll das?

Beitrag von braunbär »

Habt ihr eine Ahnung, warum das passieren kann? Bei einem rewrite braucht doch die Datei vorher nicht zu existieren?

Code: Alles auswählen

[Debuggerausnahmen-Nachricht]


[Break]
Projekt mdbWin hat Exception-Klasse »EInOutError« ausgelöst mit der Meldung:
File not found

 In Datei 'fdDebug.pas' in Zeile 220:
if First then begin Rewrite(f); First := False end


[Diesen Ausnahmetyp übergehen]

[Continue]

Benutzeravatar
Jorg3000
Lazarusforum e. V.
Beiträge: 385
Registriert: So 10. Okt 2021, 10:24
OS, Lazarus, FPC: Win64
Wohnort: NRW

Re: "File not Found" bei rewrite - was soll das?

Beitrag von Jorg3000 »

Hallo!
Die eine Code-Zeile ist ein bisschen dürftig. Hast du vorher AssignFile() aufgerufen?
Vor einem Rewrite() darf kein Reset() stehen.

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 596
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon, Laz 4.1 Fpc 3.2.3 und allerlei mit FpcUpDeLuxe
Kontaktdaten:

Re: "File not Found" bei rewrite - was soll das?

Beitrag von Niesi »

Weil rewrite die Datei öffnet ...

Google, 2 s: https://www.freepascal.org/docs-html/rt ... write.html

Description


Rewrite opens a file F for writing. F can be any file type. If F is an untyped or typed file, then it is opened for reading and writing. If F is an untyped file, the record size can be specified in the optional parameter L. Default a value of 128 is used. if Rewrite finds a file with the same name as F, this file is truncated to length 0. If it doesn't find such a file, a new file is created.

Contrary to Turbo Pascal, Free Pascal opens the file with mode fmoutput. If it should be opened in fminout mode, an extra call to Reset is needed.

File sharing is not taken into account when calling Rewrite.

Note that the path can be only 255 characters long.
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6848
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: "File not Found" bei rewrite - was soll das?

Beitrag von af0815 »

Es kann auch ein Rechte Problem sein.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
Niesi
Lazarusforum e. V.
Beiträge: 596
Registriert: So 26. Jun 2016, 19:44
OS, Lazarus, FPC: Linux Mint Cinnamon, Laz 4.1 Fpc 3.2.3 und allerlei mit FpcUpDeLuxe
Kontaktdaten:

Re: "File not Found" bei rewrite - was soll das?

Beitrag von Niesi »

Jorg3000 hat geschrieben: Mo 20. Jan 2025, 06:34 Hallo!
Die eine Code-Zeile ist ein bisschen dürftig. Hast du vorher AssignFile() aufgerufen?
Vor einem Rewrite() darf kein Reset() stehen.
Würde ein AssignFile() funktionieren, wenn das File nicht vorhanden ist?
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...

Benutzeravatar
Zvoni
Beiträge: 396
Registriert: Fr 5. Jul 2024, 08:26
OS, Lazarus, FPC: Windoof 10 Pro (Laz 2.2.2 FPC 3.2.2)
CPU-Target: 32Bit
Wohnort: BW

Re: "File not Found" bei rewrite - was soll das?

Beitrag von Zvoni »

Niesi hat geschrieben: Mo 20. Jan 2025, 09:14
Jorg3000 hat geschrieben: Mo 20. Jan 2025, 06:34 Hallo!
Die eine Code-Zeile ist ein bisschen dürftig. Hast du vorher AssignFile() aufgerufen?
Vor einem Rewrite() darf kein Reset() stehen.
Würde ein AssignFile() funktionieren, wenn das File nicht vorhanden ist?
Natürlich!
Oder wie willst du überhaupt eine Datei erzeugen (wenn sie nicht existiert)?

Für "Assign": https://www.freepascal.org/docs-html/rt ... ssign.html
Assign assigns a name to F, which can be any file type. This call doesn't open the file, it just assigns a name to a file variable, and marks the file as closed.
Ist mWn für AssignFile dasselbe, da AssignFile eh Assign aufruft
Siehe auch hier: viewtopic.php?t=9297
Ein System sie alle zu knechten, ein Code sie alle zu finden,
Eine IDE sie ins Dunkel zu treiben, und an das Framework ewig zu binden,
Im Lande Redmond, wo die Windows drohn.

braunbär
Beiträge: 463
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 3.6, FPC 3.2.2
CPU-Target: 64Bit
Wohnort: Wien

Re: "File not Found" bei rewrite - was soll das?

Beitrag von braunbär »

In Zukunft werde ich mich um 2h früh schlafen legen, statt Mist zu programmieren und dann im Forum Hilferufe zu posten. Um die Uhrzeit hab ich es nicht mehr so mit dem Denken.

Natürlich ist der Code davor relevant, und da war auch der Fehler. Ich habe ein rename der vorigen Version des Logfiles gemacht, um immer die letzten zwei Logfiles verfügbar zu haben und gegebenenfalls vergleichen zu können. Weil es vorkommen kann, dass es davor noch gar keine Logfileversion gibt, war mir das IOResult der rename Operation egal und ich habe es nicht abgefragt (ich dachte, wenn kein File, dann gibt es eben kein rename und das ist kein Problem). Aber um den beim rename aufgetretenen Fehler (File not found) zurückzusetzen, muss man natürlich vor der nächsten I/O Operation trotzdem IOResult aufrufen, sonst bleibt der Fehler stehen und wird beim nächsten Aufruf von IOResult, nach der nächsten I/O Operation, als Ergebnis zurückgegeben. Nicht, dass ich das nicht eh wüsste, aber es war eben 2h früh :D

Antworten