Поиск Файла По Всему Диску

Тема в разделе "Delphi - Система", создана пользователем Shouldercannon, 1 сен 2012.

  1. Shouldercannon

    Shouldercannon Well-Known Member

    Регистрация:
    25 май 2010
    Сообщения:
    125
    Симпатии:
    0
    Нашёл способ, но он не работает в Delphi 2010 если данные подставлять из TEdit или из чего-либо другого. В чём может заключаться проблема?
    Код (Delphi):
    uses Imagehlp
    ...
    procedure TForm1.Button1Click(Sender: TObject);
    var
    FilePath: PAnsiChar;
    begin
    Button1.Enabled := False;
    GetMem(FilePath, MAX_PATH);
    if SearchTreeForFile('D:\'{PAnsiChar(Edit1.Text)}, 'test.txt'{PAnsiChar(Edit2.Text)}, FilePath) then ShowMessage ('Найден файл: ' + FilePath);
    FreeMem(FilePath);
    Button1.Enabled := True;
    end;
     
  2. sinkopa

    sinkopa Well-Known Member

    Регистрация:
    17 июн 2009
    Сообщения:
    344
    Симпатии:
    9
    Потому что Widestring. :blink:
    В Win7 можно использовать SearchTreeForFileW а в XP только кастовать к Ansi
    Например так
    Код (Delphi):
    procedure TForm1.Button1Click(Sender: TObject);
    var
    FilePath: PAnsiChar;
    a,b: AnsiString;
    begin
    GetMem(FilePath, MAX_PATH);
    a := Edit1.Text;
    b := Edit2.Text;
    if SearchTreeForFile (PAnsiChar(a), PAnsiChar(b), FilePath) then ShowMessage ('Найден файл: ' + FilePath);
    ilePath);
    Button1.Enabled := True;
    end;
    Хотя прямо скажу - это плохо... Потому как в таком "раскладе" у Вас никогда не найдутся файлы включающие национальные символы (умляюты и пр.)...
    Ну... что нибудь типа "Mötley Crüe.mpg" например, при кастовании к Ansi станет "Motley Crue.mpg"
     
  3. Shouldercannon

    Shouldercannon Well-Known Member

    Регистрация:
    25 май 2010
    Сообщения:
    125
    Симпатии:
    0
    Понятно, но оно и не требуется.
    Или так
    Код (Delphi):
    if SearchTreeForFile(PAnsiChar(AnsiString(Edit1.Text)), PAnsiChar(AnsiString(Edit2.Text)), FilePath) then
     
Загрузка...

Поделиться этой страницей