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)