|
Вопрос # 5 425/ вопрос решён / |
|
Доброго времени суток, уважаемые эксперты!
Подскажите как можно извлечь полный путь к файлу, зная название.
В этом процессе не должен принимать участия реестр, так как фаил может быть любым. Есть предположение что нужно подсмотреть в файловой системе, но как это сделать?
Примечание #1 (19 июня 2011, 23:07): Да, забыл упомянуть что фаил не запущен.
Для этого это всё и делается, чтоб запустить его.
Может есть другие пути решения данной проблемы, без извлечения полного пути?
 |
Вопрос задал: QWERYTY (статус: Посетитель)
Вопрос отправлен: 19 июня 2011, 23:03
Состояние вопроса: решён, ответов: 0.
|
Мини-форум вопроса
Всего сообщений: 41; последнее сообщение — 12 марта 2012, 02:59; участников в обсуждении: 7.
Страницы: [1] [2] [3] [Следующая »]
|
QWERYTY (статус: Посетитель), 19 июня 2011, 23:12 [#1]:
Просьба к модератору удалить лишние примечания к вопросу.
У меня браузер завис, с сообщением что страница устарела и нужно заново отправить данные. Пока разобрался с браузером увидел вот такое чудо.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
|
|
bugmenot (статус: 3-ий класс), 19 июня 2011, 23:19 [#2]:
всё равно непонятно получилось
попробуй подробнее описать саму пробеиу а не частность
"у миня есть фаил abcdefgh.xyz он ... я хачу сделать ..."
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
QWERYTY (статус: Посетитель), 20 июня 2011, 00:05 [#3]:
Поподробнее:
Нужно запустить приложение. Например я буду использовать ShellExecute. Там по мимо названия нужно указать путь к файлу.
Внимание вопрос:
Как получить путь(начиная с диска, их может быть несколько) к файлу для его запуска?
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
|
|
Gooddy (статус: 3-ий класс), 20 июня 2011, 00:13 [#4]:
Поиск же.
Чисти код! Чисти код! Чисти код!
|
|
QWERYTY (статус: Посетитель), 20 июня 2011, 00:25 [#5]:
Спасибо, помог нереально.
Хоть бы указал пару функций.
Я не прошу написать код за меня.
Я прошу опытных(надеюсь) людей указать самый дешовый с точки зрения системных ресурсов путь.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
|
|
bugmenot (статус: 3-ий класс), 20 июня 2011, 01:20 [#6]:
Цитата (QWERYTY):
дешовый
FileSearch, SearchPath
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
QWERYTY (статус: Посетитель), 20 июня 2011, 01:35 [#7]:
Чёто новенькое.
По запросам в поисковик находилась всякая байда по типу:
GetPathName(), extractfilepath(), и т.д.
Ща буду искать инфу и пробовать.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
|
|
QWERYTY (статус: Посетитель), 20 июня 2011, 01:44 [#8]:
Разумеется попадалась функция FindFirst, но в возвращаемой ей структуре я пути не нашол, хотя судя из параметров которые она возвращает было бы логично указавать и полный путь.
Очевидно косяк в функции. Ща буду Биллу писать гневное письмо )))
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
|
|
QWERYTY (статус: Посетитель), 20 июня 2011, 01:56 [#9]:
Кстати в структуре которую возвращает FindFirst размер файла гоночный. Причём ни размер файла ни размер занимаемого места на диске не совпадают с размером который передаёт эта "ЧУДЕСНАЯ" функция. Еще какие то функции попадались(названий уже не помню) из описания которых следовало что ща всё будет норм., но они вообще ничего не возвращали.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
|
|
QWERYTY (статус: Посетитель), 20 июня 2011, 02:40 [#10]:
S<Ш<Ги|M| Кто нибудь знает что это? Это в результате выполнения SearchPath, а само значение функции 0.
Функция FileSearch тоже молчит, очевидно возвращает пустую строку.
Даааааааа, если такие мелочи будут столько времени отнимать я наверное не допищу прогу, и улечу на Альдебаран.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
|
|
QWERYTY (статус: Посетитель), 20 июня 2011, 02:57 [#11]:
Да наверное можно было бы вписать в какую нибудь ShellExecute или CreateProcess полный путь к файлу ручками, и радоваться.
Но для меня это теперь превратилось в интересную задачу.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
|
|
Егор (статус: 10-ый класс), 20 июня 2011, 04:53 [#12]:
опиши проблему более подробно. что за файл хочешь запускать, зачем. а то не понятно ничего
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
Егор (статус: 10-ый класс), 20 июня 2011, 04:54 [#13]:
Цитата (QWERYTY):
Да наверное можно было бы вписать в какую нибудь ShellExecute или CreateProcess полный путь к файлу ручками, и радоваться. так и делается. я не пойму, чем тебя такой путь не устраивает?
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
|
|
min@y™ (статус: Доктор наук), 20 июня 2011, 08:17 [#14]:
Мощная задача! Чей воспалённый мозг её родил?
Допустим, что дано имя файла readme.txt, а на винте у тебя их 100500 штук по разным папкам. Какой путь должна тогда вернуть функция, которую ты требуешь?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
bugmenot (статус: 3-ий класс), 20 июня 2011, 09:20 [#15]:
Цитата (min@y™):
имя файла readme.txt
Дык там не имя файла, а "название фаила", чтобы ни один враг не догадался.
И кто пустил слух, что функции не принимают относительные пути?
виконання програми розпочинається з того самого мiсця, де призупинилося.
|
|
QWERYTY (статус: Посетитель), 20 июня 2011, 12:17 [#16]:
То Егор
Чё за вопрос зачем запускать фаил? Наверное самым рациональным ответом будет: Чтобы он был запущенным.
А путь меня не устраивает тем что это мой мозг знает где фаил, а я хочу чтоб прога сама узнала и в последствии запустила.
То min@y™
Ага, давай ща будем искать ТХТ, ... которые теоретически в каждой папке могут существовать.
Разумеется ПЕРВЫЙ ПОПАВШИЙСЯ удовлетворяющий условиям поиска.
Воспалённый да? А я думал что это естественно. Функций для запуска пруд пруди, а дальше видимо пусть сами е....
Задача сама собой напрашивается например когда мы планируем поделиться экземпляром программы с товарищем.
Разумеется мы не знаем папку установки у него, но знаем название файла(ЕХЕ разумеется).
То bugmenot
Как всегда загадки да ребусы сыпешь?
Извени, насчёт имя или название, опечатался.)))
Функции находят путь только после того как я его укажу, в одном параметре название файла, а в другом путь до него.
Вот тогда функции выдают нужную строку, но я так сам могу, вон в блокноте написать или ещё где, зачем тогда функции.
Создаётся впечатление что они больше для диагностики, работают когда уже есть все данные, а нужно НАЙТИ ПУТЬ К ФАЙЛУ.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
|
|
QWERYTY (статус: Посетитель), 20 июня 2011, 12:43 [#17]:
Нашол вчера код который действительно проводит поиск, но он делает это немыслимо долго. Это делалось на одном диске.
Но их может быть больше.
Вот я и думал до этого момента что есть специальные функции которые увидев название файла подсмотрят необходимую информацию(полный путь разумеется входит в этот перечень) в файловой системе.
Или ужно изучать как устроенна FAT32, NTFS и на ассемблере ковырять всё это?
Но это убийство времени изучать всё это, зачем тогда Delphi?
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
|
|
min@y™ (статус: Доктор наук), 20 июня 2011, 13:03 [#18]:
Цитата (QWERYTY):
Разумеется ПЕРВЫЙ ПОПАВШИЙСЯ удовлетворяющий условиям поиска.
А зачем всё это? Если тебе нужно запустить конкретную программу, то её путь должен быть известен заранее. Если надо запустить setup.exe, а на диске их туева хуча, то который из них запускать? Первый попавшийся? А смысл какой?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
QWERYTY (статус: Посетитель), 20 июня 2011, 13:14 [#19]:
Насчёт 100500 файлов, я проверю потом на размер ещё может на чё для уверенности что этот путь именно к тому файлу.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
|
|
QWERYTY (статус: Посетитель), 20 июня 2011, 13:21 [#20]:
Вы видимо не дочитали предложение до конца.
Разумеется ПЕРВЫЙ ПОПАВШИЙСЯ УДОВЛЕТВОРЯЮЩИЙ УСЛОВИЯМ ПОИСКА.
Естественно нужно проверять является ли фаил тем который мы искали, если нет продолжать поиск.
В моём же случае всё намного проще, фаил такой один одинешенька.
ВЕРИТЬ ВО ВНЕЗЕМНЫЕ ЦИВИЛИЗАЦИИ НЕ ОЗНАЧАЕТ ВЕРИТЬ В ИНОПЛАНЕТЯН.
|
Страницы: [1] [2] [3] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|