![]() |
Warum kommt immer diese Fehlermeldung ?
hi Jungs, also ich code ein Proggi, indem in einer comboboxex nur CDROM LWs aufgelistet werden.
Bei einem klick auf dieses Lw soll das CD Icon erscheinen, falls vorhanden. Habe dies so gelößt:
Delphi-Quellcode:
Nur komischerweise merkt sich irgendwie mein Proggi ohne das ich es ihm befohlen habe etc. welche CDLW laufwerke schon mal in benutzung waren mit meinem Prog.
function GetCDIcon(Drive: string): TIcon;
var ico: TIcon; ini: TIniFile; s, p: string; i, j: Integer; FileInfo: SHFILEINFO; begin //Abbrechen wenn "AutoRun.Inf" nicht existiert. //Abort if "AutoRun.inf" doesn't exists. if FileExists(Drive + ':\autorun.inf') = False then Exit; //"AutoRun.inf" öffnen //Opens the "AutoRun.inf" ini := TIniFile.Create(Drive + ':\autorun.inf'); ico := TIcon.Create; try //Dateinamen lesen //Read the filename s := ini.ReadString('Autorun', 'ICON', ''); //Abbrechen, wenn kein Icon festgelegt wurde //Abort if there is no icon specified if s = '' then Exit; //Icon von Datei laden //load the icon from a file if FileExists(s) then ico.LoadFromFile(s); if FileExists(Drive + ':\' + s) then ico.LoadFromFile(Drive + ':\' + s); if (FileExists(s) = False) and (FileExists(Drive + ':\' + s) = False) then begin for j := (Pos(',', s) + 1) to Length(s) do begin p := p + s[j]; end; i := StrToInt(p); for j := Length(s) downto (Pos(',', s)) do Delete(s, j, Length(s)); if FileExists(s) = False then s := Drive + ':\' + s; ico.Handle := ExtractIcon(hinstance, PChar(s), i); end; Result := ico; finally ini.Free; end; end; So kommt beim Abfragen wenn keine CD Im Laufwerk ist die standard Windows Fehlermeldung mit "Keine CD im Datenträger Vorhanden" oder so wo dann Abbrechen Wiederholen Weiter steht. Aber er soll die Funktion doch abbrechen. Ich hab mal gedebuggt und es liegt eindeutig an diesem code. schon in der zeile wo nach der autorun gesucht wird bricht er ab. Also es kommt die Meldung und wenn ich auf abbrechen klick läuft es ganz normal weiter. Wenn ne CD drin ist funzt alles so wie es soll. So nun meine Frage: Woran liegt das ? Vielen Dank im Voraus. |
Re: Warum kommt immer diese Fehlermeldung ?
Du versuchst auf die CD zuzugreifen, Windows sieht, dass keine CD drinnen ist und bringt die Meldung. Der Fehler kommt schon beim FileExists, weil Windows denkt, dass du eine CD voraussetzt, und nicht überprüfen willst, ob eine drinnen ist.
|
Re: Warum kommt immer diese Fehlermeldung ?
Hallo sugaFRAG,
ich habe deinen Code gerade mal ausprobiert...bei mir bringt er keine Fehlermeldung, wenn keine CD eingelegt ist...er springt an der Stelle raus wo er abbrechen soll, wenn keine CD im Laufwerk ist. Tschüß Markus |
Re: Warum kommt immer diese Fehlermeldung ?
@alcaeus
und wie überprüfe ich ob eine cd drin ist ? |
Re: Warum kommt immer diese Fehlermeldung ?
Du kannst es mit SetCurrentDir versuchen. Das ist eine bool-Funktion, die FAlSE zurückgibt, wenn das Laufwerk nicht gewechselt werden konnte. Das passiert eigentlich immer, wenn keine CD drin ist.
Frage: Was machst du, wenn es auf der CD keine "autorun.inf" gibt? Welches Icon nimmst du dann? |
Re: Warum kommt immer diese Fehlermeldung ?
dann wird ein eigenes icon angezeigt
ich hab es jetzt doch noch anders gelöst mit getvolumeinformation weil ich die sowieso brauchte so hab ich damit erst mit if abgefragt und dann in der schleife die funktion aufgerufen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz