Delphi-PRAXiS
Seite 1 von 5  1 23     Letzte »    

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 13:47

Wie Fehler bzw. Rückgabewert False abfangen?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich möchte mit dieser Zeile prüfen, ob ein Wechseldatenträger beschreibbar ist:

Delphi-Quellcode:
ForceDirectoriesUTF8(RemovableDriveList.Strings[0] + 'test');
Nun stecke ich eine gelockte SD-Karte ein und bekomme den Fehler, dass die Karte schreibgeschützt ist (ist auch logisch), siehe Screenshot.
Aber wie fange ich diese Windowsmeldung ab? Diese zwei Möglichkeiten machen es nicht:

Delphi-Quellcode:
try
  ForceDirectoriesUTF8(RemovableDriveList.Strings[0] + 'test');
except
end;

// oder

if not ForceDirectoriesUTF8(RemovableDriveList.Strings[0] + 'test') then ;
Der Windowsfehler kommt trotzdem.

Danke!

BUG 26. Jun 2015 13:51

AW: Wie Fehler bzw. Rückgabewert False abfangen?
 
Wie stellst du dir den vor, wie die zweite Möglichkeit was an der Meldung ändert :stupid: :mrgreen:

Abgesehen davon findet man mit Google super schnell diese Lösung.

AlexII 26. Jun 2015 13:55

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

Zitat von BUG (Beitrag 1306708)
Wie stellst du dir den vor, wie die zweite Möglichkeit was an der Meldung ändert :stupid: :mrgreen:

Jah...
Zitat:

ForceDirectoriesUTF8
gibt False zurück und weiter passiert nichts.

BUG 26. Jun 2015 14:00

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

Zitat von AlexII (Beitrag 1306709)
ForceDirectoriesUTF8 gibt False zurück und weiter passiert nichts.

Nun weiß ForceDirectoriesUTF8 aber gar nicht, ob du etwas mit dem Rückgabewert machst.

Im Ernst, guckt dir die verlinkten Antworten an, da sollte eine Lösung dabei sein, die dir passt.

AlexII 26. Jun 2015 14:02

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

Habe diese hier gefunden. Muss da Dw1 und Dw2 nicht mit Werter belegt werden?

Delphi-Quellcode:
function LaufwerkBereit(root: string): boolean;
var Oem: cardinal;
  Dw1, Dw2: DWORD;
begin
  Oem := SetErrorMode(SEM_FAILCRITICALERRORS);
  result := GetVolumeInformation(PCHAR(Root), nil, 0, nil, Dw1, Dw2, nil, 0);
  SetErrorMode(Oem) ;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if Laufwerkbereit('A:\') then ShowMessage('Laufwerk bereit!')
  else ShowMessage('Laufwerk nicht bereit!');
end;

BUG 26. Jun 2015 14:04

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

Zitat von AlexII (Beitrag 1306711)
Muss da Dw1 und Dw2 nicht mit Werter belegt werden?

Nein, da das optionale Ausgabeparameter sind.

AlexII 26. Jun 2015 14:09

AW: Wie Fehler bzw. Rückgabewert False abfangen?
 
Der sagt mit, meine schreibgeschützte SD-Karte ist bereit... voller Quatsch...
Muss wohl noch was anpassen.

Dalai 26. Jun 2015 14:12

AW: Wie Fehler bzw. Rückgabewert False abfangen?
 
GetVolumeInformation wird hier nur dazu "missbraucht", um zu prüfen, ob ein Medium bzw. Laufwerk vorhanden ist. Wenn du wissen willst, ob das Laufwerk beschreibbar ist, musst du das trotzdem prüfen - ob nun mit ForceDirectories oder sonstwie, ist erstmal egal.

MfG Dalai

AlexII 26. Jun 2015 14:17

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

Zitat von Dalai (Beitrag 1306714)
GetVolumeInformation wird hier nur dazu "missbraucht", um zu prüfen, ob ein Medium bzw. Laufwerk vorhanden ist. Wenn du wissen willst, ob das Laufwerk beschreibbar ist, musst du das trotzdem prüfen - ob nun mit ForceDirectories oder sonstwie, ist erstmal egal.

MfG Dalai

Und was ist mit diesem Satz? Wie kann ich den Rückgabewert von GetVolumeInformation auf FILE_READ_ONLY_VOLUME prüfen?

Zitat:

Call GetVolumeInformation() and check FILE_READ_ONLY_VOLUME in the returned flags parameter.

Dalai 26. Jun 2015 14:28

AW: Wie Fehler bzw. Rückgabewert False abfangen?
 
Möglich, dass das geht. Denkbar, dass MS damit etwas anderes meint. Probier's doch einfach aus - mehr als nicht funktionieren kann's nicht :).

MfG Dalai


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:16 Uhr.
Seite 1 von 5  1 23     Letzte »    

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