statt der For-A..Z-Schleife würde mir GetLogicalDriveStrings besser gefallen, vorallem wo so es jetzt in der CodeLib sein soll.
http://www.delphipraxis.net/internal...t.php?t=171471
hab das GetLogicalDrives übersehn
[add]
mit Try-Finally wäre es bestimmt hübscher
Delphi-Quellcode:
procedure GetLogicalDriveLetters(list: TStrings; driveType: Word);
var
drives: DWORD;
letter: Char;
begin
list.BeginUpdate;
try
list.Clear;
drives := GetLogicalDrives; // Mount-Status aller Laufwerksbuchstaben
for letter := 'A' to 'Z' do
begin
if Odd(drives) and (GetDriveType(PChar(letter + ':\')) and driveType <> 0) then
list.Add(letter + ':');
drives := drives shr 1;
end;
finally
list.EndUpdate;
end;
end;
oder auch
Delphi-Quellcode:
procedure GetLogicalDriveLetters(list: TStrings; driveType: Word);
var
drives: DWORD;
letter: Char;
begin
list.BeginUpdate;
try
list.Clear;
drives := GetLogicalDrives; // Mount-Status aller Laufwerksbuchstaben
for letter := 'A' to 'Z' do
if (drives and (1 shl (Ord(letter) - Ord('A'))) <> 0)
and (GetDriveType(PChar(letter + ':\')) and driveType <> 0) then
list.Add(letter + ':');
finally
list.EndUpdate;
end;
end;
so könnte man auch noch sowas machen und mehrere Laufwerkstypen gleichzeitig abfragen.
Delphi-Quellcode:
procedure TDemoForm.TestButtonClick(Sender: TObject);
begin
GetLogicalDriveLetters(ListBox.Items, DRIVE_CDROM or DRIVE_REMOVABLE);
end;