|
Вопрос # 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
|
Мини-форум вопроса
Мини-форум пуст.
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|