Всем доброго времени суток. У меня имеется следующая проблема: надо написать прогу под консоль Винды на 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++ код работает?