Home » Tipps & Tricks » System » Hardware » Laufwerkstyp ermitteln (Festplatte, CD, Ram-Disk…)
Laufwerkstyp ermitteln (Festplatte, CD, Ram-Disk…)
Folgende Prozedur ermittelt alle vorhandenen Laufwerke. Sie erwartet als Parameter eine Liste, die mit den Laufwerksnamen und -typen gefüllt wird:
procedure GetDrives(const AItems: TStrings); const DriveTypeTexts: array[DRIVE_UNKNOWN..DRIVE_RAMDISK] of string = ('Unbekannt', 'Kein Wurzelverzeichnis', 'Diskette', 'Festplatte', 'Netzlaufwerk', 'CDROM', 'RAMDisk'); var Drive: Char; DriveType: Integer; DriveMask: Integer; Flag: Integer; begin DriveMask := GetLogicalDrives; //Bitmaske holen flag := 1; //Startflag setzen for Drive := 'A' to 'Z' do //Jeden Buchstaben gegenprüfen begin if (flag and DriveMask) 0 then begin DriveType := GetDriveType(PChar(Format('%S:',[Drive]) ) ) ; AItems.Add(Format('%s: %s', [Drive, DriveTypeTexts[DriveType]])); end; flag := flag shl 1; //Ein Bit weiter nach links gehen ( = flag * 2) end; end;
Die Funktion GetLogicalDrives gibt eine Bitmaske zurück, welche die verfügbaren Laufwerke darstellt.Das erste Bit entspricht dem Laufwerk ‚A‘, das zweite dem Laufwerk ‚B‘ usw.Die Bitmaske könnte also so aussehen:
0...00010011 entspricht dem Dezimalwert 16 + 2 + 1 = 19Z...HGFEDCBA entspricht den Laufwerken A, B und E
Die Prozedur GetDrives prüft anhand dieser Bitmaske jedes Bit, ob es gesetzt ist. Ist es gesetzt, wird das Laufwerk der Liste hinzugefügt.Es wird dabei zwischen Festplatten, Wechsellaufwerken, CD-ROM/DVD-Laufwerken, Netzlaufwerken und RamDisks unterschieden.Ein Beispielaufruf könnte so aussehen:
procedure TForm1.Button1Click(Sender: TObject); begin GetDrives(Listbox1.Items) end;