Einzelnen Beitrag anzeigen

DieDolly

Registriert seit: 22. Jun 2018
2.175 Beiträge
 
#1

GetLogicalDriveStrings 64bit liest nicht alle Laufwerke aus

  Alt 19. Jan 2020, 21:27
Mir ist es nie in den sinn gekommen, diese Funktion mit einem 64bit-Kompilat zu testen.
Heute habe ich es aber mal gemacht und siehe da, es werden nicht alle Laufwerke erkannt.

Woran liegt das?
Delphi-Quellcode:
procedure GetDiskDriveLetters(aList: TStringList);
var
 vDrivesSize: Cardinal;
 vDrives: array [0 .. 128] of Char;
 vDrive: PChar;
begin
 if not Assigned(aList) then
  Exit;

 aList.BeginUpdate;
 try
  aList.Clear;
  vDrivesSize := GetLogicalDriveStrings(SizeOf(vDrives), vDrives);

  if vDrivesSize = 0 then
   Exit;

  if vDrivesSize > SizeOf(vDrives) then
   raise Exception.Create(SysErrorMessage(ERROR_OUTOFMEMORY));

  vDrive := vDrives;

  while vDrive^ <> #0 do
   begin
    aList.Add(vDrive);
    Inc(vDrive, SizeOf(vDrive));
   end;
 finally
  aList.EndUpdate;
 end;

 showmessage(aList.Text);
end;

Geändert von DieDolly (20. Jan 2020 um 06:53 Uhr)
  Mit Zitat antworten Zitat