Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Русскоязычный путь к файлу выдаёт ошибку:(


Автор: Palladin 8.8.2006, 21:44
Собственно не ошибку, а глюкsmile Моя программа предназначена для одной MMORPG, а конкретнее для эмулятора игрового сервера, вообщем эмулятор часто виснет или вырубается, для этого и существует эта программа, она смотрит зависло ли приложение, или отрубилось, и если одно из этих событий верно, то программа запускает эмулятор игрового сервера

Дело в том что если путь задан с использованием букв русского алфавита, то файл не запускается, это и понятно т.к. в программе допустим такой путь:

E:\эмулятор игрового сервера\emul.exe

представляется в примерно такой форме:

E:\~*?&%^&*$#@\emul.exe

соответсвенно программа не находит по такому пути файл emul.exe и не запускает егоsmile

Если же путь прописан только английскими буквами, то всё нормально!!! smile 

Отсюда вопрос: Как от этого глюка избавится

Возможно это потому что я начал использовать .ini файл для настроек программы smile 

Вообщем если ктонить сталкивался с этим делом плизз помогите smile  smile 

P.S. Есть ещё один вопрос: в программе создаются "логи" работы программы по дате, файлы логов имеют примерно такое имя "Лог за 08.08.2006", но мне желательно чтоб "лог" был с точность до секунды, т.е. хочу чтоб имя "лога" было скажем таким "Лог за 08.08.2006 21:41", пробывал это сделать с помощью процедуры датетустр но файл с таким именем не может быть создан, ошибку программа даёт smile  smile 

Автор: Romikgy 8.8.2006, 22:05
мож те OEM поможет?

Автор: Palladin 8.8.2006, 22:06
Цитата(Romikgy @  8.8.2006,  22:05 Найти цитируемый пост)
мож те OEM поможет?


А что это?  smile 

Автор: Fedia 8.8.2006, 23:04
Цитата(RooR @  8.8.2006,  21:44 Найти цитируемый пост)
P.S. Есть ещё один вопрос: в программе создаются "логи" работы программы по дате, файлы логов имеют примерно такое имя "Лог за 08.08.2006", но мне желательно чтоб "лог" был с точность до секунды, т.е. хочу чтоб имя "лога" было скажем таким "Лог за 08.08.2006 21:41", пробывал это сделать с помощью процедуры

Попробуй так:
SaveToFile('Лог за ' + FormatDateTime('dd.mm.yyyy hhnnss', date));
"Лог за 08.08.2006 21:41" - такое имя файла просто не допустимо в ОС Windows.

Добавлено @ 23:07 
RooR, а путь попробуй преобразовывать при помощи функции:
Код

function DosToWin(s: string): string;
var Source,Dest:array[0..255] of Char;
begin
 SetLength(Result,Length(S));
 if Length(Result)>0 then OemToAnsi(PChar(S),PChar(Result));
end;

Автор: imageman 11.8.2006, 22:45
Цитата

"Лог за 08.08.2006 21:41" - такое имя файла просто не допустимо в ОС Windows.

а кто тебе мешает при помощи StringReplace заменить ":"  на "."??!

(двоеточие зарезервировано под определение диска)

Автор: Fedia 12.8.2006, 00:58
Цитата(imageman @  11.8.2006,  22:45 Найти цитируемый пост)
а кто тебе мешает при помощи StringReplace заменить ":"  на "."??!

Это лишнее. Если нужны точки, то проще так:
Код

SaveToFile('Лог за ' + FormatDateTime('dd.mm.yyyy hh.nn.ss', date));


Автор: Palladin 12.8.2006, 01:07
2Федя именно так я и сделал(как ты отпостил) smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)