![]() |
Schreibgeschützte Datei
hi,
wie kann man feststellen, ob eine Datei schreibgeschützt ist? wie kann man Schreibschutz aufheben? bitte um Beispiel! Jonson |
Delphi-Quellcode:
FileSetAttr( 'C:\Eigene Dateien\test.txt', faHidden + faArchive );
// Beispiel - Attribute von 'C:\Eigene Dateien\' auslesen anhand FileGetAttr var attrs : Integer; ..... attrs := FileGetAttr( 'C:\Eigene Dateien\' ); If attrs and faReadOnly > 0 then showMessage( 'Schreibgeschützt' ); If attrs and faHidden > 0 then showMessage( 'Verstecktt' ); If attrs and faSysFile > 0 then showMessage( 'Systemdatei' ); If attrs and faVolumeID > 0 then showMessage( 'Laufwerks-ID' ); If attrs and faDirectory > 0 then showMessage( 'Verzeichnis' ); If attrs and faArchive > 0 then showMessage( 'Archivdatei' ); If attrs and faAnyFile > 0 then showMessage( 'Irgendeine Datei' ); |
es funktioniert leider nicht
bitte um Beispiel If attrs and faReadOnly > 0 then showMessage( 'Schreibgeschützt' ); bringt Fehler Jonson |
Zitat:
|
jetzt weiß ich zumindest wie man hier topmoderator wird mit über 1500 antowrten. danke für deine bemühungen
Jonson |
Hallo Johnson,
Luckie wollte Dich dazu anregen, näher zu beschreiben, auf welche Fehler Du mit diesem Code gestoßen bist. Unter Delphi 6 ist es zum Beispiel so, dass sich dieser Code nicht kompilieren lässt, da der Compiler mit der Fehlermeldung abbricht, dass Operand und Operator nicht zusammenpassen. Wenn Du im Code auf Fehler triffst und dazu eine Frage stellen möchtest, dann ist es immer hilfreich, weitere Informationen wie z.B. die genaue Fehlermeldung mit anzugeben. :wink: |
Was soll das bitte sehr? Wie soll man dir helfen, wenn du nicht sagst, was für ein Fehler kommt bzw. was nicht geht?
Den Code habe ich mal irgendwo gefunden und mir mal aufgehoben, ihn aber selber noch nie gebraucht. Ok war eventuell etwas hart, aber das kommt hier immer öfters vor, dass Leute sagen: "da kommt ein Fehler." Und dann nicht sagen was für einer. Aber wie ich oben schon geschrieben haben, wie soll man helfen, wenn der Fehler nicht näher beschrieben wird. Ungefähr genauso, als wenn du zum Arzt gehst und sagst: "Es tut weh." Was soll der Arzt da machen? [EDIT] Bei mir kompiliert der Code und bringt auch richtige Ergenisse:
Delphi-Quellcode:
[/EDIT]
procedure TForm1.Button1Click(Sender: TObject);
var attrs : Integer; begin attrs := FileGetAttr( 'C:\io.sys'); If attrs and faReadOnly > 0 then showMessage( 'Schreibgeschützt' ); If attrs and faHidden > 0 then showMessage( 'Verstecktt' ); If attrs and faSysFile > 0 then showMessage( 'Systemdatei' ); If attrs and faVolumeID > 0 then showMessage( 'Laufwerks-ID' ); If attrs and faDirectory > 0 then showMessage( 'Verzeichnis' ); If attrs and faArchive > 0 then showMessage( 'Archivdatei' ); If attrs and faAnyFile > 0 then showMessage( 'Irgendeine Datei' ); end; [EDIT2] Funktioniert auch mit Verzeichnissen. [/EDIT2] |
Hallo Johnson,
ich kann den Compiler-Fehler abwenden, wenn ich explizit mit angebe, aus welcher Unit der Compiler die Konstanden fa_XXXXXX heranziehen soll:
Delphi-Quellcode:
Hoffe, Dir damit geholfen zu haben...
If (attrs and sysUtils.faReadOnly) > 0 Then ShowMessage( 'Schreibgeschützt' );
Edit: Also - in einem Standard-Projekt wird man vermutlich nicht in diesem Fehler laufen. Ich habe die obigen Code-Zeilen gerade in ein aktuelles Projekt von mir hineinkopiert und hatte dort vorher die Unit 'DB.pas' eingebunden. Diese wird ebenfalls mit D6 ausgeliefert und beinhaltet eine eigene Konstante 'fa_Readonly'. Letztere ist jedoch nicht für die Benutzung im Zusammenhang mit Datei-Attributen gedacht und es entsteht oben beschriebener Fehler. |
Hi Daniel!
das war's! danke Jonson |
Luckie, es tut mir leid (du hast recht)
mfg jonson |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:24 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