Jak rozpoznać typ napędu

code

Poniższy kod wyświetla informacje na temat wszystkich napędów zainstalowanych w systemie (rozpoznaje ich typ). Informacje o napędzie wyświetlane są w komponencie TComboBox - należy więc takowy umieścić na formularzu.

Procedura realizująca zadanie wygląda następująco:

procedure TForm1.Dyski;
var
  I, Typ: Integer;
  Dysk, Nazwa: String;
begin
  for I := Ord('A') to Ord('Z') do
  begin
    Dysk := Chr(I) + ':';
    Typ := GetDriveType(PChar(Dysk));
    case Typ of
      0: Nazwa := Dysk + ' Nie można określić typu urządzenia';
      1: Nazwa := Dysk + ' Na urządzeniu nie istnieje katalog źródłowy';
      Drive_Removable: Nazwa := Dysk + ' Dyskietka 3,5';
      Drive_Fixed: Nazwa := Dysk + ' Dysk twardy';
      Drive_Remote: Nazwa := Dysk + ' Dysk sieciowy';
      Drive_Cdrom: Nazwa := Dysk + ' Napęd CD-ROM';
      Drive_Ramdisk: Nazwa := Dysk + ' Dysk pamięciowy (RAM disk)';
    end;
    if not ((Typ = 0) or (Typ = 1)) then
      ComboBox1.Items.AddObject(Nazwa, Pointer(I));
  end;
  ComboBox1.Text := ComboBox1.Items[0];
end;

Zamiast komponentu TComboBox możesz użyć również TListBox

Zobacz też:

4 komentarzy

Nie wyświetla napędu z którego jest uruchomiony program.
Spróbuj zamiast:
Dysk:=I+':';
dołożyć BackSlash '\'.
Dysk:=I+':\';
lub jeśli w ComboBox'ie nie chcesz znaku'\' to przy wywołaniu funkcji:
Typ := GetDriveType(PChar(Dysk+'\'));

Jeszcze jedna taka mala drobna uwaga, jak chcecie zeby procedura dzialala na 98 to podawajcie jako poczatkowa litere dysku male 'a' i jako koncowa male 'z' bo zauwazylem ze w 98 ma to znaczenie :)

Bardzo fajny kodzik, ale mam z nim jeden problem. W ComboBoxie nie wyskakuje mi jedna partycja dysku twardego (wyświetla mi partycje c,d,f bez e). Co mam o tym myśleć ?? Reszta chodzi genialnie :D

Takie dwie uwagi (nie dotyczące poprawności kodu).

  1. Stosuj tag < delphi > Dzięki temu automatycznie będzie kolorować składnię
  2. Nie ma potrzeby stosowania I typu Integer. Równie dobrze można użyć typu Char jako elementu sterującego pętlą. Dzięki temu mamy mniej konwersji:
    var
    I: Char;
    begin
    for I := 'A' to 'Z' do
    begin
    Dysk := I + ':';
    :)
  3. Widzę, że dobrze wiesz jak działa GetDriveType. Może byś umieścił opis tej funkcji w Encyklopedii? (a tutaj link do niej)