Identify Drives/de

From Lazarus wiki
Jump to: navigation, 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)