Als Erweiterung eine andere Methode, alle Laufwerke auf einen Ritt in eine Stringliste zu laden. Basiert auf dem Vorschlag von Christian S. die Funktion
GetLogicalDriveStrings zu nutzen. Einziges Problem dieser Funktion ist, dass diese eine Stringliste mit null-terminierten Strings und doppel #00#00 am Ende zurückliefert. Ein klein wenig Pointer Verbiegungen helfen uns aber schnell weiter.
Delphi-Quellcode:
procedure LoadLogicalDrives(Strings: TStrings);
var
S: DWORD;
AllStrings, CurrentString: PChar;
begin
S := 255;
GetMem(AllStrings, Succ(S));
GetLogicalDriveStrings(S, AllStrings);
try
if AllStrings <> nil then
begin
CurrentString := AllStrings;
while True do
begin
Strings.Add(StrPas(CurrentString));
Inc(CurrentString, Succ(StrLen(CurrentString)));
if CurrentString[0] = #0 then
Break;
end;
end;
finally
FreeMem(AllStrings);
end;
end;
[edit=r_kerber]Code- durch Delphi-Tags ersetzt. Mfg, r_kerber[/edit]