Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   E/A Fehler 32 (https://www.delphipraxis.net/212137-e-fehler-32-a.html)

juelin 23. Dez 2022 11:31

E/A Fehler 32
 
Ich weiss, Ihr habt das Thema bestimmt schon tausendmal gehöhrt.
Habe aber nix gefunden.
Habe Windows 10 und Delphi 10.4

Aug dem Computer läuft ein Programm (BAT-file) das in eine Textdatei ausgibt 8 > daten.txt).
Nun möchte ich während das Programm läuft mit einem Delphi-Programm auf die Datei zugreifen und auslesen.

Delphi-Quellcode:
  var fnum: TextFile;

        AssignFile(fnum, 'e:\DARC\dump1090\daten.txt');
        FileMode:=fmShareDenyRead;
        Reset(fnum);
Beim Reset bekomme ich E/A Fehler 32.
Aber wenn ich das File mit dem Editor öffne (auch wenn das Programm läuft) geht das ja auch.
Was muss ich tun?

Grüß Jürgen

Delphi.Narium 23. Dez 2022 11:42

AW: E/A Fehler 32
 
In meiner Delphi-7-Hilfe steht:
Zitat:

Konstante Definition

fmOpenRead Nur Lesezugriff.
fmOpenWrite Nur Schreibzugriff.
fmOpenReadWrite Lese- und Schreibzugriff.
fmShareCompat Kompatibel zu dem Verfahren, mit dem FCBs geöffnet werden. Verwenden Sie diesen Modus nicht in plattformübergreifenden Anwendungen.

fmShareExclusive Kein Lese- und Schreibzugriff.
fmShareDenyWrite Kein Schreibzugriff.
fmShareDenyRead Kein Lesezugriff. Verwenden Sie diesen Modus nicht in plattformübergreifenden Anwendungen.
fmShareDenyNone Andere haben uneingeschränkten Zugriff.
Da würd' ich's dann mal mit fmOpenRead versuchen oder fmShareDenyNone? Andere wollen ja ebenfalls lesen und schreiben.

FileMode - Defines how Reset opens a file

himitsu 23. Dez 2022 12:18

AW: E/A Fehler 32
 
Tja, 32 = ERROR_SHARING_VIOLATION
also irgendwer hat diese Datei schon offen und entweder erlaubst du ihm seinem Zugriff nicht, oder er dir deinen nicht.


Du verbietest ALLEN Anderen das Lesen
und das macht Notepad nicht.




Wie wäre es auch langsam mal auf aktuellere API umzusteigen?
TStringList, TFileStream, TStringStream, TFile.Read*** uvm.
Vor allem auch wegen der verständlicheren Fehlerbehandlungs-Ausgaben.

juelin 23. Dez 2022 13:04

AW: E/A Fehler 32
 
also habe geändert in fmSharedDenyNone
das andere Programm schreibt nur und ich will nur lesen.
Wie gesagt mit dem Editor geht das ja auch.
BAT-File: dunp1090.exe > daten.txt

EmWieMichael 24. Dez 2022 06:34

AW: E/A Fehler 32
 
Mit FileMode zu experimentieren wird erfolglos bleiben, da FileMode bei Textdateien keine Auswirkungen hat. Textdateien können nur zum Lesen oder zum Schreiben geöffnet werden.

dstein 25. Dez 2022 21:57

AW: E/A Fehler 32
 
Liste der Anhänge anzeigen (Anzahl: 2)
Evtl. so?
Feedback ob das funktioniert wäre schön.

Quelle
https://docwiki.embarcadero.com/Code...teFile_(Delphi)

if dlgOpenTxtFile_1.Execute() then
begin
try
edt_File.Text := dlgOpenTxtFile_1.FileName;

Mmo1.Lines[0] := TFile.ReadAllText(edt_File.Text); // uses System.IOUtils

except
{ Catch the possible exceptions }
MessageDlg('Incorrect path', mtError, [mbOK], 0);
Exit;
end;
end;

himitsu 26. Dez 2022 19:11

AW: E/A Fehler 32
 
An der Stelle ist das
Delphi-Quellcode:
Exit;
natürlich nutzlos, aber egal.

Zitat:

Delphi-Quellcode:
MessageDlg('Incorrect path', mtError, [mbOK], 0);

Aber für sowas gehört man mindestens, von diesem alten Typen grade, total den Popo versohlt bekommen.

Es darf NIEMALS NICHT eine Fehlermmeldung durch einen sinnlosen Text ersetze werden :!:

Es gibt hier garkeinen Grund, für deinen Dialog und das ganze Try-Except kann man ganz weglassen.
Erstmal bekommt man dann wieder eine "ordentliche" Fehlermeldung.

Wenn, dann nimmt man E.Message mit in die Fehlermeldung oder speichert es zumindestens in einem Log.
* Einfach verwerfen ist grob fahrlässig.
* und natürlich kann man auch den Dateinamen nochmal im Log/Fehlermeldung anzeigen

Und wie kommmst auf die Idee, der Pfad könnte inkorrekt sein?
* wie bereits gesagt ist E/A-Fehler 32 = ERROR_SHARING_VIOLATION.
* Ist der OpenFileDialog richtig eingestellt, kann garkein falscher Pfad rauskommen.
* und was ist, wenn der Pfad zwar gültig ist, aber der Pfad oder die Datei genicht existiert oder oder du hast keinen Zugriff (fehlende Leserechte) oder jemand hat die Datei und fehlende SharingRechte oder der Datenträger ist kaputt (Lesefeheler) :?:

* Warum 0 anstatt z.B. mtError?

dstein 27. Dez 2022 06:53

AW: E/A Fehler 32
 
Moin finde ich auch, aber das ist Original:
https://docwiki.embarcadero.com/Code...teFile_(Delphi)
Vielleicht sollte jemand "embarcadero" einen Tip geben :?

hoika 27. Dez 2022 08:34

AW: E/A Fehler 32
 
Hallo,
bitte, tut dir keinen Zwang an...

Hier noch ein Bsp. mit Streams, was funktioniert.
https://www.delphipraxis.net/185425-...hler-32-a.html

Gefunden mit Google "delphi reset error 32"
innerhalb von 2 Minuten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz