Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> В TFileStream система подсовывает путь к системной, папке 
:(
    Опции темы
danilsl
Дата 26.6.2007, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 15.3.2006

Репутация: нет
Всего: нет



Привет всем.
Пишу системный сервис. При попытке открыть файл настроек сервер падает, ничего не сообщив, кроме того что "некоторые службы автоматически завершают работу, если им нечего делать". При этом в журнале приложений фиксируется такая ошибка
Код

Не найдено описание для события с кодом ( 0 ) в источнике ( CDSrv ). Возможно, на локальном компьютере нет нужных данных в реестре или файлов DLL сообщений для отображения сообщений удаленного компьютера. Попробуйте использовать ключ /AUXSOURCE= для получения этого описания, - дополнительные сведения об этом содержатся в справке. В записи события содержится следующая информация: Service failed on start: Cannot open file "C:\WINDOWS\system32\"D:\Users\Danil\Borland Studio Projects\ClubDaemon\Server\etc\admins.txt". Синтаксическая ошибка в имени файла, имени папки или метке тома.

То есть получается, что система подсовывает к началу моего пути "C:\WINDOWS\system32\". Как с этим бороться?
Ошибка происходит в строке
Код

f:=TFileStream.Create(ExtractFilePath(CmdLine)+'etc\admins.txt', fmOpenRead);

PM MAIL   Вверх
Sunvas
Дата 26.6.2007, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



danilsl, думаю, просто у тебя в CmdLine ничего нет, вот система и ищет файлы, которые указаны в перменных средах.


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
danilsl
Дата 26.6.2007, 15:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 15.3.2006

Репутация: нет
Всего: нет



Система говорит, что не найден файл "C:\WINDOWS\system32\"D:\Users\Danil\Borland Studio Projects\ClubDaemon\Server\etc\admins.txt". А путь "D:\Users\Danil\Borland Studio Projects\ClubDaemon\Server\" выдаёт какраз функция ExtractFilePath(CmdLine). Соответственно в CmdLine находится "D:\Users\Danil\Borland Studio Projects\ClubDaemon\Server\CDServer.exe".
Я посмотрел, как реализован TFileStream в Classes.pas. Там нет проверок на тип приложения. Этот класс не дописывает никаких путей. По-моему системную папку приписывает виндовское API. Вот только зачем? В конце концов я задаю абсолютный путь. Кстати, если бы в CmdLine ничего не было, отсчёт каталогов пошёл бы от текущего каталога, который мне кстати и нужен.
PM MAIL   Вверх
danilsl
Дата 26.6.2007, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 15.3.2006

Репутация: нет
Всего: нет



Ни у кого никаких мыслей?
PM MAIL   Вверх
pseud
Дата 26.6.2007, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Экспёрт Тыдыщ
***


Профиль
Группа: Завсегдатай
Сообщений: 1175
Регистрация: 18.5.2007
Где: Минск, Беларусь

Репутация: 10
Всего: 40



у меня
Код

f:=TFileStream.Create(ExtractFilePath(Application.ExeName)+'etc\admins.txt', fmOpenRead);


проходит без ошибок

думаю у тебя в CmdLine что-то не то


--------------------
Испытание чужого терпения можно считать успешным, если оно лопнуло...
PM MAIL   Вверх
Sunvas
Дата 26.6.2007, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



danilsl, возьми путь в кавычки и отпишись.


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
danilsl
Дата 26.6.2007, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 15.3.2006

Репутация: нет
Всего: нет



Цитата(pseud @ 26.6.2007,  17:16)
у меня
Код

f:=TFileStream.Create(ExtractFilePath(Application.ExeName)+'etc\admins.txt', fmOpenRead);


проходит без ошибок

думаю у тебя в CmdLine что-то не то

Ну если писать VCL Forms Application, то и у меня всё нормально проходит. А я пишу Service Application. Там даже нету переменной Application.ExeName
PM MAIL   Вверх
bems
Дата 26.6.2007, 19:16 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

Репутация: 31
Всего: 88



Цитата(danilsl @  26.6.2007,  18:57 Найти цитируемый пост)
Там даже нету переменной Application.ExeName 

ну зато есть ParamStr(0)


--------------------
Обижено школьников: 8
PM MAIL   Вверх
lukas
Дата 26.6.2007, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 771
Регистрация: 23.2.2007

Репутация: 3
Всего: 15



CmdLine - функцию в студию...  smile  возможно как раз таки в ней и ошибка...


--------------------
http://code.google.com/p/orionphp/ - opensource скриптовой язык Orion (аналог PHP) для freepascal/delphi.
PM MAIL WWW   Вверх
danilsl
Дата 27.6.2007, 10:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 15.3.2006

Репутация: нет
Всего: нет



Блин, действительно, CmdLine. Она путь в кавычках возвращает, со всеми вытекающими. А про ParamStr(0) я чёт не подумал. Всем спасибо
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0506 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.