Identify Drives/de
From Free Pascal wiki
Jump to navigationJump to search
│
Deutsch (de) │
Zurück zu den Zusätzlichen Informationen.
Dieser Artikel gehört zur Windowsprogrammierung.
Aufgabe: Ermittlung aller Laufwerke
uses
Windows, SysUtils, ...;
...
// Liste der zulässigen Laufwerktypen und ihre Werte
{ DRIVE_UNKNOWN = 0;
DRIVE_NO_ROOT_DIR = 1;
DRIVE_REMOVABLE = 2;
DRIVE_FIXED = 3;
DRIVE_REMOTE = 4;
DRIVE_CDROM = 5;
DRIVE_RAMDISK = 6;}
var
i: longword;
arrLW: array[0..255] of char;
pLW: PChar;
begin
...
// Ermittelt die Anzahl aller Laufwerke
// und füllt das übergebene Char-Array arrLW mit den Laufwerken
i := GetLogicalDriveStrings(SizeOf(arrLW), arrLW);
// Prüft, ob ein Laufwerk gefunden wurde
// Abbruch, wenn kein Laufwerk gefunden wurde
if i <= 0 then
Exit;
// Prüft, ob die Anzahl der Laufwerke grösser als das Array ist
// Im Fehlerfall wird eine Exception geworfen
if i > SizeOf(arrLW) then
raise Exception.Create(SysErrorMessage(ERROR_OUTOFMEMORY));
// Weist das Array mit den Laufwerken einem PChar zu
pLW := arrLW;
// Prüft, ob der Zeiger des PChars noch auf einen gültigen Bereich zeigt
while pLW^ <> #0 do
begin
// Prüft, ob es sich bei dem Laufwerk zum einen gültigen Laufwerkstyp handelt
if (GetDriveType(pLW) > DRIVE_UNKNOWN) then
// weist den Laufwerksbuchstaben z. B. einer Combobox zu
frmFormular1.cmbLaufwerke.Items.Add(pLW);
// erhöht den Zeiger von pLW um 4
Inc(pLW, 4);
end;
...
--Olaf 06:58, 28 April 2013 (UTC)