powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как узнать текущий путь (диск с директорий) в котором программа считает себя?
37 сообщений из 37, показаны все 2 страниц
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40133834
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть CurrentDir и Application.ExeName, но это НЕ то!

Если я запишу программу на флешке, а потом вытащу её и снова вставлю, то этот «текущий путь» у программы пропадает! (в то время как currentdir и exename по прежнему будут выдавать «d:\» и «d:\Project1.exe»).
Например запустив программу с флешки, вытащив её и вставив на место, если вы нажмёте кнопку выполняющую CreateDir('123'); то директория не создастся. А если попытаетесь создать файл:
AssignFile(F, '123.txt');
Rewrite(F);
то Rewrite выдаст ошибку “I/O error 433”.

В то время как если жёстко укажу путь с диском 'd:\123' то он будет и создавать директорию и файл. То есть, текущий путь где-то не из CurrentDir берётся.
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40133835
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40133836
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Нет. GetCurrentDirectory как и CurrentDirectory после передёргивания флешки по прежнему указывает на то что текущая директория “d:\”
Одна ко создать файл или директорию в текуще директории уже невозможно, а если указать d:\... то всё создаётся.
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40133837
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSky,

С точки зрения "вытаскиваня флешки" чем тебя Application.ExeName не устраивает?

Куда ты вообще хочешь свой файл сохранять?

Это мне напоминает сценарий:

Я запустил программу с флешки, а потом ее из ПК вытащил и в другой ПК вставил.
Хочу что бы файлы из ранее запущенной программы на флешку в другом компе сохранялись.
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40133839
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
InterSky
Если я запишу программу на флешке, а потом вытащу её и снова вставлю,

Пациент, не делайте ТАК - (с).
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40133840
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забудьте про текущий путь, иначе никогда не отладитесь до конца. Используйте только полный.
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40133842
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я понимаю что тут очень много знатаков религии, музыки и медицины... желающих показать свои познания в этих областях.
Но вопрос вполне конкретный - Откуда программа получает информацию о своём местоположении (текущей директории для записи/чтения). И это не GetCurrentDir, так как он не меняется после передёргивания флешки, а файл или директорию в текущей директории создать уже нельзя.
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40133843
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyНет. GetCurrentDirectory как и CurrentDirectory после передёргивания флешки по
прежнему указывает на то что текущая директория “d:\”

А я и не говорил, что оно должно работать так как ты хочешь. В статье
описывается как оно работает на самом деле. Если ты собственными шаловливыми
ручками сделал текущий каталог недоступным - это твоя проблема. Он (внезапно) не
обязан быть валидным или существующим. Это просто глобальная переменная
процесса, которой можно назначить любое вменяемое или невменяемое значение.

Если ты хочешь в своей программе не допускать подобной проблемы - отрабатывай
MW_DEVICECHANGE и позаботься чтобы текущий каталог стал валидным после
шаловливых ручек.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40133862
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

Дим, ну вот ты сразу по лбу канделябром :)
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40133863
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSky,

Друже, а ничего, что твой D:\ , когда ты вставишь флешку в другой комп - отмапится на Z:\ ?
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40133867
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Друже, а ничего, что твой D:\ , когда ты вставишь флешку в другой комп - отмапится на Z:\ ?
Даже можно представить другую ситуацию, когда после извлечённой флешки вставляется ДРУГАЯ флешка и получает туже метку D:\, а извлечённая вставляется следующей и получает F:\
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40133874
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
InterSky
Я понимаю что тут очень много знатаков религии, музыки и медицины... желающих показать свои познания в этих областях.
Но вопрос вполне конкретный - Откуда программа получает информацию о своём местоположении (текущей директории для записи/чтения). И это не GetCurrentDir, так как он не меняется после передёргивания флешки, а файл или директорию в текущей директории создать уже нельзя.

Конкретный, но очень в данном случае дурной и неграмотный. Вот нафига в современную эпоху пытаться записать какой-то файл в каталог с исполняемым файлом? Винда для записи таких файлов представляет кучу вариантов не зависящих от "вставленности флешки".
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40133875
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
northener
Винда для записи таких файлов представляет кучу вариантов
Один говеннее другого...

Реестр нужен только для того что бы найти само ПО.
Файлы хранящиеся в каталоге с ПО - рулят.
Каталоги в дебрях User не выбор advanced юзеров ПК.
Это попытка подражать андроиду, где секюрити уже сожрала все права юзера.
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40133877
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
Файлы хранящиеся в каталоге с ПО - рулят.
Да никто там уже давно не рулит, разве что ридонли-конфиги.
Прав-то нет. XP уже вроде помирать начало таки.
Можно, конечно, издеваться над пользователями и заставлять их не ставить в PF, поднимать права на папку... Но это всё смешно.
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40133879
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
YuRock,

Ну да. Ну да.

По мнению безопасников все должно быть запрещено, а юзер должен страдать и писать заявки и объяснительные на каждый чих.
Что характерно, по опыту это от вирусов и проблем нихрена не спасает, но работать мешает.

Ну и слава богу это пока без меня.

А заставлять никого ничему не надо. Надо делать нормальные инсталляторы.
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40133881
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
YuRock,

Ну да. Ну да.

По мнению безопасников все должно быть запрещено, а юзер должен страдать и писать заявки и объяснительные на каждый чих.
Что характерно, по опыту это от вирусов и проблем нихрена не спасает, но работать мешает.

Ну и слава богу это пока без меня.

А заставлять никого ничему не надо. Надо делать нормальные инсталляторы.
Как раз хранение приложения и его конфигов в C:\Users\%user%\AppData\Roaming позволяет и минимизировать общение с безопасниками, и использовать доступ к приложению с любого компа при использовании active directory, и даже иметь возможность самообновления exe-шника самостоятельно (он может переписать сам себя).
А при хранении приложения в Program Files всё намного сложнее.

И тебе правильно говорят - хватит мыслить категориями XP, она давно умерла))
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40133882
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreat
По мнению безопасников все должно быть запрещено, а юзер должен страдать и писать заявки и объяснительные на каждый чих.
Что характерно, по опыту это от вирусов и проблем нихрена не спасает, но работать мешает.
Да ничего никому не мешает. Доступ к базе есть, и этого достаточно. А локальные настройки и документы - в локальных настройках и документах. Всё логично и удобно.
rgreat
А заставлять никого ничему не надо. Надо делать нормальные инсталляторы.
Ну да, не разрешать ставить программы туда, куда хочет пользователь (и предполагает ОС) это "нормальные инсталляторы"
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40134111
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSky
Dimitry Sibiryakov,

Нет. GetCurrentDirectory как и CurrentDirectory после передёргивания флешки по прежнему указывает на то что текущая директория “d:\”
Одна ко создать файл или директорию в текуще директории уже невозможно, а если указать d:\... то всё создаётся.


Замечу, что можно сделать не только GetCurrentDirectory но и SetCurrentDirectory и установить каталог как нужно. Останется только его найти. Поиск: запоминаем идентификатор флешки с которой запустились по GUID тома (гуглить volume guid windows). Обрабатываем MW_DEVICECHANGE и в момент когда том запуска вдруг окажется опять доступным, устанавливаем SetCurrentDirectory на возможно новый его путь, либо старый, если остался.
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40134118
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
makhaon
InterSky
Dimitry Sibiryakov,

Нет. GetCurrentDirectory как и CurrentDirectory после передёргивания флешки по прежнему указывает на то что текущая директория “d:\”
Одна ко создать файл или директорию в текуще директории уже невозможно, а если указать d:\... то всё создаётся.


Замечу, что можно сделать не только GetCurrentDirectory но и SetCurrentDirectory и установить каталог как нужно. Останется только его найти. Поиск: запоминаем идентификатор флешки с которой запустились по GUID тома (гуглить volume guid windows). Обрабатываем MW_DEVICECHANGE и в момент когда том запуска вдруг окажется опять доступным, устанавливаем SetCurrentDirectory на возможно новый его путь, либо старый, если остался.

А теперь вернемся к топику и зададим себе и особенно ТС'у вопрос. А нафига нужно передергивать флешку если она нужна в процессе работы программы?
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40134157
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
northener,

так то всяко бывает. мы тоже распространяем часть софта на флешках (точнее юзеры так пишут софт). бывает выдергивают. я, правда, особо не заморачивался, получается записать файл по изначальному пути старта пишу. нет - пропускаю запись.
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40134178
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
makhaon,

ага. Я делал софт, генерирующий дистрибутивы нашего ПК, а также специальную версию ПК, работающую с флешки. В обоих случаях даже в голову не приходило, что нужно предусмотреть ситуацию, когда какой-то чудак в процессе работы флешку выдернет.
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40134198
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ
В обоих случаях даже в голову не приходило, что нужно предусмотреть ситуацию, когда какой-то чудак в процессе работы флешку выдернет.

надо бы и отключение Винта предусмотреть
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40134252
asutp2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и отключение процессора, мало ли что
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40134380
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что бы потом эврикавскими логами ящик не заваливало, лучше как минимум
{$SetPEFlags IMAGE_FILE_REMOVABLE_RUN_FROM_SWAP}
воткнуть + обработку записи на флешку
хотя, конечно, дело тут хозяйское )
можете и просто софт покрэшить
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40134485
GunSmoker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Оффтопик
makhaon
что бы потом эврикавскими логами ящик не заваливало

Expected exceptions
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40134670
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GunSmoker,

так то пофильтровать не проблема ) можно и просто отключить. но хочется ж что бы не падало.
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40134694
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
makhaon
northener,

так то всяко бывает. мы тоже распространяем часть софта на флешках

Не понял. Это что? Защита от нелицензионного использования софта???
Если так, то это бред неграмотного троешника.
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40134707
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
всего не читал.

вот это почему то всегда работает как портатив(каталог с Арр, данными и настройками. можно перенести куда угодно и все работает)

Код: pascal
1.
  ConfIni := TMemIniFile.Create(ExtractFilePath(Application.ExeName) + 'conf.ini');



Код: pascal
1.
glPathInData:=ExtractFilePath(Application.ExeName) + 'InData\'

;

у меня.
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40134966
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
northener
makhaon
northener,

так то всяко бывает. мы тоже распространяем часть софта на флешках

Не понял. Это что? Защита от нелицензионного использования софта???
Если так, то это бред неграмотного троешника.

Нет, просто юзеры нашу одну программулину, бывает и довольно часто, пишут на флешку и с нее стартуют. И, потом, выдергивают, ну и результаты были видны в виде логов исключений.
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40135005
northener
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
makhaon
northener
пропущено...

Не понял. Это что? Защита от нелицензионного использования софта???
Если так, то это бред неграмотного троешника.

Нет, просто юзеры нашу одну программулину, бывает и довольно часто, пишут на флешку и с нее стартуют. И, потом, выдергивают, ну и результаты были видны в виде логов исключений.

Ну так эти проблемы никак, никогда и ни в каком случае не проблемы автора программы! Вам это нужно понять в первую очередь и донести до сисадминов (если таковые есть). Если сисадминов нет, значит вы должны написать инструкцию по использованию вашей программы. И в случае нарушения пользователями данной инструкции - посылать их лесом на север и вдобавок на верблюдах!
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40135045
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
northener
makhaon
пропущено...

Нет, просто юзеры нашу одну программулину, бывает и довольно часто, пишут на флешку и с нее стартуют. И, потом, выдергивают, ну и результаты были видны в виде логов исключений.

Ну так эти проблемы никак, никогда и ни в каком случае не проблемы автора программы! Вам это нужно понять в первую очередь и донести до сисадминов (если таковые есть). Если сисадминов нет, значит вы должны написать инструкцию по использованию вашей программы. И в случае нарушения пользователями данной инструкции - посылать их лесом на север и вдобавок на верблюдах!



Спаси дерево - убей бобра - (с).
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40135288
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
northener,

пользователи - это обычные, рядовые люди (пациенты), тетки, бабки. кто там что когда будет читать? надо что бы работало везде и не падало.
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40135290
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пациенты, приходящие со своей программой на флэшке... Эпическая картина.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40135297
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

а потому что программа секретная и ее нельзя никому давать
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40135358
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так то программа не обязана в момент старта загружаться в память полностью. Ее куски вполне могут подгружаться при попытке обращения к фрагменту кода. Так что если выдернуть флешку, программа в принципе может упасть в любой момент. И это не баг, это фича.
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40135741
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov, X11,

Вы что-то, господа, путаете
Пациенты уходящие со своей (нашей) программой на флешке. Вообще программа распространяется свободно на сайте, кто ее там куда запишет и принесет неизвестно. Чаще всего эту программу пишут нашей другой программой доктора пациентам вместе с данными пациента. Что там у себя пациент делает с прогой, потом хорошо бывало видно по отчетам. Впрочем, в основном, уже вопросы закрыты.
...
Рейтинг: 0 / 0
Как узнать текущий путь (диск с директорий) в котором программа считает себя?
    #40135742
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barlone,

я ж написал что сделать что бы такого не было.
...
Рейтинг: 0 / 0
37 сообщений из 37, показаны все 2 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Как узнать текущий путь (диск с директорий) в котором программа считает себя?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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