Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Schreibgeschützte Datei (https://www.delphipraxis.net/2552-schreibgeschuetzte-datei.html)

Jonson 29. Jan 2003 10:52


Schreibgeschützte Datei
 
hi,
wie kann man feststellen, ob eine Datei schreibgeschützt ist?
wie kann man Schreibschutz aufheben?
bitte um Beispiel!

Jonson

Luckie 29. Jan 2003 10:58

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' );

Jonson 29. Jan 2003 11:17

es funktioniert leider nicht

bitte um Beispiel

If attrs and faReadOnly > 0 then
showMessage( 'Schreibgeschützt' );

bringt Fehler

Jonson

Luckie 29. Jan 2003 11:24

Zitat:

Zitat von Jonson
bringt Fehler

Blos nicht zu viel verraten. Es könnte ja möglich sein, dass man von der Fehlermeldung auf eine mögliche Ursache bzw. in folge dessen auf eine Lösung kommen könnte. :evil:

Jonson 29. Jan 2003 11:30

jetzt weiß ich zumindest wie man hier topmoderator wird mit über 1500 antowrten. danke für deine bemühungen

Jonson

Daniel 29. Jan 2003 11:39

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:

Luckie 29. Jan 2003 11:40

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:
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;
[/EDIT]

[EDIT2]
Funktioniert auch mit Verzeichnissen.
[/EDIT2]

Daniel 29. Jan 2003 11:48

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:
If (attrs and sysUtils.faReadOnly) > 0 Then ShowMessage( 'Schreibgeschützt' );
Hoffe, Dir damit geholfen zu haben...


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.

Jonson 29. Jan 2003 13:16

Hi Daniel!

das war's!

danke

Jonson

Jonson 30. Jan 2003 13:33

Luckie, es tut mir leid (du hast recht)

mfg jonson


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:24 Uhr.
Seite 1 von 2  1 2      

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