Wiki-KopieMirror

Dies ist ein Mirror des Wikis von pascal.chat. Bearbeiten, Verlauf und Anmeldung finden dort statt.

Identify Drives/de

Zurück zu den Zusätzlichen Informationen.\

Dieser Artikel gehört zur Windowsprogrammierung.
Aufgabe: Ermittlung aller Laufwerke\

pascal
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)


From the Free Pascal wiki, page "Identify Drives/de", as it stood on 2020-02-17 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Version 2, zuletzt geändert von WikiArchive .