@nalimite

Delphi, как найти папку на всех дисках в системе?

Привет.
Возник такой вопрос. Имеется папка, с названием, допустим, "ASDFG".
Как сделать программно в Delphi, чтобы при нажатии кнопки, программа быстренько пробежалась поиском по всем дискам (именно корень диска), в том числе и сьемные носители (флешки), и если нашел папку эту, выдал путьдо нее допустим в edit.
Папка будет лежать в корне диска, но при этом, буква диска будет всегда меняться, это будет флешка.
  • Вопрос задан
  • 327 просмотров
Решения вопроса 1
xpert13
@xpert13
Full Stack Developer
procedure GetDriveLetters(AList: TStrings);
var
  vDrivesSize : Cardinal;
  vDrives	: array[0..128] of Char;
  vDrive : PChar;
begin
  AList.BeginUpdate;
  try
    AList.Clear;
    vDrivesSize := GetLogicalDriveStrings(SizeOf(vDrives), vDrives);
    if vDrivesSize = 0 then Exit;

    vDrive := vDrives;
    while vDrive^ <> #0 do
    begin
      AList.Add(StrPas(vDrive));
      Inc(vDrive, SizeOf(vDrive));
    end;
  finally
	  AList.EndUpdate;
  end;
end;

function FindFolderOnDrives(sFolderName : String):string;
var
  i : Integer;
  lDrivers : TStringList;
  sFolderPath : String;
begin
  Result := '';
  lDrivers := TStringList.Create;
  try
    GetDriveLetters(lDrivers);
    for i := 0 to lDrivers.Count - 1 do
    begin
      sFolderPath := lDrivers[i] + sFolderName;
      if DirectoryExists(sFolderPath) then
      begin
        Result := sFolderPath;
        Exit;
      end;
    end;
  finally
    lDrivers.Free;
  end;
end;


Пример использования
procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.Text := FindFolderOnDrives('ASDFG');
end;
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы