![]() |
Delphi-Version: XE
Textfile reset mit fmOpenRead -> E/A Fehler 32
Wenn ich eine csv-Datei mit Excel offen habe, schaffe ich es nicht diese mit meinem Delphi ebenfalls nur lesend zu öffnen. Was mache ich falsch?
Delphi-Quellcode:
var
fFile : TextFile; begin AssignFile(fFile,lSourceFile); FileMode := fmOpenRead; reset(fFile); // <- E/A Fehler CloseFile(fFile); FileMode := fmOpenReadWrite; end; |
AW: Textfile reset mit fmOpenRead -> E/A Fehler 32
Ich sehe da zwei Möglichkeiten:
1. Addiere zu dem fmOpenRead noch ein fmShareDenyNone. 2. Excel öffnet die Datei selbst exklusiv, dann hast du keine Chance. Ich hatte da ein ähnliches Problem mit DXF-Dateien in AutoCAD. Die kann man auch nicht lesen, wenn sie in AutoCAD offen sind. |
AW: Textfile reset mit fmOpenRead -> E/A Fehler 32
Delphi-Quellcode:
klappt leider nicht. Auch der Versuch über StringList.LoadFromFile zu gehen hat nicht geklappt.
FileMode := fmOpenRead OR fmShareDenyNone;
|
AW: Textfile reset mit fmOpenRead -> E/A Fehler 32
Zitat:
|
AW: Textfile reset mit fmOpenRead -> E/A Fehler 32
Zitat:
|
AW: Textfile reset mit fmOpenRead -> E/A Fehler 32
Ich sehe gerade, du benutzt
Delphi-Quellcode:
- das ignoriert das Share-Bit!
TextFile
Mach statt dessen einen
Delphi-Quellcode:
mit
TFileStream
Delphi-Quellcode:
auf und übergib den dem
fmOpenRead OR fmShareDenyNone
Delphi-Quellcode:
einer
LoadFromStream
Delphi-Quellcode:
.
TStringList
|
AW: Textfile reset mit fmOpenRead -> E/A Fehler 32
Danke Uwe, diesen Weg hatte ich mir auch grad überlegt und siehe da, es klappt.
Delphi-Quellcode:
aStream := TFileStream.Create(lSourceFile,fmOpenRead OR fmShareDenyNone);
aList := TStringList.Create; aList.LoadFromStream(aStream); |
AW: Textfile reset mit fmOpenRead -> E/A Fehler 32
Noch ein kleiner Nachtrag aus der OH:
Zitat:
K-H |
AW: Textfile reset mit fmOpenRead -> E/A Fehler 32
Aber auch schade, dass man der Stringlist beim LoadFromFile keinen Mode mitgeben kann.
|
AW: Textfile reset mit fmOpenRead -> E/A Fehler 32
Zitat:
Gruß K-H |
AW: Textfile reset mit fmOpenRead -> E/A Fehler 32
In XE siehts in der Unit Classes so aus:
Delphi-Quellcode:
procedure TStrings.LoadFromFile(const FileName: string);
var Stream: TStream; begin Stream := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite); try LoadFromStream(Stream); finally Stream.Free; end; end; |
AW: Textfile reset mit fmOpenRead -> E/A Fehler 32
Zitat:
|
AW: Textfile reset mit fmOpenRead -> E/A Fehler 32
Ich will das Thema noch einmal hochholen, weil es eine ganz einfache Ursache haben kann.
Oft steht man mit dem Explorer auf der Datei, ohne sie geöffnet zu haben, weil man nach der Quellcodeänderung sehen will, was sich verändert hat. Das ist aber auch schon die Ursache, falls der Code richtig ist. Stellt den Explorer auf die Nachbardatei, nur draufklicken, ohne zu öffnen, so dass eure Textdatei nicht mehr markiert ist. Schon geht es. Ist mir schon öfter passiert, auch bei anderen Programme, "Kann nicht löschen, weil ein anderes Programm die Datei geöffnet hat". Die gleiche Ursahce. Viele Grüße aus Bredow Klaus-Peter |
AW: Textfile reset mit fmOpenRead -> E/A Fehler 32
Da ist die Ursage dann aber auch nur eine langsame/schrottige Explorer-Erweiterung eines Drittherstellers. (z.B. von Adobe)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:12 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