Sie können nur eine Liste der verfügbaren Laufwerke abrufen und diese durchgehen, indem Sie Ihre Funktion aufrufen.
In den letzten Versionen von Delphi können Sie IOUtils.TDirectory.GetLogicalDrives verwenden, um eine Liste aller Laufwerksbuchstaben einfach abzurufen.
uses
System.Types, System.IOUtils;
var
Drives: TStringDynArray;
Drive: string
begin
Drives := TDirectory.GetLogicalDrives;
for s in Drives do
FileSearch(s);
end;
Bei älteren Versionen von Delphi, die IOUtils nicht enthalten, können Sie die WinAPI Funktion GetLogicalDriveStrings verwenden. Es ist wesentlich komplizierter zu verwenden, aber hier ist ein Code, der es für Sie umschließt. (Sie benötigen Windows, SysUtils und Typen in Ihrer uses-Klausel.)
function GetLogicalDrives: TStringDynArray;
var
Buff: String;
BuffLen: Integer;
ptr: PChar;
Ret: Integer;
nDrives: Integer;
begin
BuffLen := 20; // Allow for A:\#0B:\#0C:\#0D:\#0#0 initially
SetLength(Buff, BuffLen);
Ret := GetLogicalDriveStrings(BuffLen, PChar(Buff));
if Ret > BuffLen then
begin
// Not enough memory allocated. Result has buffer size needed.
// Allocate more space and ask again for list.
BuffLen := Ret;
SetLength(Buff, BuffLen);
Ret := GetLogicalDriveStrings(BuffLen, PChar(Buff));
end;
// If we've failed at this point, there's nothing we can do. Calling code
// should call GetLastError() to find out why it failed.
if Ret = 0 then
Exit;
SetLength(Result, 26); // There can't be more than 26 drives (A..Z). We'll adjust later.
nDrives := -1;
ptr := PChar(Buff);
while StrLen(ptr) > 0 do
begin
Inc(nDrives);
Result[nDrives] := String(ptr);
ptr := StrEnd(ptr);
Inc(ptr);
end;
SetLength(Result, nDrives + 1);
end;
Was haben Sie versucht, abgesehen davon, diesen Code zu finden? – rgoliveira
Sie müssen zuerst eine Liste aller Festplatten abrufen und dann durch diese Liste iterieren. Sicherlich bist du nicht die erste Person, die das macht ... –
Außerdem scheint dein Code das 'Windows'-Verzeichnis zu durchsuchen. Hast du wirklich ein 'Windows'-Verzeichnis auf jeder Platte? Möchten Sie wirklich danach suchen? –