AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Warum kommt immer diese Fehlermeldung ?
Thema durchsuchen
Ansicht
Themen-Optionen

Warum kommt immer diese Fehlermeldung ?

Ein Thema von sugaFRAG · begonnen am 22. Apr 2004 · letzter Beitrag vom 22. Apr 2004
Antwort Antwort
sugaFRAG

Registriert seit: 22. Apr 2004
Ort: Mönchengladbach
34 Beiträge
 
#1

Warum kommt immer diese Fehlermeldung ?

  Alt 22. Apr 2004, 19:59
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:
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;
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.

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.
  Mit Zitat antworten Zitat
Benutzerbild von alcaeus
alcaeus

Registriert seit: 11. Aug 2003
Ort: München
6.537 Beiträge
 
#2

Re: Warum kommt immer diese Fehlermeldung ?

  Alt 22. Apr 2004, 20:08
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.
Andreas B.
Die Mutter der Dummen ist immer schwanger.
Ein Portal für Informatik-Studenten: www.infler.de
  Mit Zitat antworten Zitat
Markus K.

Registriert seit: 26. Jan 2004
Ort: Halle
346 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Warum kommt immer diese Fehlermeldung ?

  Alt 22. Apr 2004, 20:17
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
  Mit Zitat antworten Zitat
sugaFRAG

Registriert seit: 22. Apr 2004
Ort: Mönchengladbach
34 Beiträge
 
#4

Re: Warum kommt immer diese Fehlermeldung ?

  Alt 22. Apr 2004, 20:28
@alcaeus

und wie überprüfe ich ob eine cd drin ist ?
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#5

Re: Warum kommt immer diese Fehlermeldung ?

  Alt 22. Apr 2004, 20:36
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?
  Mit Zitat antworten Zitat
sugaFRAG

Registriert seit: 22. Apr 2004
Ort: Mönchengladbach
34 Beiträge
 
#6

Re: Warum kommt immer diese Fehlermeldung ?

  Alt 22. Apr 2004, 21:18
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
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:24 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