| 
| 
 | Вопрос # 1 566/ вопрос открыт / | 
 |  Приветствую, уважаемые эксперты!У меня такой вопрос. Необходимо написать службу windows. Первым делом необходимо считать инф-цию из ini файла. Сам файл расположен в директории службы, а не windows. Проблема в том, что служба не реагирует на функцию GetDir. Но если указать полный путь так:
 if fileExists('C:services\config.ini') then, то все работает.
 подскажите, как получить путь к файлу ini, расположенному не в windows.
 Приложение:Переключить в обычный режим  GetDir(0,sPath);  S:=(sPath);   if fileExists(S + 'config.ini') then   MessageBeep(10)  else   MessageBeep(27);
|  |   Вопрос задал: 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
 |  
 Мини-форум вопросаМини-форум пуст. Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |