Путь исполняемого файла

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
asn
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 29.08.2005 (Пн) 8:18

Путь исполняемого файла

Сообщение asn » 15.11.2006 (Ср) 10:41

Как получить полный путь к исполняемому файлу т.е. какой код надо вставить в файл .exe, чтобы при его запуске получить путь к нему?

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 15.11.2006 (Ср) 10:45

App.Path & "\" & App.EXEName & ".exe"

Тут на первый взгляд все правильно, но по сути есть один баг. Найдешь - молодец :)

asn
Новичок
Новичок
 
Сообщения: 34
Зарегистрирован: 29.08.2005 (Пн) 8:18

Сообщение asn » 15.11.2006 (Ср) 12:08

Спасибо большое, это то что надо. Баг увидел, но причину не искал, т.к. достаточно было только App.Path, т.е. пути к папке.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 15.11.2006 (Ср) 16:42

Баг в том, что исполнякмый файл может быть не exe, так? При таком раскладе GetModuleFileName рулит.
Изображение

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 15.11.2006 (Ср) 16:50

keks-n, мимо.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 15.11.2006 (Ср) 16:54

Да не баг это вовсе.
Просто надо помнить, что App.Path не добавляет слеш в конце, но для корневого каталога слеш добавляется.
Lasciate ogni speranza, voi ch'entrate.

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 15.11.2006 (Ср) 17:02

Сам по себе это не баг, однако в месте, где такой код будет использоваться, будет баг.

Конь
Постоялец
Постоялец
 
Сообщения: 650
Зарегистрирован: 02.06.2006 (Пт) 6:49
Откуда: г. Красноярск

Сообщение Конь » 15.11.2006 (Ср) 17:27

Ну тогда надо просто юзать If Right(str, 1) = "\"... :)
Подпись находится в стадии разработки...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 15.11.2006 (Ср) 19:08

keks-n писал(а):Баг в том, что исполнякмый файл может быть не exe, так? При таком раскладе GetModuleFileName рулит.

Совершенно верно.
Странно, почему Amed не согласился.
Изображение

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 15.11.2006 (Ср) 22:20

Может потому, что исполняемый файл это все-таки exe, а не ocx или dll, да и автор четко указал - exe?
Лучший способ понять что-то самому — объяснить это другому.

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 15.11.2006 (Ср) 23:22

Ещё исполняемый файл может быть scr, com, pif, cmd и т.д.
Что, вирусов по почте никто не получал? ;-)
Изображение

lister
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 389
Зарегистрирован: 15.01.2005 (Сб) 7:34
Откуда: Страна оления

Сообщение lister » 16.11.2006 (Чт) 1:17

Офигеть... Тему раздули аж на 10 ответов. :shock: В FAQ ее если там нету...

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 16.11.2006 (Чт) 15:49

Вообще, лучше таки юзать GetModuleFilename во всех случаях. Поскольку, что App.Path, что App.EXEName юзают её, а потом вытаскивают нужную часть, на что уходит время.
Последний раз редактировалось keks-n 16.11.2006 (Чт) 16:03, всего редактировалось 3 раз(а).
Изображение

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 16.11.2006 (Чт) 15:51

keks-n, часы-годы? ;)

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 16.11.2006 (Чт) 16:04

Несколько десятков лишних тактов процессора. А их надо экономить :lol:
Изображение

inf
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 53
Зарегистрирован: 28.09.2006 (Чт) 21:10
Откуда: мы все оттуда

Сообщение inf » 16.11.2006 (Чт) 16:18

keks-n писал(а):Вообще, лучше таки юзать GetModuleFilename во всех случаях. Поскольку, что App.Path, что App.EXEName юзают её, а потом вытаскивают нужную часть, на что уходит время.


А по подробнее можно. Я не понимаю...
Изображение

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 16.11.2006 (Чт) 16:19

Да уж нам тут хоть как бы сделать ;)
На досуге замерь разницу во времени исполнения этих двух вариантов :lol:

inf
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 53
Зарегистрирован: 28.09.2006 (Чт) 21:10
Откуда: мы все оттуда

Сообщение inf » 16.11.2006 (Чт) 16:21

Amed писал(а):Да уж нам тут хоть как бы сделать ;)
На досуге замерь разницу во времени исполнения этих двух вариантов :lol:


keks-n прав ресурсы надо экономить :!:
Изображение

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 16.11.2006 (Чт) 16:26

inf, App.Path - функция вида
Код: Выделить всё
Private Function AppEXEName As String
    Dim ModuleName As String
    ...
    AppEXEName= Left$(ModuleName, GetModuleFileName(hInst, ModuleName, Len(ModuleName)))
End Function

Ты же не пишешь
Код: Выделить всё
path=AppEXEName()

Private Function AppEXEName As String
    AppEXEName=App.EXEName
End Function

вместо
Код: Выделить всё
path=App.EXEName

Верно?

Экономить так ресурсы - то же самое, что бережно складировать у себя дома все попавшие в руки копеечные монеты.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Majestic-12 [Bot] и гости: 41

    TopList