Как прочитать имя файла с иероглифами?
От: Jone  
Дата: 29.06.05 08:13
Оценка:
Здравствуйте,
есть файл в имени которого содержатся иероглифы, а мне необходимо этот файл открыть и соответственно прочитать. Обычный дельфийский ТОпенДиалог прекрасно отображает иероглифы, но вот свойтво FileName уже содежит только вопросики "??????.gif". Подскажите пожалёста как обмануть эту проблему.
Re: Как прочитать имя файла с иероглифами?
От: Oleg A. Bachin Украина  
Дата: 29.06.05 08:27
Оценка:
Здравствуйте, Jone, Вы писали:

J>Здравствуйте,

J>есть файл в имени которого содержатся иероглифы, а мне необходимо этот файл открыть и соответственно прочитать. Обычный дельфийский ТОпенДиалог прекрасно отображает иероглифы, но вот свойтво FileName уже содежит только вопросики "??????.gif". Подскажите пожалёста как обмануть эту проблему.

rtfm unicode
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Best regards,
Oleg A. Bachin
Re[2]: Как прочитать имя файла с иероглифами?
От: Jone  
Дата: 29.06.05 08:37
Оценка:
Здравствуйте, Oleg A. Bachin, Вы писали:

OAB>rtfm unicode


хороший совет, но по существу, хотелось бы совет более конкретный — требуется не только имя файла получить, его же ещё открыть и прочитать через TFileStream хочется, а тот, зараза, в какчестве имени файла только TString кушать хочет, так что вопрос всё равно открыт. (спасибо за ссылку на rtfm unicode!)
Re[3]: Как прочитать имя файла с иероглифами?
От: Oleg A. Bachin Украина  
Дата: 29.06.05 08:46
Оценка: 9 (1)
Здравствуйте, 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>>
Best regards,
Oleg A. Bachin
Re: Как прочитать имя файла с иероглифами?
От: Slava Antonov Россия http://deadbeef.narod.ru
Дата: 29.06.05 08:51
Оценка:
Hello Jone, you wrote:

> есть файл в имени которого содержатся иероглифы, а мне необходимо этот файл открыть и соответственно прочитать. Обычный дельфийский ТОпенДиалог прекрасно отображает иероглифы, но вот свойтво FileName уже содежит только вопросики "??????.gif". Подскажите пожалёста как обмануть эту проблему.


Вам нужно использовать WideString и юникодную версию GetOpenFileName, т.е. GetOpenFileNameW.

--
Всего хорошего, Слава
Posted via RSDN NNTP Server 1.9
Re[4]: Как прочитать имя файла с иероглифами?
От: Jone  
Дата: 29.06.05 09:43
Оценка:
Oleg A. Bachin
Спасибо за помощь!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.