Delphi 2009 читать oem из строки без setCodePage - PullRequest
1 голос
/ 19 мая 2011
procedure p;
var 
  f:TextFile;
  oemst:OemString;///declared as   OemString = Type AnsiString(CP_OEMCP);
begin
  AssignFile(f,fileName);
  reset(f);
  read(f,oemSt);
  ShowMessage(oemst);
end;

чтобы увидеть в сообщении show oemst в правильной кодировке, нужно объявить setcodepage (oemst, 862, false);

как можно прочитать из файла oemи убедитесь, что компилятор правильно показывает его в кодировке oem?

update: Работа с Oem - это МУСТ, так как я не определяю этот старый интерфейс.Работа с файлом назначения readln является частью старого кода, и у меня скорее есть решение, использующее старые методы, так как оно требует меньше работы и ИСПЫТАНИЯ (почему мы всегда забываем о тестировании?)! [введите описание изображения здесь] [1]

Ответы [ 2 ]

1 голос
/ 19 мая 2011

SetMultiByteConversionCodePage (862); переместил вещи вперед.

1 голос
/ 19 мая 2011

В D2009 и выше вам обычно лучше , а не , используя старые методы файла Pascal, такие как assignfile, read (ln) и write (ln), так как они не поддерживают Unicode.И все посоветуют вам вместо этого использовать потоки.В этом случае вам может быть лучше использовать старый способ , потому что он не понимает Unicode.

Пока вы правильно настраиваете кодовую страницу, я думаю, что вам нужно сделать, чтобычтобы это работало на вас, задайте кодовую страницу консоли , используя SetConsoleCP.Это вызов API Windows, который объявлен в модуле Windows.

...