![]() |
Logdatei kann lokal nicht auf Server gelesen werden
Hallo zusammen,
mir wurde zum testen eine Logdatei bereit gestellt, ich habe schon an mir gezweifelt bis ich die Datei lokal kopiert hatte. Wenn ich die Datei nun lokal auf dem Rechner habe, so kann ich wunderbar darauf zugreifen. Wenn ich jedoch auf die Datei auf dem Server zugreifen möchte, so bekomme ich eine Fehlermeldung "E/A-Fehler 104". Der Fehler tritt in der Zeile von " while not eof(f) do" auf. Die Datei wird alle 60s aktualisiert. Hier die Routine mit der ich auf die Datei zugreife:
Delphi-Quellcode:
Hier der Inhalt der Logdatei:
function ThreadValue.ReadLogFile(Value: Integer): Double;
var f: TextFile; s: String; i: Integer; d: Double; begin // AssignFile(f, 'c:\temp\xxx.LOG'); AssignFile(f, '\\...\xxx.LOG'); // Fehlermeldungen ausschalten: {$I-} Reset(f); {$I+} i := 0; DecimalSeparator := '.'; while not eof(f) do begin Readln(f, s); d := StrToFloat(s); case i of 0, 1, 2: begin d := d / 100; end; end; if Value = i then begin Result := d; end; Inc(i); end; CloseFile(f) end; 1352.64 509.78 806.19 18.03 Vielen Dank für eure Hilfe! |
AW: Logdatei kann lokal nicht auf Server gelesen werden
Wenn Du schon {$I-} benutzt, dann solltest Du auch IOResult auswerten.
|
AW: Logdatei kann lokal nicht auf Server gelesen werden
Ich kenne den Fehlercode nicht auswendig, aber wenn zwei Programme gleichzeitig auf eine Datei zugreifen, kracht es mit hoher Wahrscheinlichkeit mal. Und genau das ist eben bei dir der Fall. Daher unbedingt das IOResult abfragen und schauen, ob du überhaupt Zugriff auf die Datei hast. Zudem ists immer gut, wenn du nach einem erfolgreichen Reset die Datei auch wieder zu machst -> try-finally-Block.
|
AW: Logdatei kann lokal nicht auf Server gelesen werden
Weitere Fehlerquelle ist die relative Pfadangabe oder hast du sie nur hier gekürzt?
|
AW: Logdatei kann lokal nicht auf Server gelesen werden
..
104 nicht zum Lesen geöffnet - die Datei sollte dann schon gefunden worden sein, sonst wäre wohl eine andere Fehlernummer aufgetreten. Grüße Klaus |
AW: Logdatei kann lokal nicht auf Server gelesen werden
Zitat:
Mit einem normalen Editor (TextPad) kann ich die Datei ohne Probleme öffnen und es wird mir gemeldet wenn sich was in der Datei geändert hat. Mir war klar, dass es Probleme geben kann wenn ein anderes Programm immer wieder in die Datei schreibt. Wie kann ich manuel prüfen ob die Datei "frei" gegeben ist? |
AW: Logdatei kann lokal nicht auf Server gelesen werden
.. meines Wissens versucht reset(f) die Datei exclusive zu öffnen.
Eventuell kann man da noch etwas am FileMode drehen. Oder aber TFileStream nutzen und die Optionen beim Öffnen der Datei mitgeben. Grüße Klaus |
AW: Logdatei kann lokal nicht auf Server gelesen werden
Und dann immer schön auf den Benutzerkontext des Service achten, gell ;)
|
AW: Logdatei kann lokal nicht auf Server gelesen werden
Problem gelöst:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var Stream: TStream; Stringlist: TStringList; Filename: string; begin Filename := '\\...\xxx.LOG'; // Pfad nur im Beispiel gekürzt Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyNone); try Memo1.Lines.LoadFromStream(Stream); finally Stream.Free; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz