| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Как узнать директорию... |
| Автор: Bangladesh 5.5.2005, 12:39 |
| Вся фишка в том, что я шарю как добыть непосредственно имя файла, который запущен, с полным путём к нему, но мне нужен просто путь, без имени файла в конце для того, чтобы по умолчанию предлогать его для сохранения. как это сделать? |
| Автор: Alex 5.5.2005, 12:43 |
| ExtractFilePath(ParamStr(0)) |
| Автор: Poseidon 5.5.2005, 16:39 |
| ExtractFilePath(const FileName: string) предложенный Alex, возвращает путь к каталогу (включая указание диска и слэш перед именем файла), вырезанный из строки с полным именем файла FileName. ExtractFileDir(const FileName: string) возвращает путь к каталогу (включая указание диска), вырезанный из строки с полным именем файла FileName. (без последнего слеша) FileName можно передавать как Alex, т.е. ParamStr(0). А можно и так: Application.ExeName |
| Автор: Yanis 5.5.2005, 17:03 | ||
Зачем дублировать функцию? |
| Автор: Poseidon 5.5.2005, 17:57 |
| Yanis, и где дубль? Что продублировано? ExtractFilePath и ExtractFileDir или ParamStr(0) и Application.ExeName? Что? Это пары совершенно разных функций! Да, ParamStr(0) и Application.ExeName возвращают одно и то же, но это разные функции! Application.ExeName, например, ты не сможешь использовать в DLL, а ParamStr(0) можно! Так что не нужно этого, нет тут дублирования. |
| Автор: Yanis 5.5.2005, 18:31 | ||||
Они возвращают одно значение потому, что Application.ExeName совойство TApplication, значением которого является работа метода GetExeName. А GetExeName реализован вот так:
Так, что ParamStr(0) тождественно равносилен Application.ExeName. К тому же при Delphi преобразует вызов функции ParamStr(0) как непосредственный вызов в асме, т.е. call. А при использовании Application.ExeName вызов этих самых call происходит 2 раза, - но это мелочи =) |
| Автор: Poseidon 5.5.2005, 18:59 |
| "Тождественно равносилен" не означает дубль! Хоть функции приходят к одному и тому же, но это РАЗНЫЕ ФУНКЦИИ! И в некоторых ситуациях (с той же DLL к примеру) замена одной функции другой не будет равносильной. В общем, не будем засорять тему, если хочешь поспорить, пиши в РМ |
| Автор: Bangladesh 6.5.2005, 12:19 |
| всем спасибо, вы мне помогли =) |