Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

Получение директории программы   Найти похожие ветки 

 
3asys ©   (2012-07-29 00:16) [0]

Добрый день,
есть Программа 1. В ней используется Функция получения каталога программы.Программа 1 запускается из Программы 2 посредством скрипта. При этом Функция возвращает директорию Программы 2.
В качестве Функции использовалось GetDir, ExtractFilePath(Paramstr(0) и т.п. - с одинаковым результатом.
Хотелось бы получить директорию Программы 1. Как это можно сделать?


 
Smile   (2012-07-29 00:22) [1]

Например, программа 1 может передать GetCurrentDir 2-й программе в качестве параметра.


 
3asys ©   (2012-07-29 00:33) [2]

Нет, Программе 2 ничего передавать не нужно. Нужно, чтобы Программа 2 просто запустила Программу 1 и забыла о ней, а Программа 1 в процессе своей работы получила путь к своей директории. Но запускаемая в Программе 1 функция (в том числе и GetCurrentDir) возвращает Программе 1 путь не к ее директории, а к директории Программы 2
Вот что с этим делать?


 
AV ©   (2012-07-29 00:46) [3]

Вы просто Андерсен...
А ничего не напутали?


 
3asys ©   (2012-07-29 01:19) [4]

к сожалению, похоже, что не напутал.
Функция определения директории программы используется для доступа к INI-файлу. Если запускаю Программу 1 руками, то все нормально, если Программа 1 запускается скриптом из Программы 2, то INI-файл не находится, а проверка показывает, что функция определения директории из Программы 1 возвращает директорию Программы 2.
Поэтому и написал на форум, - может кто сталкивался?


 
Плохиш ©   (2012-07-29 01:25) [5]


> ExtractFilePath(Paramstr(0)

Возвращает путь к текущему файлу exe. Т.ч. не надо нам здесь врать.


 
Dennis I. Komarov ©   (2012-07-29 22:56) [6]


> Плохиш ©   (29.07.12 01:25) [5]

А где же справка? :)


 
Плохиш ©   (2012-07-30 00:15) [7]


> Dennis I. Komarov ©   (29.07.12 22:56) [6]
>
>
> > Плохиш ©   (29.07.12 01:25) [5]
>
> А где же справка? :)

Ну звиняйте, нету у меня справки на таблете.


 
Кибальчиш   (2012-08-05 11:54) [8]

На а если так:

1. Программа 2 создает ini файл в директории Программы 1 и записывает в него путь к своей директории (ExtractFilePath(ParamStr(0) + "my.ini")
2. Когда Программа 1 запускается, она просто читает путь из ini, который находится в одной с ней директории (ParamStr(0) + "my.ini")

Как-то так.


 
Dennis I. Komarov ©   (2012-08-05 21:10) [9]


> Как-то так.

Как-то бред...


 
oldman ©   (2012-08-08 12:32) [10]

Если Программа2 не знает путь к Программа1, как она ее запускает?


 
Anatoly Podgoretsky ©   (2012-08-08 15:06) [11]

Путь совсем не обязательно знать. Запускать можно и без пути prog.exe


 
AV ©   (2012-08-08 15:17) [12]

ну да,
если в путях прописать
или алиас создать, если антивирус не обругает


 
Anatoly Podgoretsky ©   (2012-08-08 15:36) [13]


> если в путях прописать

Не обязательно.
cd Path
prog.exe


 
AV ©   (2012-08-08 16:26) [14]

дык, вроде Path то автору и не известен?


 
Sairex ©   (2012-08-13 16:17) [15]

Хммм. может в ExtractFilepath(Application.exename) - вроде как возвращает путь.


 
stas ©   (2012-08-13 16:26) [16]

ExtractFilePath(Paramstr(0))
Вернет путь к программе, которая в данный момент запущена, и по другому быть не может. Покажите код где она возвращает путь не правильно.


 
Anatoly Podgoretsky ©   (2012-08-13 16:31) [17]


> AV ©   (08.08.12 16:26) [14]
> дык, вроде Path то автору и не известен?

В таких случаях поступают следующим образом, поскольку это связаные программы, то их помещают в одну папку, или борятся с причинами, то есть ССЗБ.


 
sairex ©   (2012-08-13 17:11) [18]

Хммм незнаю незнаю.
У меня нормально все работает (сейчас проверил на Д2010).


 
Ega23 ©   (2012-08-13 19:21) [19]


> У меня нормально все работает (сейчас проверил на Д2010).


У приложения может не быть объекта Application. Например, у консольного приложения.
ParamStr(0) - будет и у консольного.


 
Dennis I. Komarov ©   (2012-08-13 20:17) [20]

Надо копать глубже: на кой леший кому-то знать с какого места запускается некий процесс?


 
Ega23 ©   (2012-08-13 20:51) [21]


> Надо копать глубже: на кой леший кому-то знать с какого
> места запускается некий процесс?

Ну, к примеру, я туда кладу "всякое" относительно exe


 
Dennis I. Komarov ©   (2012-08-13 20:53) [22]


> Ну, к примеру, я туда кладу "всякое" относительно exe

И какого? Лично я против, что бы юзерам каталог с exe был доступен для записи и модификации... Места больше нет?


 
ProgRAMmer Dimonych ©   (2012-08-13 21:42) [23]

> [22] Dennis I. Komarov ©   (13.08.12 20:53)
> > Ну, к примеру, я туда кладу "всякое" относительно exe
> И какого? Лично я против, что бы юзерам каталог с exe был
> доступен для записи и модификации... Места больше нет?

А юзеры против того, чтобы программа писала неизвестно куда. Особенно во всякие Application Data на системном диске: сколько ни отведи - всё мало.


 
Inovet ©   (2012-08-13 22:39) [24]

> [23] ProgRAMmer Dimonych ©   (13.08.12 21:42)
> А юзеры против того, чтобы программа писала неизвестно куда.
> Особенно во всякие Application Data на системном диске

Дать возможность выбора.


 
Dennis I. Komarov ©   (2012-08-13 22:45) [25]


> А юзеры против того, чтобы программа писала неизвестно куда.
>  Особенно во всякие Application Data на системном диске:
>  сколько ни отведи - всё мало.

А они юзеры, их никто не спрашивает... И ни кто не говорил, куда надо (только намекали), но там где exe-шник, там юзерам только читать...


 
antonn ©   (2012-08-13 23:24) [26]

с одной стороны на терминальном сервере это может быть чревато, но все же соглашусь что юзеров никто не спрашивает, не нравится поведение софта - не ставь


 
antonn ©   (2012-08-13 23:27) [27]


> с одной стороны на терминальном сервере это может быть чревато

но я, в таком случае, стараюсь выполнять установку софта в roam юзера, софт при этом пишет также в свою директорию, пусть и расходуется больше дискового пространства на сервере


 
Dennis I. Komarov ©   (2012-08-13 23:38) [28]


> с одной стороны на терминальном сервере это может быть чревато

Чем терминальный сервер при этом отличается?


 
antonn ©   (2012-08-13 23:43) [29]


> Чем терминальный сервер при этом отличается?

тем, что в отличии от многопользовательской рабочей станции на одну сессию в терминалке сразу несколько пользователей работают. Это в плане расположения программы в общем каталоге типа c:\soft\


 
antonn ©   (2012-08-13 23:48) [30]

т.е. я "за" запись в каталог с программой, если вдруг меня кто не так понял :)


 
Dennis I. Komarov ©   (2012-08-14 00:06) [31]


> тем, что в отличии от многопользовательской рабочей станции
> на одну сессию в терминалке сразу несколько пользователей
> работают.

о какой сессии идет речь? терминальный виндовый сервер делает сессию на каждое удаленное подключение...


 
antonn ©   (2012-08-14 01:18) [32]

что будет если все пользователи на терминале пользуются программой из C:\soft\, и она в процессе работы делает запись в свой каталог? вот про это я и говорю, вот недавно обсуждали похожее - http://delphimaster.net/view/15-1344432770/


 
Германн ©   (2012-08-14 01:29) [33]

Имхо проблема автора так и не понятна из-за того что у него 2 программы и при этом программа, в которой он пытается получить некий путь запускается из другой программы "посредством скрипта".


 
Германн ©   (2012-08-14 01:32) [34]


> Inovet ©   (13.08.12 22:39) [24]
>
> > [23] ProgRAMmer Dimonych ©   (13.08.12 21:42)
> > А юзеры против того, чтобы программа писала неизвестно
> куда.
> > Особенно во всякие Application Data на системном диске
>
> Дать возможность выбора.

Лично я за то, чтобы MS дала простую возможность администратору выбрать диск, на котором будут располагаться папки пользователей и личные папки программ. Но сомневаюсь, что MS на это согласится при моей жизни. :(


 
ProgRAMmer Dimonych ©   (2012-08-14 08:48) [35]

> [34] Германн ©   (14.08.12 01:32)
> > Inovet ©   (13.08.12 22:39) [24]
> > > [23] ProgRAMmer Dimonych ©   (13.08.12 21:42)
> > > А юзеры против того, чтобы программа писала неизвестно куда.
> > > Особенно во всякие Application Data на системном диске
> > Дать возможность выбора.
> Лично я за то, чтобы MS дала простую возможность администратору
> выбрать диск, на котором будут располагаться папки пользователей
> и личные папки программ. Но сомневаюсь, что MS на это согласится
> при моей жизни. :(

Для MS проще отвести для этого место на системном диске, как и программисту проще писать в каталог своей программы :)


 
Inovet ©   (2012-08-14 09:54) [36]

> [34] Германн ©   (14.08.12 01:32)

А разве это нельзя делать?


 
Андреевич   (2012-08-14 19:04) [37]


> Лично я за то, чтобы MS дала простую возможность администратору
> выбрать диск, на котором будут располагаться папки пользователей
> и личные папки программ. Но сомневаюсь, что MS на это согласится
> при моей жизни. :(

я не знаю о чем ты конкрентно говоришь, возможно речь идет о десктопах, но вот смотрю прям сейчас на терминальном сервере (2008) профиля юзеров на отдельном диске идут. Хотя, может опять какая виртуализация


 
brother ©   (2012-08-14 19:06) [38]

> на терминальном сервере (2008) профиля юзеров на отдельном
> диске идут

это же настраивается...


 
Dennis I. Komarov ©   (2012-08-14 20:13) [39]


> что будет если все пользователи на терминале пользуются
> программой из C:\soft\, и она в процессе работы делает запись
> в свой каталог?

ничего хорошего...


 
antonn ©   (2012-08-14 23:59) [40]


> brother ©   (14.08.12 19:06) [38]
>
> > на терминальном сервере (2008) профиля юзеров на отдельном
> > диске идут
>
> это же настраивается...

и я про это же говорю



Страницы: 1 2 вся ветка

Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.58 MB
Время: 0.073 c
15-1340314077
ZV
2012-06-22 01:27
2013.03.22
Компонент Async32 не работает в С++


2-1337971927
Den
2012-05-25 22:52
2013.03.22
Передать VK_LBUTTON в функцию?


15-1339121462
Unk
2012-06-08 06:11
2013.03.22
Подскажите проигрыватель видео.


2-1334343958
vegarulez
2012-04-13 23:05
2013.03.22
[Free CreateOLEObject] Как?


15-1340051402
Юрий
2012-06-19 00:30
2013.03.22
С днем рождения ! 19 июня 2012 вторник





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский