Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

DNK
I. DNK
Баллы: 5

Подробнее »



Вопрос # 1 566

/ вопрос открыт /

Приветствую, уважаемые эксперты!
У меня такой вопрос. Необходимо написать службу windows. Первым делом необходимо считать инф-цию из ini файла. Сам файл расположен в директории службы, а не windows. Проблема в том, что служба не реагирует на функцию GetDir. Но если указать полный путь так:
if fileExists('C:services\config.ini') then, то все работает.
подскажите, как получить путь к файлу ini, расположенному не в windows.

Приложение:
  1. GetDir(0,sPath);
  2. S:=(sPath);
  3.  
  4. if fileExists(S + 'config.ini') then
  5. MessageBeep(10)
  6. else
  7. MessageBeep(27);


John Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: John (статус: Посетитель)
Вопрос отправлен: 7 мая 2008, 06:52
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: min@y™

Функция GetDir возвращает ТЕКУЩУЮ директорию, а не директорию приложения, которое эту функцию вызывает. Причём в этой функции нет проверки на ошибку в параметрах. У тебя там указан 1-й параметр = 0, а это текущий драйв (раздел).
Вот пример из хэлпа:

 var 
   s : string;
 begin
   GetDir(0,s); { 0 = Current drive }
   MessageDlg('Current drive and directory: ' + s, mtInformation, [mbOk] , 0);
 end;

Однако, есть способ проще: использовать функцию ParamStr().
var
  Ini: TIniFile
  FileName: string;
begin
  FileName:= ParamStr(0) + '\config.ini';
  Ini:= TIniFile.Create(FileName);
  try 
    // Чтение/запись параметров 
  finally
    Ini.Free();
  end;
end;

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 7 мая 2008, 08:25
Оценка за ответ: 5


Мини-форум вопроса

Мини-форум пуст.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 19 августа 2017, 21:49
Выполнено за 0.04 сек.
Рейтинг@Mail.ru