Difference between revisions of "Identify Drives/de"

From Lazarus wiki
Jump to navigationJump to search
m (Fixed syntax highlighting)
 
Line 5: Line 5:
 
Dieser Artikel gehört zur Windowsprogrammierung.<br>
 
Dieser Artikel gehört zur Windowsprogrammierung.<br>
 
Aufgabe: Ermittlung aller Laufwerke<br>
 
Aufgabe: Ermittlung aller Laufwerke<br>
<syntaxhighlight>
+
<syntaxhighlight lang=pascal>
 
uses
 
uses
 
   Windows, SysUtils, ...;
 
   Windows, SysUtils, ...;

Latest revision as of 11:05, 17 February 2020

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)