Здравствуйте, Jone, Вы писали:
J>Здравствуйте,
J>есть файл в имени которого содержатся иероглифы, а мне необходимо этот файл открыть и соответственно прочитать. Обычный дельфийский ТОпенДиалог прекрасно отображает иероглифы, но вот свойтво FileName уже содежит только вопросики "??????.gif". Подскажите пожалёста как обмануть эту проблему.
rtfm unicode
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Здравствуйте, Oleg A. Bachin, Вы писали:
OAB>rtfm unicode
хороший совет, но по существу, хотелось бы совет более конкретный — требуется не только имя файла получить, его же ещё открыть и прочитать через TFileStream хочется, а тот, зараза, в какчестве имени файла только TString кушать хочет, так что вопрос всё равно открыт. (спасибо за ссылку на rtfm unicode!)
Здравствуйте, Jone, Вы писали:
J>Здравствуйте, Oleg A. Bachin, Вы писали:
OAB>>rtfm unicode
J>хороший совет, но по существу, хотелось бы совет более конкретный — требуется не только имя файла получить, его же ещё открыть и прочитать через TFileStream хочется, а тот, зараза, в какчестве имени файла только TString кушать хочет, так что вопрос всё равно открыт. (спасибо за ссылку на rtfm unicode!)
в делфях есть так называемый THandledStream, твой TFileStream — наследник. смотрим:
constructor TFileStream.Create(const FileName: string; Mode: Word; Rights: Cardinal);
begin
if Mode = fmCreate then
begin
inherited Create(FileCreate(FileName, Rights));
if FHandle < 0 then
raise EFCreateError.CreateResFmt(@SFCreateErrorEx, [ExpandFileName(FileName), SysErrorMessage(GetLastError)]);
end
else
begin
inherited Create(FileOpen(FileName, Mode));
if FHandle < 0 then
raise EFOpenError.CreateResFmt(@SFOpenErrorEx, [ExpandFileName(FileName), SysErrorMessage(GetLastError)]);
end;
end;
думаю не проблема будет написать свой TFileStreamW, в котором использовать уникоде версии FileCreate и FileOpen.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Hello Jone, you wrote:
> есть файл в имени которого содержатся иероглифы, а мне необходимо этот файл открыть и соответственно прочитать. Обычный дельфийский ТОпенДиалог прекрасно отображает иероглифы, но вот свойтво FileName уже содежит только вопросики "??????.gif". Подскажите пожалёста как обмануть эту проблему.
Вам нужно использовать WideString и юникодную версию GetOpenFileName, т.е. GetOpenFileNameW.
--
Всего хорошего, Слава
Posted via RSDN NNTP Server 1.9
Oleg A. Bachin
Спасибо за помощь!