![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск файла в директории!
grigory © (2004-12-20 15:38:00)Привет!Подскажите..как мне найти файл,зная только частично путь к нему?
Т.е. например найти excel.exe, зная только, что он в папке Microsoft Office? Как правильно формировать маску поиска? И второе..как потом получить полный путь к найденному файлу?
Fay (2004-12-21 11:17:00) [1]2 grigory © (20.12.04 16:36) [4]
1) GetLogicalDrives
2) GetDriveType
3) ssk © (20.12.04 16:01) [1]
grigory (2004-12-20 16:36:00) [2]Спасибо! у меня такой же код..он стандартен в этом случае.. просто прога работает в сети, с разными версиями офиса! я-то знаю где у меня что установлена, но вот на других машинах..
ssk (2004-12-20 16:31:00) [3]ты должен указать полный путь стартовой папки.
ты ищешь свой excel.exe. вот и укажи:
GetFullPath('c:\program files\microsoft office', 'excel.exe');
если на 100% уверен, что файл находится именно где то там ->c:\program files\microsoft office. кстати, эту информацию можно найти в реестре (программно, конечно) и подставить нужное значение.
а вообще поэкспериментируй... тебе же дан готовый код! вот и доработай на свое усмотрение.
grigory (2004-12-20 16:22:00) [4]спасибо большое! а возможно не указывать диск? я конечно догадываюсь,что это невозможно, но..:)
ssk (2004-12-20 16:01:00) [5]задаешь параметры стартовой папки, где искать и имя файла. на выходе получишь полный путь к этому файлу.
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;