<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Exception bei SelectDirectory und CD-Rom (E&#x2F;A-Fehler 21)]]></title><description><![CDATA[<p>Hallo an alle ...</p>
<p>kann mir jemand bei folgendem Problem helfen :</p>
<p>- Eine Form - ein Button - ein Editfeld -</p>
<p>Der klick auf den Button löst folgenden Quellcode aus :</p>
<pre><code>#include &lt;FileCtrl.hpp&gt;

void __fastcall TForm1::Button1Click(TObject *Sender)
{
     const SELDIRHELP = 1000;
     AnsiString Dir = &quot;C:\\&quot;;
     if (SelectDirectory(Dir, TSelectDirOpts() ,SELDIRHELP))
     Edit1-&gt;Text=Dir;
}
</code></pre>
<p>Der Code ist übrigens direkt so aus der Hilfe vom Borland.</p>
<p>Der Dialog zum wählen eines Directorys wird geöffnet und ich klicke<br />
auf mein CD-Rom F: - in ihm befindet sich <strong>keine</strong> CD.</p>
<p>Und nun wird eine Exception rausgeschmissen : <strong>E/A-Fehler 21</strong></p>
<p>Warum ? Wie bekomme ich die weg ? Ich habe es schon mit try / catch probiert, was aber auch nichts genutzt hat. Wäre schön wenn mir jemand sagen könnte, wie diese Fehlermeldung zu Stande kommt und besser : wie sie sich unterdrücken läßt ohne eine CD im Laufwerk haben zu müssen (dann kommt'se nämlich nich') ...</p>
<p>Ach ja - Randdaten :</p>
<p>System : W2KSP4 und XP Home (passiert auf beiden gleich)<br />
Code : Borland C++ Builder 5.0</p>
<p>Vielen Dank und Grüße ... SirPaddy</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/96897/exception-bei-selectdirectory-und-cd-rom-e-a-fehler-21</link><generator>RSS for Node</generator><lastBuildDate>Sat, 11 Jul 2026 12:32:22 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/96897.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 05 Jan 2005 19:22:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Exception bei SelectDirectory und CD-Rom (E&#x2F;A-Fehler 21) on Wed, 05 Jan 2005 19:22:37 GMT]]></title><description><![CDATA[<p>Hallo an alle ...</p>
<p>kann mir jemand bei folgendem Problem helfen :</p>
<p>- Eine Form - ein Button - ein Editfeld -</p>
<p>Der klick auf den Button löst folgenden Quellcode aus :</p>
<pre><code>#include &lt;FileCtrl.hpp&gt;

void __fastcall TForm1::Button1Click(TObject *Sender)
{
     const SELDIRHELP = 1000;
     AnsiString Dir = &quot;C:\\&quot;;
     if (SelectDirectory(Dir, TSelectDirOpts() ,SELDIRHELP))
     Edit1-&gt;Text=Dir;
}
</code></pre>
<p>Der Code ist übrigens direkt so aus der Hilfe vom Borland.</p>
<p>Der Dialog zum wählen eines Directorys wird geöffnet und ich klicke<br />
auf mein CD-Rom F: - in ihm befindet sich <strong>keine</strong> CD.</p>
<p>Und nun wird eine Exception rausgeschmissen : <strong>E/A-Fehler 21</strong></p>
<p>Warum ? Wie bekomme ich die weg ? Ich habe es schon mit try / catch probiert, was aber auch nichts genutzt hat. Wäre schön wenn mir jemand sagen könnte, wie diese Fehlermeldung zu Stande kommt und besser : wie sie sich unterdrücken läßt ohne eine CD im Laufwerk haben zu müssen (dann kommt'se nämlich nich') ...</p>
<p>Ach ja - Randdaten :</p>
<p>System : W2KSP4 und XP Home (passiert auf beiden gleich)<br />
Code : Borland C++ Builder 5.0</p>
<p>Vielen Dank und Grüße ... SirPaddy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/687986</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/687986</guid><dc:creator><![CDATA[SPC]]></dc:creator><pubDate>Wed, 05 Jan 2005 19:22:37 GMT</pubDate></item><item><title><![CDATA[Reply to Exception bei SelectDirectory und CD-Rom (E&#x2F;A-Fehler 21) on Wed, 05 Jan 2005 20:19:37 GMT]]></title><description><![CDATA[<p>versuchs mal mit folgender funktion:</p>
<pre><code class="language-cpp">//---------------------------------------------------------------------------
// Funktion versucht die Grösse eines Laufwerkes zu ermitteln
// -&gt; schlägt dieses fehl, so ist in diesem Laufwerk kein
//    Datenträger (meist bei: floppy-, oder cd-rom-laufwerken)
//---------------------------------------------------------------------------
bool DiskInDrive(char Drive)
{
  WORD ErrorMode;
  bool Result;

  Drive = UpCase(Drive);

  // zeichen ausserhalb des bereiches
  if ((Drive &lt; 'A') || (Drive &gt; 'Z')) return false;

  // ErrorMode setzen (unterdrücken von Fehlermeldungen)
  ErrorMode = SetErrorMode(SEM_FAILCRITICALERRORS | SEM_NOOPENFILEERRORBOX);

  try
  {
    // kann DiskSize ermittelt werden
    Result = DiskSize(Drive - 'A' + 1) != -1;
  }
  __finally
  {
    // ErrorMode zurücksetzen
    SetErrorMode(ErrorMode);
  }

  return Result;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/688078</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/688078</guid><dc:creator><![CDATA[Sunday]]></dc:creator><pubDate>Wed, 05 Jan 2005 20:19:37 GMT</pubDate></item><item><title><![CDATA[Reply to Exception bei SelectDirectory und CD-Rom (E&#x2F;A-Fehler 21) on Wed, 05 Jan 2005 21:14:19 GMT]]></title><description><![CDATA[<p>Pack eine ApplicationEvents-Komponente auf die Form (unter 'Zusätzlich' in der Komponentenpalette) und schreib in deren OnException-Event z.B.</p>
<pre><code class="language-cpp">if (E-&gt;ClassNameIs(&quot;EInOutError&quot;))
    ShowMessage(&quot;Fehler beim Öffnen des Gerätes (&quot; + E-&gt;Message + &quot;)&quot;);
</code></pre>
<p>Wenn du die Exception stillschweigend abfangen willst dann tun es dort auch einfach ein Paar Kommentarzeichen .</p>
<p>PS.<br />
Alternativ könntest du auch den modernen Ordnerdialog verwenden, der sieht nicht so potthässlich aus und die Exceptionproblematik hat sich auch gleich erledigt.</p>
<pre><code class="language-cpp">String Dir = &quot;&quot;, root = &quot;&quot;;
  if (SelectDirectory(&quot;Ein Verzeichnis auswählen&quot;, WideString(root), Dir))
    Edit1-&gt;Text = Dir;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/688104</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/688104</guid><dc:creator><![CDATA[Jansen]]></dc:creator><pubDate>Wed, 05 Jan 2005 21:14:19 GMT</pubDate></item><item><title><![CDATA[Reply to Exception bei SelectDirectory und CD-Rom (E&#x2F;A-Fehler 21) on Thu, 06 Jan 2005 05:36:12 GMT]]></title><description><![CDATA[<p>Vielen Dank, Sunday und Jansen - Ich werde das gleich mal in die Tat umsetzten.</p>
<p>Gruß ... SirPaddy</p>
]]></description><link>https://www.c-plusplus.net/forum/post/688316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/688316</guid><dc:creator><![CDATA[SPC]]></dc:creator><pubDate>Thu, 06 Jan 2005 05:36:12 GMT</pubDate></item></channel></rss>