![]() |
Wo soll das FileMode im Quellcode hin?
Frage:
Wo soll das FileMode im Quellcode hin? Was ist richtig, 1) oder 2) oder 3)?
Code:
Gruss Terencevar TR : TextFile; s : string; begin ... 1) AssignFile(TR, 'D:\Dir\FileName.txt'); FileMode:=fmOpenRead; Reset(T); ... 2) FileMode:=fmOpenRead; AssignFile(TR, 'D:\Dir\FileName.txt'); Reset(T); ... 3) AssignFile(TR, 'D:\Dir\FileName.txt'); Reset(T); FileMode:=fmOpenRead; ... {-} ReadLN(TR, s); {-} CloseFile(TR); {-} ... |
AW: Wo soll das FileMode im Quellcode hin?
Hallo,
1 oder 2, vor dem Open. Den alten Wert würde ich retten und nach der Operation wiederherstellen. |
AW: Wo soll das FileMode im Quellcode hin?
Ich vermute mit "FileMode" ist nicht das "Mode" im Record TR, sondern eine Variable die Du, aus welchen Gründen auch immer, irgendwo anders führst.
Dieses vorausgesetzt würde ich nach dem Reset(TR) (oder Rewrite(TR) oder Append(TR) oder CloseFile(TR))
Delphi-Quellcode:
machen.
FileMode:=TTextRec(TR).Mode;
Das stellt sicher, dass FileMode den Wert hat, der tatsächlich vom System gesetzt wurde. |
AW: Wo soll das FileMode im Quellcode hin?
Ich finde, das ist im Wiki ganz gut erklärt:
![]() |
AW: Wo soll das FileMode im Quellcode hin?
Frage an den original Poster: warum benutzt du diese klassischen Datei Routinen?
Es gibt inzwischen diverse modernere Alternativen, z. B. - TFileStream - TStringList.LoadFromFile |
AW: Wo soll das FileMode im Quellcode hin?
Zitat:
Nur weil es neuer\moderner ist muss es nicht immer den Bedürfnissen entsprechend besser sein. Denn irgendwo setzt auch TStringlist auf irgendwelche Methoden auf nicht das es sogar letztendlich aufs gleiche rauskommt nämlich mit zugriff auf die Win32Api. Die wurde bestimmt nicht für die TStringList neu erfunden. gruss |
AW: Wo soll das FileMode im Quellcode hin?
Hallo,
FileMode hat mit WinAPI nicht direkt zu tun. Aber ja: Ich denke TStringList benutzt intern auch FileMode. |
AW: Wo soll das FileMode im Quellcode hin?
Hat es mit Sicherheit. Es steuert ja, wie die Datei zu öffnen ist und reicht es an die API Funktion CreateFile weiter.
|
AW: Wo soll das FileMode im Quellcode hin?
Zitat:
|
AW: Wo soll das FileMode im Quellcode hin?
Danke fuer die vielen Antworten.
Aus meiner Delphi 6 Hilfe erfahre ich ueber "FileMode" folgendes: --- Indicates the access mode on typed and untyped files opened by the Reset procedure. Unit System Category I/O routines var FileMode: Byte = 2; Description The FileMode variable determines the access mode to use when typed and untyped files (not text files) are opened using the Reset procedure. The default FileMode is 2 (Read/Write access). Assigning another value to FileMode causes all subsequent Resets to use that mode. The SysUtils unit declares a number of file open mode constants that can be assigned to the FileMode variable. Note: Be sure to reset FileMode before calling Reset with a read-only file. Even if you are only reading from the file, the default FileMode value (Read/Write access) will cause an attempt to open a read-only file to fail. Warning: FileMode is declared as a variable, not as a threadvar. Therefore this variable is not thread-safe. --- Leider kann ich nirgendswo feststellen, an welcher Position es zu stehen hat. Default ist immer FileMode:=fmOpenReadWrite; gesetzt. Bei der Verwendung von Append(T), also dem Oeffnen einer Textdatei, var T : TextFile;, steht Append(T) nach dem Reset(T). Hier muss FileMode:=fmOpenWrite; gesetzt werden. Da ich in meinem Programm aber mehrere TextDateien oeffne, muss ich den Wert im FileMode oefters aendern. Gruss Terence |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:38 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