AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Lazarus (IDE) Wie Fehler bzw. Rückgabewert False abfangen?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie Fehler bzw. Rückgabewert False abfangen?

Ein Thema von AlexII · begonnen am 26. Jun 2015 · letzter Beitrag vom 27. Jun 2015
Antwort Antwort
Seite 3 von 5     123 45      
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#21

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

  Alt 26. Jun 2015, 15:47
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;
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
Ich verstehe nur nicht was da alles heißt und wie man es anwendet. Was macht hier in deinem Fall RaiseLastOSError( ); ??
Ich hoffe es wirft keine Meldung aus, diese möchte ich ja abfangen.
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#22

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

  Alt 26. Jun 2015, 15:50
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.
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#23

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

  Alt 26. Jun 2015, 16:00
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?
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai
Online

Registriert seit: 9. Apr 2006
1.682 Beiträge
 
Delphi 5 Professional
 
#24

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

  Alt 26. Jun 2015, 16:09
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
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#25

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

  Alt 26. Jun 2015, 16:35
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;
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!

Geändert von AlexII (26. Jun 2015 um 16:39 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#26

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

  Alt 26. Jun 2015, 16:47
Ich verstehe nur nicht was da alles heißt und wie man es anwendet. Was macht hier in deinem Fall 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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#27

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

  Alt 26. Jun 2015, 16:54
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;
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#28

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

  Alt 26. Jun 2015, 16:56
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.
Ich stimme Dir vollkommen zu, dass der Benutzer in diesem Fall auf einen Fehler aufmerksam gemacht werden sollte.

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

Da glaube ich, werden wir uns nie einig werden.
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
BadenPower

Registriert seit: 17. Jun 2009
616 Beiträge
 
#29

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

  Alt 26. Jun 2015, 17:01
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?
Programmieren ist die Kunst aus Nullen und Einsen etwas sinnvollen zu gestalten.
Der bessere Künstler ist allerdings der Anwender, denn dieser findet Fehler, welche sich der Programmierer nicht vorstellen konnte.
  Mit Zitat antworten Zitat
AlexII

Registriert seit: 28. Apr 2008
1.717 Beiträge
 
FreePascal / Lazarus
 
#30

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

  Alt 26. Jun 2015, 17:10
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?
Bin Hobbyprogrammierer! Meine Fragen beziehen sich meistens auf Lazarus!

Geändert von AlexII (26. Jun 2015 um 17:15 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 5     123 45      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:59 Uhr.
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