Всем доброго времени суток. У меня имеется следующая проблема: надо написать прогу под консоль Винды на Delphi с выводом русских букв.
Решил попробовать сделать через WinAPI так же, как это делается на C++, т.е.
#include <conio.h>
#include <iostream>
#include <windows.h>
using namespace std;
typedef BOOL (WINAPI *SETCONSOLEFONT)(HANDLE, DWORD);
 SETCONSOLEFONT SetConsoleFont;
int main{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
 
HMODULE hmod = GetModuleHandleA("KERNEL32.DLL");
SetConsoleFont =(SETCONSOLEFONT) GetProcAddress(hmod, "SetConsoleFont");
if (!SetConsoleFont) {cout<<"error\n" ; exit(1);}
SetConsoleFont(GetStdHandle(STD_OUTPUT_HANDLE),1);
cout<<"Test test"<<endl;
getch();
return 0;
}
и получил следующий код:
type
  funcdll = function (handle:THandle; NumFont:DWORD):LongBool;
var
  dllHandle:THandle;
  SetConsoleFont:funcdll;
  b:boolean;
begin
  SetConsoleCP(1251);
  SetConsoleOutputCP(1251);
  dllhandle:=GetModuleHandle('KERNEL32.DLL');
  @SetConsoleFont:=GetProcAddress(dllhandle,'SetConsoleFont');
  b:=SetConsoleFont(GetStdHandle(STD_OUTPUT_HANDLE),1);
  if(b) then writeln('УРА') else writeln(GetLastError);
  readln;
end.
В итоге: GetLastError возвращает 6, т.е. неверный дескриптор.
В чем мной была допушена ошибка, если на C++ код работает?