![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
WriteConsoleInput [D7, WinXP]
Logo © (2005-05-31 08:47:00)Использую WriteConsoleInput.
Но почему то передается не буква "n", а буква "N".
И еще какой-то пробел после нее. Вместо Энтера знак равно.
Что может быть не так?
Еще не могу по русски писать в консоль.
Digitman (2005-05-31 11:07:00) [21]
> Logo (31.05.05 10:28) [4]
> Хотим передать: s:='123абв';
> почему то передается не буква "n", а буква "N".
и где здесь "буква "n" ?
> Консоль получает: 'nm,= '
скорей всего ты неверно передаешь данные строки на вход WriteConsoleInput , т.е. неверно формируешь INPUT_RECORD
> alpet © (31.05.05 10:50) [5]
> Кто ж строки напрямую передает CharToOem
все он правильно передает в CharToOem, не выдумывай
alpet (2005-05-31 10:50:00) [22]Кто ж строки напрямую передает CharToOem.
function ChToOem (const s: string): string;
var p: array [0..255] of char;
begin
CharToOemBuff (PChar (s), p, Length (s) + 1); // + \0
result := p;
end;
Logo (2005-05-31 10:28:00) [23]Хотим передать: s:='123абв';
потом CharToOemBuff(@S[1],@S[1],Length(S));
Передаем:'123 Ўў' (попадает в memo1)
Консоль получает: 'nm,= '
где копать?
Digitman (2005-05-31 09:16:00) [24]
> не помогает
приведи полное конкретное содержимое s ДО и ПОСЛЕ CharToOemBuff
Logo (2005-05-31 09:07:00) [25]я это читал сегодня в доках :)
только юзаю CharToOemBuff(@S[1],@S[1],Length(S));
чтобы передать ОЕМ строку.
Но не помогает. Видимо придется таки SetConsoleCP использовать.
Digitman (2005-05-31 09:03:00) [26]
> Еще не могу по русски писать в консоль
Windows NT: This function uses either Unicode characters or 8-bit characters from the console's current codepage. The console's codepage defaults initially to the system's OEM codepage. To change the console's codepage, use the SetConsoleCP or SetConsoleOutputCP functions, or use the chcp or mode con cp select= commands.