Delphi-PRAXiS
Seite 3 von 5     123 45      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Lazarus (IDE) (https://www.delphipraxis.net/81-lazarus-ide/)
-   -   Wie Fehler bzw. Rückgabewert False abfangen? (https://www.delphipraxis.net/185641-wie-fehler-bzw-rueckgabewert-false-abfangen.html)

AlexII 26. Jun 2015 14:47

AW: Wie Fehler bzw. Rückgabewert False abfangen?
 
Zitat:

Zitat von Sir Rufo (Beitrag 1306725)
Eher so
Delphi-Quellcode:
var
  MaximumComponentLength, FileSystemFlags: Cardinal;
begin
  if not GetVolumeInformation( PChar( 'C:\'), nil, 0, nil, MaximumComponentLength, FileSystemFlags, nil, 0 ) then
    RaiseLastOSError( );

  Result := ( ( FileSystemFlags and FILE_READ_ONLY_VOLUME ) = FILE_READ_ONLY_VOLUME );
end;
Zitat:

Zitat von AlexII (Beitrag 1306724)
Aber
Zitat:

FILE_READ_ONLY_VOLUME
wird nicht gefunden. Muss ich daraus eine konstante Variable machen, oder so? Und wenn, welchen Wert besitzt sie?

Ja, den Link zur MSDN-Doku hatte ich dir geschickt, jetzt musst du nur noch lesen :roll:

Ich verstehe nur nicht was da alles heißt und wie man es anwendet. Was macht hier in deinem Fall
Delphi-Quellcode:
RaiseLastOSError( );
??
Ich hoffe es wirft keine Meldung aus, diese möchte ich ja abfangen.

AlexII 26. Jun 2015 14:50

AW: Wie Fehler bzw. Rückgabewert False abfangen?
 
Zitat:

Zitat von mkinzler (Beitrag 1306729)
Und wenn der Anwender unabhängig von Deiner Anwendung eine Karte mit Schreibschutz einschiebt, unterbleibt dann der Hinweis?

Ne, das nicht. Nur in meiner Anwendung soll der unterbleiben.

AlexII 26. Jun 2015 15:00

AW: Wie Fehler bzw. Rückgabewert False abfangen?
 
Ok, soweit alles klar, aber was mache ich mit der
Zitat:

FILE_READ_ONLY_VOLUME
?
Ist das eine Konstante und wenn ja welchen Wert hat sie?

Dalai 26. Jun 2015 15:09

AW: Wie Fehler bzw. Rückgabewert False abfangen?
 
Zitat:

Zitat von AlexII (Beitrag 1306733)
Ok, soweit alles klar, aber was mache ich mit der
Zitat:

FILE_READ_ONLY_VOLUME
?
Ist das eine Konstante und wenn ja welchen Wert hat sie?

Lies doch einfach mal im verlinkten MSDN-Artikel zu GetVolumeInformation, denn dort sind alle nötigen Infos enthalten!

MfG Dalai

AlexII 26. Jun 2015 15:35

AW: Wie Fehler bzw. Rückgabewert False abfangen?
 
Ich glaube ich hab's. Vielen Dank an alle!

Delphi-Quellcode:
function LaufwerkBeschreibbar(root: String): Boolean;
const
  FILE_READ_ONLY_VOLUME = $00080000;
var
  Oem: Cardinal;
  MaximumComponentLength, FileSystemFlags: Cardinal;
begin
  Oem := SetErrorMode(SEM_FAILCRITICALERRORS);
  if GetVolumeInformation(PChar(Root), nil, 0, nil, MaximumComponentLength, FileSystemFlags, nil, 0) then
    Result := ((FileSystemFlags and FILE_READ_ONLY_VOLUME) = FILE_READ_ONLY_VOLUME);
  SetErrorMode(Oem);
end;

Sir Rufo 26. Jun 2015 15:47

AW: Wie Fehler bzw. Rückgabewert False abfangen?
 
Zitat:

Zitat von AlexII (Beitrag 1306730)
Ich verstehe nur nicht was da alles heißt und wie man es anwendet. Was macht hier in deinem Fall
Delphi-Quellcode:
RaiseLastOSError( );
??
Ich hoffe es wirft keine Meldung aus, diese möchte ich ja abfangen.

Ja stimmt, wenn du dort Grütze übergibst (z.B. das Volume gibt es gar nicht), dann ist es sehr sinnvoll keine Exception zu werfen. :roll:

AlexII 26. Jun 2015 15:54

AW: Wie Fehler bzw. Rückgabewert False abfangen?
 
Moment, muss es nicht so sein? Ohne if-Abfrage?

Delphi-Quellcode:
function LaufwerkBeschreibbar(root: String): Boolean;
const
  FILE_READ_ONLY_VOLUME = $00080000;
var
  Oem: Cardinal;
  MaximumComponentLength, FileSystemFlags: Cardinal;
begin
  Oem := SetErrorMode(SEM_FAILCRITICALERRORS);
  GetVolumeInformation(PChar(Root), nil, 0, nil, MaximumComponentLength, FileSystemFlags, nil, 0);
  Result := ((FileSystemFlags and FILE_READ_ONLY_VOLUME) = FILE_READ_ONLY_VOLUME);
  SetErrorMode(Oem);
end;

BadenPower 26. Jun 2015 15:56

AW: Wie Fehler bzw. Rückgabewert False abfangen?
 
Zitat:

Zitat von Sir Rufo (Beitrag 1306739)
Ja stimmt, wenn du dort Grütze übergibst (z.B. das Volume gibt es gar nicht), dann ist es sehr sinnvoll keine Exception zu werfen. :roll:

Ich stimme Dir vollkommen zu, dass der Benutzer in diesem Fall auf einen Fehler aufmerksam gemacht werden sollte.:thumb:

Aber dies ist noch lange kein Grund ständig diese nervigen modalen Exceptions zu werfen.:angel:

Da glaube ich, werden wir uns nie einig werden.:cheers:

BadenPower 26. Jun 2015 16:01

AW: Wie Fehler bzw. Rückgabewert False abfangen?
 
Zitat:

Zitat von AlexII (Beitrag 1306740)
Moment, muss es nicht so sein? Ohne if-Abfrage?

Und wie unterscheidest Du, ob die Abfrage mit GetVolumeInformation gültig/erfolgreich war, wenn Du die If-Abfrage wegläßt?

AlexII 26. Jun 2015 16:10

AW: Wie Fehler bzw. Rückgabewert False abfangen?
 
Zitat:

Zitat von BadenPower (Beitrag 1306742)
Zitat:

Zitat von AlexII (Beitrag 1306740)
Moment, muss es nicht so sein? Ohne if-Abfrage?

Und wie unterscheidest Du, ob die Abfrage mit GetVolumeInformation gültig/erfolgreich war, wenn Du die If-Abfrage wegläßt?

True ist nur dann wenn Laufwerk nur lesbar?


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:16 Uhr.
Seite 3 von 5     123 45      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz