Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Schreibrechte abfragen? (https://www.delphipraxis.net/128116-schreibrechte-abfragen.html)

Dezipaitor 24. Jan 2009 22:19

Re: Schreibrechte abfragen?
 
Also mit der Userrights Beispiel kommst du nicht weiter.
Der Quelltext von Nico funktioniert in Vista oder neuer nicht immer korrekt, da kein Integrity Label überprüft wird.

Was machen? Das mal ausprobieren.

Delphi-Quellcode:
var hFile : THandle;

hFile := CreateFile(PChar(filename), DELETE, 0, nil, OPEN_EXISTING, 0,0);

if (hFile = INVALID_HANDLE_VALUE) then
begin
  if GetLastError() = ERROR_ACCESS_DENIED then ...
  if GetLastError() = ERROR_FILE_NOT_FOUND then ...
end
else
  CloseHandle(hFile);

himitsu 24. Jan 2009 22:25

Re: Schreibrechte abfragen?
 
Code:
[s] if GetLastError() = ERROR_ACCESS_DENIED then ...
  if GetLastError() = ERROR_FILE_NOT_FOUND then ... [/s]
das geht aber nicht so ... GetLastError setzt den Fehlerwert zurück, wen es aufgerufn wird.

nicodex 24. Jan 2009 22:42

Re: Schreibrechte abfragen?
 
Zitat:

Zitat von himitsu
GetLastrror setz den Fehlerwert zurück, wen es aufgerufn wird.

Nein, mit Sicherheit nicht (es wird nur NtCurrentTeb().LastErrorValue ausgelesen).
Auch wenn der Hinweis auf ein case-of oder eine lokale Variable natürlich berechtigt ist, da der thread-bezogene Fehlercode durch nachfolgenden Code überschrieben werden könnte.

Dezipaitor 24. Jan 2009 22:49

Re: Schreibrechte abfragen?
 
Das "..." ruft zum Denken auf! :"Wie geht es hier weiter?" Bedenklich wäre es doch, wenn man nur Copy&Paste macht. Meine geposteten Codes haben daher gerne mal einen unabsichtlichen Fehler drin, der gefunden werden muss. Wir sind doch schließlich alle nur Menschen, nicht wahr? :thumb:

himitsu 24. Jan 2009 22:56

Re: Schreibrechte abfragen?
 
Ganz sicher?

Delphi-Quellcode:
SetLastError(123);
MessageDlg(IntToStr(GetLastError), mtInformation, [mbOK], 0);
MessageDlg(IntToStr(GetLastError), mtInformation, [mbOK], 0);
Zitat:

---------------------------
Informationen
---------------------------
123
---------------------------
OK
---------------------------
Zitat:

---------------------------
Informationen
---------------------------
0
---------------------------
OK
---------------------------

Dezipaitor 24. Jan 2009 23:09

Re: Schreibrechte abfragen?
 
MessageDlg ruft intern Windows API Funktionen auf. Davon wird die eine oder andere den Wert auf 0 setzen. Das sollte zwar so nicht sein, weil API Funktionen normalerweise bei Erfolg den Fehlercode einfach stehenlassen, das ist aber nicht immer so.
Vllt macht es die MessageDlg Fkt auch selbst.

himitsu 24. Jan 2009 23:25

Re: Schreibrechte abfragen?
 
ok, geb mich geschlagen ... schön das mal geändert zu wissen, es es dann die ganze Zeit falsch im Kopf :oops:

Delphi-Quellcode:
Var E1, E2: LongWord;
begin
  SetLastError(123);
  E1 := GetLastError;
  E2 := GetLastError;
  SetLastError(123);
  MessageDlg(Format('%d %d', [E1, E2]), mtInformation, [mbOK], 0);
  MessageDlg(IntToStr(GetLastError), mtInformation, [mbOK], 0);

Dezipaitor 24. Jan 2009 23:30

Re: Schreibrechte abfragen?
 
Wir sind doch schließlich alle nur Menschen, nicht wahr? :wall:

AlexII 25. Jan 2009 00:18

Re: Schreibrechte abfragen?
 
Jetzt verstehe ich überhaupt nix :gruebel: Kann mir jemand eine klare Antwort geben? :roteyes:

Dezipaitor 26. Jan 2009 09:08

Re: Schreibrechte abfragen?
 
passt schon:
http://www.delphipraxis.net/internal...dc82ea2#993059


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:34 Uhr.
Seite 2 von 2     12   

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