Я прочитал входной буфер из консольного приложения (CMD), как это:OEMToCharW возвращает неправильные символы
var
pBuffer : array [0..2400] of Widechar;
dBuffer : array [0..2400] of WideChar;
CReadBuffer : Cardinal;
BytesRead : Cardinal;
begin
// ....
ReadFile(BuffHandle, pBuffer[0], CReadBuffer, BytesRead, nil);
pBuffer[BytesRead] := #0; // Finish/End the WideString
OemToCharW(pBuffer, dBuffer);
MessageBoxW (0, dBuffer, '', 0);
// ....
end;
По какой-то причине я получаю странные символы ... CMD должен иметь ОЙ кодировки. Раньше я использовал OEMtoCharA, и он работал нормально. Что я делаю неправильно?
Спасибо за помощь.
EDIT: Я использую Delphi7
хорошо мысль! Единственная проблема заключается в том, что oemtocharW требует широкого массива в первом параметре. :/ –
Смешно, 'OemToCharW' объявляется как функция OemToCharW (lpszSrc: PWideChar; lpszDst: PWideChar): BOOL; stdcall; 'в D2007, но как' function OemToCharW (lpszSrc: PAnsiChar; lpszDst: PWideChar): BOOL; stdcall; 'в XE2. Поэтому D2007 кажется неправильным. –
Я забыл сказать, что я использую Delphi7. Но как это возможно. WindowsAPI должен быть одним и тем же ... Я пробовал его с UTF-8, но не повезло. –