Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Removable Devices Error c0000013 oder c00000a3 (https://www.delphipraxis.net/118325-removable-devices-error-c0000013-oder-c00000a3.html)

ScotsMan 5. Aug 2008 12:57


Removable Devices Error c0000013 oder c00000a3
 
Hi, all,

nachdem ich mir entsprechend die Birne eingerannt habe, moechte ich mein problem einmal hier zur Diskussion stellen - googeln zeigt, dass die im Betreff genannte Fehlermeldung schon manchen zur Verzweiflung brachte. Aber der Reihe nach.

Zunaechst geht es um folgende staendige Programmieraufgabe: der Nutzer soll ein Verzeichnis waehlen. Das braucht man, aber ich wuesste keinen Dialog dazu... vielleicht hat ja hier schon jemand einen Tipp.

Ich benutze hierzu ein Objekt namens TDirViewWin, welches ich vor ewiger Zeit aus einer Zeitung abgeschrieben und modifiziert habe. Es gibt dort einen TreeView, in welchem alle Laufwerke gelistet werden, und man kann diese aufklappen und ein Verzeichnis waehlen. Das hat auch bisher gut geklappt.

Jetzt, als ich das alles wieder brauchte, stosse ich darauf, dass eine Fehlermeldung mit dem Errorcode c0000013 oder c00000a3 von Windows geworfen wird. Und zwar offensichtlich dann, wenn ein Laufwerk mittels GetDriveType als Eigenschaft dvwDRIVE_REMOVABLE besitzt - und KEIN Medium eingelegt ist.

Naja, dazu haben wir ja Moeglichkeiten - oder nicht? ich habe mich entschlossen, ein CHDir auf das Laufwerk zu machen, und dabei Fehler abzutesten. Denkste! Egal, ob ich $I- und IOError auswerte, oder try...except verwende: In Delphi gibt es (IMO) KEINE Exception, aber Windows wirft eine!

Ist da schon mal jemand drauf gestossen? Wie kann man dieses Problem umgehen? Ich befuerchte, es gibt noch ein paar andere "Haenger" bei Windows, also sozusagen "quasi gemountete drives" (ein ZIP-Laufwerk wie bei mir ist nur _ein_ Teil des Problems), bei denen Windows den Fehler schlaegt und mein Delphi 6 unter Win2000 das nicht mitbekommt.

Hat zufaellig jemand eine Idee fragt besorgt
ScotsMan

omata 5. Aug 2008 13:04

Re: Removable Devices Error c0000013 oder c00000a3
 
Ich bin nicht ganz sicher, aber konnte man das Problem nicht umgehen, indem man einfach den Speicherplatz ermittelt? Wenn der totalSize = 0 ist, ist der Datenträger nicht vorhanden.

siehe hier

Tyrael Y. 5. Aug 2008 13:49

Re: Removable Devices Error c0000013 oder c00000a3
 
Zitat:

Zitat von ScotsMan
aber ich wuesste keinen Dialog dazu... vielleicht hat ja hier schon jemand einen Tipp.

Delphi-Quellcode:
uses FileCtrl,....
...

 SelectDirectory(LDir, [sdAllowCreate, sdPerformCreate, sdPrompt], 0);
...
..also das gibt es schon für eine Auswahl eines Verzeichnisses

ScotsMan 5. Aug 2008 16:43

Re: Removable Devices Error c0000013 oder c00000a3
 
Hallo, nochmals,

einstweilen Danke fuer die Tipps, ich probiere das aus und melde mich hier wieder.

Uebrigens (bisserl OT) haben einige Leute im WWW das Problem mit der Windows-Fehlermeldung auch, wenn sie irgendetwas anderes - im konkreten Fall ein Nokia-Handy - per USB angeschlossen hatten. Das Kommunikationsprogramm hat sich ins Autostart geschrieben und beim Booten immer das nicht mehr vorhandene Handy gesucht - mit der obigen Fehlermeldung.

Bis denne
ScotsMan

ScotsMan 6. Aug 2008 11:04

Re: Removable Devices Error c0000013 oder c00000a3
 
Hallo, da bin ich wieder!

Also:

1. Das mit Totalsize geht leider auch nicht, Windows wirft die besagte Fehlermeldung auch dann. :( Aber danke fuer die Idee.

2. SelectDirectory... dass es plattformabhaengig ist, stoert mich nicht, und: Es funktioniert! :dancer: Vielen Dank.

Seitdem man zur Software praktisch keine Handbuecher mehr bekommt, ist es einfach schlecht mit dem Suchen. Und die Hilfe hilft ja nur, wenn man das Schluesselwort syntaktisch richtig schreibt. Ich haette ja gerne mal eine Beschreibung der möglichen Schlüsselworte/Funktionen/Objekte und der VCL-Units, in der die Dinge deklariert sind, aber das geht irgendwie gar nicht - kennt zufaellig jemand eine legale Source dafuer - oder wie z.B. bist Du, Tyrael, zu dieser Funktion gekommen?

Ich habe z.B. gerade in Borland Delphi 6 filectrl eingegeben und F1 gedrueckt - da geht gar nix! :wall:

Alles Gute
ScotsMan

Tyrael Y. 6. Aug 2008 11:59

Re: Removable Devices Error c0000013 oder c00000a3
 
Ich finde die Hilfe von Delphi auch ziemlich schlecht.
Ich benutze RAD-Studio zum programmieren, aber kann mich einfach nicht an diese neue
Hilfe gewöhnen. Deshalb benutze ich meist immer noch die Hilfe von Delphi6.

Bei der Delphi6 Hilfe hätte man aber auch mit dem Schlagwort "dir" diese
Funktion nicht gefunden.

Ich kenne diese Funktion schon länger und ehrlich gesagt weiss ich nicht, wo ich es aufgeschnappt habe.
Freut mich, daß es deinen Bedürfnissen gerecht wird.

Gruß

ScotsMan 25. Feb 2010 22:22

Re: Removable Devices Error c0000013 oder c00000a3
 
Hi, Leutz,

wie oben beschrieben hatte Tyrael's Antwort mein Problem erst einmal erledigt.

Erst einmal.

Trotzdem bleibt es ein Wuergaround, das Problem mit einer Funktion zu umschiffen, die ständig eine Warnung wegen fehlender Zukunftskompatibilität wirft.

Zugegebenermaßen hatte ich meinen eigenen Thread vergessen - ich benutze seitdem Thyraels Lösung, was solls. Nur bin ich letzthin auf die Idee gekommen, wegen des Stolperns über die Warnung mein altes Tool wieder herauszukramen (da war doch noch was...). Und prompt habe ich denselben Fehler bekommen, gegoogelt und meinen eigenen Thread gefunden. :wall:

Such is life, and it becomes sucher and sucher.

In irgendeinem Dusel habe ich die Suchworte richtig eingegeben und folgenden Thread entdeckt:

Verlinkter Thread

Ein erster Test war erfolgreich, und nun bin ich wieder hart dran am Problem - mit neuem Enthusiasmus.

Nur, falls jemand im Rahmen von Delphi-Programmierung über c0000013 stolpert...

Hold Fast!

ScotsMan

haentschman 26. Feb 2010 06:54

Re: Removable Devices Error c0000013 oder c00000a3
 
guten Morgen...

Zitat:

Das braucht man, aber ich wuesste keinen Dialog dazu...
...die Jedis haben einen: JvBrowseForFolderDialog zum Verzeichnis auswählen.

:hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:01 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