Wie stelle ich fest, ob ein bestimmter Laufwerkstyp (z.B. CD-ROM) vorhanden ist?


Diese Funktion erstellt eine Stringliste mit allen Laufwerksbuchstaben eines bestimmten Typs und gibt als Result die Anzahl der vorhandenen Laufwerke zurück:

var DriveList : TStringList;
    LWCount : byte;

function GetDrives(DriveType:integer):byte;
var Drives : array [1..255] of char;
    LWListe : TStringList;
    i : Byte;
    Len : DWord;
begin
  LWListe := TStringList.Create;
  {Alle Laufwerke ermitteln}
  Len := GetLogicalDriveStrings(255,@Drives);
  for i := 1 to Len-2 do
    if (i mod 4)=1 then
      LWListe.Add(copy(Drives,i,3));
  {Laufwerke des angegebenen Typs zählen}
  Result := 0;
  DriveList.Clear;
  for i := 0 to LWListe.Count-1 do begin
    if GetDriveType(PChar(LWListe[i]))=DriveType then begin
      Result := Result+1;
      DriveList.Add(copy(LWListe[i],1,2))
    end;
  end;
  LWListe.Destroy;
end;

DriveList := TStringLIst.Create;
{Wechselplatten:}
LWCount := GetDrives(DRIVE_REMOVABLE);
{Festplatten:}
LWCount := GetDrives(DRIVE_FIXED);
{Netzlaufwerke:}
LWCount := GetDrives(DRIVE_REMOTE);
{CD-ROM:}
LWCount := GetDrives(DRIVE_CDROM);
{RAM-Disks:}
LWCount := GetDrives(DRIVE_RAMDISK);

{..Mach' was mit der DriveList..}

DriveList.Free;
Delphi 1 Delphi 2 Delphi 3 Delphi 4
nicht getestet Version nicht betroffen getestet

siehe auch:


Delphi FAQ