Thema: Delphi Number of disks?

Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

Re: Number of disks?

  Alt 29. Okt 2007, 17:09
ich wollt nur mal darauf hinweisen, das der Code von hathor nicht 100% funktionieren wird.
denn wenn eine "Disk" aus dem laufendem System entfernt wird (es reicht wenn ein USB-Stick o.Ä. entfernt wird), dann werden die Nummern der nachfolgenden Disks nicht geändert, wobei dann eine "Lücke" entsteht, an welcher sein Code aufhört zu zählen.

Code:
Bsp:
\\.\PhysicalDrive0   -   HDD 1
\\.\PhysicalDrive1   -   HDD 2
\\.\PhysicalDrive2   -   USB 1
\\.\PhysicalDrive3   -   USB 2


USB 1 entfernt:
\\.\PhysicalDrive0   -   HDD 1
\\.\PhysicalDrive1   -   HDD 2

\\.\PhysicalDrive3   -   USB 2


3 Laufwerke vorhanden, es würden aber nur 2 gezählt.

einfache Lösung:
Delphi-Quellcode:
function GetHDDCount: integer;
var f, i: integer;
begin
  Result := 0;
  for i := 0 to 255 do
  begin
    f := FileOpen('\\.\PHYSICALDRIVE' + IntToStr(i), fmOpenRead or fmShareDenyNone);
    if f = INVALID_HANDLE_VALUE then continue;
    FileClose(f);
    inc(Result);
  end;
end;
(statt 255 würde meistens auch schon 9 ausreichen, aber sicher is sicher )


PS: die geöffnete Laufwerke sollten besser auch wieder geschlossen werden !!!
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat