powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с определением текущей директории
9 сообщений из 9, страница 1 из 1
Проблема с определением текущей директории
    #34040536
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Использую следующий код:
Код: plaintext
1.
2.
3.
PUBLIC m.gccurdir
m.gccurdir=SYS( 5 )+SYS( 2003 )+'\'
SET DEFAULT TO '"'+m.gccurdir+'"'
SET PATH TO Bin, Form, Data, Menu, Report, Otchet

Если программу (*.exe) запускать непосредственно с места, где она лежит - все определяется верно.
Если же сделать ярлык на программу - при запуске определяется место, где лежит ярлык.
Как это побороть?
...
Рейтинг: 0 / 0
Проблема с определением текущей директории
    #34040538
w3d
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отвечаю сам себе :)
Надо указать в свойствах ярлыка рабочую папку - ту же , что и где лежит программа.
...
Рейтинг: 0 / 0
Проблема с определением текущей директории
    #34040553
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если хочешь наверняка оказаться в той же папке, где и твой еxе
Код: plaintext
1.
2.
3.
4.
5.
DECLARE INTEGER GetModuleFileName in win32api Integer, String @, Integer
lcFileName = space( 400 )
GetModuleFileName( 0 , @lcFileName,  400 )
lcFileName = alltrim(lcFileName)
lcFileName = left(lcFileName, len(lcFileName) -  1 )
set defa to (Justpath(lcFileName))
...
Рейтинг: 0 / 0
Проблема с определением текущей директории
    #34040805
-=AlexiS=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JUSTPATH((sys(16))
...
Рейтинг: 0 / 0
Проблема с определением текущей директории
    #34060701
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=AlexiS=-JUSTPATH((sys(16))

Надо хоть как-то самому проверять что советуешь. А то я уж было подумал что велосипед изобрел
...
Рейтинг: 0 / 0
Проблема с определением текущей директории
    #34061629
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T -=AlexiS=-JUSTPATH((sys(16))

Надо хоть как-то самому проверять что советуешь. А то я уж было подумал что велосипед изобрел
А чем вам не угадил ответ -=AlexiS=- !?
Ну лишнюю скобку человек поставил! А так, вполне нормальное решение.
С уважением, Алексей.
...
Рейтинг: 0 / 0
Проблема с определением текущей директории
    #34070583
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что будет, если программу удаленно запускают? т.е. сама прога на одном компе с рашарками, а пущают ее, находящуюся в сети, с другого компа, возможно даже ярлычком???
sys(5) отдает сетевой путь, sys(16) даст то же самое, тока с именем файла, а нужно знать откедова прогу запустили, т.е. грубо говоря, на каком компе она исполняется.
...
Рейтинг: 0 / 0
Проблема с определением текущей директории
    #34072317
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey-K Dima T -=AlexiS=-JUSTPATH((sys(16))

Надо хоть как-то самому проверять что советуешь. А то я уж было подумал что велосипед изобрел
А чем вам не угадил ответ -=AlexiS=- !?
Ну лишнюю скобку человек поставил! А так, вполне нормальное решение.
С уважением, Алексей.

2 Aleksey-K, -=AlexiS=-
мне как раз на днях потребовалось это самое (проверка наличия файлика именно в той папке где и exe), 2 часа потерял, пока в отладчик не заглянул.
Пример: проект из одного start.prg
Код: plaintext
1.
2.
3.
4.
GetExe()
return

proc GetExe
messagebox(sys( 16 ))

Поробуй запустить. Еще интересней результат, если функцию GetExe() вынести в PRG с процедурами, как оно мне и надо было.

Но надо признать работает вариант если start.prg сделать так
Код: plaintext
messagebox(sys( 16 ))
...
Рейтинг: 0 / 0
Проблема с определением текущей директории
    #34072363
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Dima_T
Вы перед тем, как использовать функцию SYS(16) в HELP заглядывали? Ну, хорошо, не "перед", а "после" того, как у Вас получился "странный результат"?

У функции SYS(16) есть еще и второй параметр. Так вот, если он опущен, то Вы получите путь доступа к текущей процедуре. Той, в которой собственно и была дана команда SYS(16). Если она была дана в APP, то и получите путь доступа к файлу APP.

Если нужен путь доступа к стартовому файлу, то используют второй параметр

?SYS(16,0)

или

?SYS(16,1)

Вот здесь про это написано.

Как определить директорию, из которой запущена программа

И еще. Не существует абсолютного, сто-процентно верного, способа определить путь доступа к стартовой директории. Любые способы определения зависят от конкретных условий задачи .
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Проблема с определением текущей директории
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]