Zitat von
bigg:
So hier nochmal mal meine Variante:
...
Zur Sicherheit könntest du am Ende DirectoryExists() aufrufen.
Du hast trotzdem noch folgende Probleme:
Zitat von
MaBuSE:
...Aber Vorsicht es gibt Leute (wie mich
) die auf ein CD-ROM Laufwerk auch direkt über den
UNC Namen zugreifen, in dem Fall gibt es keinen Laufwerksbuchstaben des CD-ROMs.
z.B.:
\\SERVER\CDROM\setup.exe -> ExtractFileDrive(Application.ExeName) = ''
Oder dem CD-ROM ist kein Laufwerksbuchstabe zugewiesen, aber das CD-ROM wurde in ein Verzeichnis gemountet.
z.B.
C:\CDROM\setup.exe -> ExtractFileDrive(Application.ExeName) = 'C:'
C: ist aber nicht das CD-ROM Laufwerk, sondern die Festplatte (obwohl ja auf das CD-ROM zugegriffen wurde)
Oder der Kunde hat den Inhalt der CD ganz einfach in ein Verzeichnis auf der Festplatte kopiert....
Was ist wenn er dann Laufwerk C zurückgibt, aber das CD-ROM Laufwerk gar keinen eigenen Buchstaben hat und C: die Festplatte ist. ... ?
Prüfen ob der Laufwerksbuchstabe ein CD-ROM Laufwerk ist (Devicetyp) macht auch keinen Sinn, da ein Laufwerk über Netz oder einfach mit Subst gemoutet sein kann.
Das Laufwerk R: hat in dem Beispiel den Typ eines Netzwerklaufwerks.
(Obwohl es ja das in das Verzeichnis c:\CDROM gemountete lokale CD-ROM Laufwerk ist)
Das DirectoryExists sagt ja nur aus, das es das Laufwerk gibt, nicht was dahintewr steckt.