Identify Drives/de

From Free Pascal wiki
Jump to navigationJump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

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)