[fpc-pascal]Windows Console API

Fernando Lozano fsl at centroin.com.br
Fri Mar 15 16:24:10 CET 2002


Hi there,

Under Windows 98SE the following program works just fine:


program win32test;

uses windows;

var
    stdout : long;
    msg : AnsiString;
    aux : ulong;
    
begin
    stdout := GetStdHandle (STD_OUTPUT_HANDLE);
    msg := 'Win32 Console API';
    WriteConsole (stdout, PChar (msg), length (msg), aux, nil);
end.


But this one prints garbage on the screen:


program win32test;

uses windows;

var
    stdout : long;
    msg : AnsiString;
    aux : ulong;
    
begin
    stdout := GetStdHandle (STD_OUTPUT_HANDLE);
    msg := 'Win32 Console API';
    WriteFile (stdout, msg2, length (msg), aux, nil);
end.


I guess this happens because my strings are not Unicode.

The problem is, if my program uses WriteConsole instead of WriteFile, its standard output can't redirected. And I guess if I use WriteFile or ReadFile on a disk file I'll write or read garbage.

My question is: Which is the proper way to deal with file input and output and with Unicode strings from a Free Pascal program using the Win32 API?


[]s, Fernando Lozano




More information about the fpc-pascal mailing list