Потеря App.Path при Drag & Drop.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4168
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Потеря App.Path при Drag & Drop.

Сообщение Mikle » 10.12.2006 (Вс) 14:38

Имеется программа prog.exe, обрабатывающая скрипт из внешнего файла, имя которого заранее неизвестно, поэтому передается в prog.exe параметром. В результате работы программа должна создать файл, название которого прописано в скрипте, например test.tga, если имя прописано без полного пути, файл test.tga должен создаваться в текущей для prog.exe папке.
Если я передаю параметр из командной строки или BAT-файла, все так и происходит, но если я мышкой перетаскиваю script.txt на prog.exe, то test.tga создается в "C:\Program Files\Microsoft Office\Templates\1049", хотя при этом "MSGBOX App.Path" показывает правильное значение текущей папки.
Подскажите, как с этим справиться, не заставляя пользователя прописывать в скрипте полный путь.

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

Сообщение tyomitch » 10.12.2006 (Вс) 14:43

Написать в начале проги: ChDir App.Path
Изображение

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 10.12.2006 (Вс) 14:46

Э... Mikle... А ты часом того... app.path с curdir не путаешь?..
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4168
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Сообщение Mikle » 10.12.2006 (Вс) 14:54

Настолько привык, что они всегда совпадают, что и правда попутал :oops:

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16496
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 10.12.2006 (Вс) 15:46

tyomitch
+ до этого нужно писать ChDrive Left(App.Path, 3) потому что если программа лежит на диске, отличном от C, текущий путь останется тем же.

+Эта проблема также возникает при пользовании КомонДиалогом.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

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

Сообщение tyomitch » 10.12.2006 (Вс) 16:00

Хакер писал(а):tyomitch
+ до этого нужно писать ChDrive Left(App.Path, 3) потому что если программа лежит на диске, отличном от C, текущий путь останется тем же.

1) не обязательно до; можно и после.
2) не обязательно Left(3); можно и просто ChDrive App.Path
3) я знал, что кто-нибудь на это обратит внимание :-)
Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16496
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 10.12.2006 (Вс) 16:06

1 - чисто с эстетической стороны.
2 - помню, что как то раз без Лефта у меня возникали проблемы.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

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

Сообщение tyomitch » 10.12.2006 (Вс) 16:13

Из справки по ChDrive:
If the drive argument is a multiple-character string, ChDrive uses only the first letter.

Значит, проблемы возникали не из-за этого.
Изображение

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16496
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 10.12.2006 (Вс) 16:14

Не надо никого банить. И закрывать тему впрочем тоже. Правило остаётся и ковырять я всё равно ничего не буду.

Нарушители будут наказаны.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 10.12.2006 (Вс) 16:40

Хакер писал(а):Не надо никого банить. И закрывать тему впрочем тоже. Правило остаётся и ковырять я всё равно ничего не буду.

Нарушители будут наказаны.

Хакер, ты сюда хотел постить, да? :lol:
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16496
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 10.12.2006 (Вс) 18:09

Верно :wink:

Промазал.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

yaklit
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 129
Зарегистрирован: 09.09.2006 (Сб) 19:38

Сообщение yaklit » 12.12.2006 (Вт) 23:08

кстати о ChDrive.
если создать на диске D:\ любой .cmd файл и в нем
C:\
cd C:\admin\hacker
то если cur dir у этого cmd файла будет начинаться на D:
то при исполнении команд файл переходить в
C:\admin\hacker НЕ БУДЕТ.
а вот так будет
C:
cd C:\admin\hacker
из за слэша сегодня час сидел мучался. как раз
делаю прогу по теме похожую.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16496
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 12.12.2006 (Вт) 23:11

потому что не надо писать \ в командной строке при определении текущего диска. Вообще-то это правило.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

yaklit
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 129
Зарегистрирован: 09.09.2006 (Сб) 19:38

Сообщение yaklit » 13.12.2006 (Ср) 18:23

незнаю, в Bat файлах работало вроде

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16496
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 13.12.2006 (Ср) 19:09

Нажми WinKey+R
напиши cmd
нажми enter
попробуй своим способом перейти на другой диск. Получишь он интерпретатора команд сообщения примерно такое
?:\ не является командой или программой.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

yaklit
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 129
Зарегистрирован: 09.09.2006 (Сб) 19:38

Сообщение yaklit » 13.12.2006 (Ср) 19:21

ну так это ж так cmd.exe интерпритирует! РАНЬШЕ, в WinME были Bat файлы которые вродебы принимали \ :)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16496
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 13.12.2006 (Ср) 19:26

А я сейчас перезагружусь и проверю :)
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

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

Сообщение tyomitch » 13.12.2006 (Ср) 19:29

Подтверждаю. Принимали.
Изображение


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

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

Сейчас этот форум просматривают: Yandex-бот и гости: 14

    TopList