Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.06;
Скачать: CL | DM;

Вниз

Поиск файла в директории!   Найти похожие ветки 

 
grigory ©   (2004-12-20 15:38) [0]

Привет!Подскажите..как мне найти файл,зная только частично путь к нему?
Т.е. например найти excel.exe, зная только, что он в папке Microsoft Office? Как правильно формировать маску поиска? И второе..как потом получить полный путь к найденному файлу?


 
ssk ©   (2004-12-20 16:01) [1]

задаешь параметры стартовой папки, где искать и имя файла. на выходе получишь полный путь к этому файлу.


function GetFullPath(StartRootFolder, Filename: string): string;
var
 FN: string;

 procedure Finding(StartDir: string);
 var
   SearchRec: TSearchRec;
 begin
   StartDir := IncludeTrailingPathDelimiter(StartDir);
   if FindFirst(StartDir + "*.*", faAnyFile, SearchRec) = 0 then
     repeat
       if (SearchRec.Name <> "..") and (SearchRec.Name <> ".") then
         if (SearchRec.Attr and faDirectory) <> faDirectory then
           if AnsiUpperCase(SearchRec.Name) = AnsiUpperCase(Filename) then
             begin
               FN := StartDir + Filename;
               Break;
             end
           else
         else
           Finding(StartDir + SearchRec.Name);
     until FindNext(SearchRec) <> 0;
   FindClose(SearchRec);
 end;

begin
 FN := Filename;
 Finding(StartRootFolder);
 Result := FN;
end;


пример:
var
 s: string;
begin
 s := GetFullPath("c:\", "win.ini");
 ShowMessage(s); // покажет первый найденный путь на диске к файлу win.ini
end;


 
grigory ©   (2004-12-20 16:22) [2]

спасибо большое! а возможно не указывать диск? я конечно догадываюсь,что это невозможно, но..:)


 
ssk ©   (2004-12-20 16:31) [3]

ты должен указать полный путь стартовой папки.
ты ищешь свой excel.exe. вот и укажи:

GetFullPath("c:\program files\microsoft office", "excel.exe");

если на 100% уверен, что файл находится именно где то там -> c:\program files\microsoft office.  кстати, эту информацию можно найти в реестре (программно, конечно) и подставить нужное значение.

а вообще поэкспериментируй... тебе же дан готовый код! вот и доработай на свое усмотрение.


 
grigory ©   (2004-12-20 16:36) [4]

Спасибо! у меня такой же код..он стандартен в этом случае.. просто прога работает в сети, с разными версиями офиса! я-то знаю где у меня что установлена, но вот на других машинах..


 
Fay ©   (2004-12-21 11:17) [5]

2 grigory ©   (20.12.04 16:36) [4]
1) GetLogicalDrives
2) GetDriveType
3) ssk ©   (20.12.04 16:01) [1]



Страницы: 1 вся ветка

Текущий архив: 2005.02.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.038 c
14-1105878259
begin...end
2005-01-16 15:24
2005.02.06
Проблема с Internet Explorer


9-1099344741
Klopan
2004-11-02 00:32
2005.02.06
Звук газа


4-1103434952
DelphiN!
2004-12-19 08:42
2005.02.06
Передача параметров потоковой процедуры


1-1106174256
ROMBLLER
2005-01-20 01:37
2005.02.06
как из dll вставить фрейм в форму программы...


1-1106202265
En0.t
2005-01-20 09:24
2005.02.06
Глюки или ошибки Delphi