Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#7

Re: CD-Rom Laufwerkbuchstabe ermitteln

  Alt 9. Jan 2010, 10:17
statt der For-A..Z-Schleife würde mir MSDN-Library durchsuchenGetLogicalDriveStrings 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 := 'Ato 'Zdo
    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 := 'Ato 'Zdo
      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;
$2B or not $2B
  Mit Zitat antworten Zitat