Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2011, 18:08   #1
celovec
Форумчанин
 
Регистрация: 15.06.2007
Сообщений: 182
По умолчанию Как правильно указывать путь до файла

В одной папке с программой лежит файл language.ini который я подгружаю таким образом:
Код:
  IniLang:=TIniFile.Create('./language.ini');
Как выяснилось такой способ не совсем хорош, я вижу в среднем у каждого двадцатого проблемы с подгрузкой этого файла. Конкретно из за чего это происходит я еще не понял. Видимо некоторые как-то не так запускают программу.
Возможно вы сможете разяснить почему так происходит, и как от этого избавится.
celovec вне форума Ответить с цитированием
Старый 10.11.2011, 18:29   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

потому что путь относительный, относительно рабочей директории(см например в свойствах ярлыков)

пример, exe лежит в C:\Folder
запускаем с рабочей директорией(а если диалоги(по умолчанию, не настраивая почти(ибо там есть параметр чтоб не мешало)) ставите, она тоже изменится может)
C:\Folder
итог:
C:\Folder\File
а если рабочая папка C:\Folder2
то итог:
C:\Folder2\File

решается использованием абсолютных путей(exe знает где он находится)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 10.11.2011, 18:38   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Код:
IniLang:=TIniFile.Create(ExtractFilePath(Application.ExeName) + 'language.ini');
И будет вам счастье.
Shouldercannon вне форума Ответить с цитированием
Старый 10.11.2011, 20:11   #4
celovec
Форумчанин
 
Регистрация: 15.06.2007
Сообщений: 182
По умолчанию

Появляется ошибка, возможно нужно что-то в uses добавить?
Код:
[Error] Unit1.pas(1376): Object or class type required
celovec вне форума Ответить с цитированием
Старый 10.11.2011, 21:49   #5
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Выложите сюда часть кода, на которую указывает эта ошибка.
Shouldercannon вне форума Ответить с цитированием
Старый 10.11.2011, 23:15   #6
celovec
Форумчанин
 
Регистрация: 15.06.2007
Сообщений: 182
По умолчанию

Она просто указывает на:
Код:
IniLang:=TIniFile.Create(ExtractFilePath(Application.ExeName) + 'language.ini');
Вычитав в интернете, воспользовался таким вариантов, сейчас все работает:
Код:
IniLang:=TIniFile.Create(ExtractFilePath(Form.Application.ExeName) + 'language.ini');
celovec вне форума Ответить с цитированием
Старый 11.11.2011, 07:31   #7
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

См. http://www.gunsmoker.ru/2011/09/blog-post_11.html

Практика/функции - в конце статьи.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi как указывать проценты Ekzamenator Помощь студентам 1 20.05.2011 19:31
Как сохранить путь файла? Swatch Microsoft Office Access 2 21.03.2011 15:38
Как прописать путь к сохранению файла misher Общие вопросы Delphi 1 28.11.2010 13:06
Как узнать путь запущенного exe файла (С# WPF) Яр|/||< (^_^) WPF, UWP, WinRT, XAML 3 04.09.2010 16:37
Как найти путь файла в Excel 2007 Алена-2009 Microsoft Office Excel 2 30.06.2010 13:29