FAQ » Sprzęt

Jak rozpoznać typ napędu

  • 2006-02-20 11:43
  • 4 komentarze
  • 820 odsłon
  • Oceń ten tekst jako pierwszy
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 komentarze

ram2e5 2005-05-03 17:26

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+\'\\\'));

ostry 2003-11-17 23:06

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 :)

pu 2003-07-23 22:33

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

Dryobates 2003-04-21 00:43

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)