The Lazarus version is 0.9.28.2.beta (i tried with the 0.9.31 version but i uninstalled after)
Then code for createfile is (show CreateFile Error):
var
hComm : THandle;
Cadena,
CommPort : String;
lrc :LongWord;
Seguridad : TSecurityAttributes;
{$IFDEF Win32}
SAnsi:AnsiString;
Port:LPCSTR;
{$ENDIF}
{$IFDEF WinCE}
SWide:WideString;
Port:LPCWSTR;
{$ENDIF}
begin
CommPort := 'COM'+IntToStr(SpinEdit1.Value);
{$IFDEF Win32}
SAnsi:=CommPort;
Port:=PChar(SAnsi);
hComm := CreateFile( PChar(Port), GENERIC_WRITE, 0, nil{LPA}, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
{$ENDIF}
{$IFDEF WinCE}
SWide:=CommPort;
Port:=PWideChar(SWide);
hComm := CreateFile( PWideChar(Port), GENERIC_WRITE, 0, nil{LPA}, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0);
{$ENDIF}
if (hComm = INVALID_HANDLE_VALUE) then begin
ShowMessage('CreateFile Error!');
exit;
end;
Cadena := 'Hola';
WriteFile( hComm,Cadena,Length(Cadena), lrc, nil);
CloseHandle(hComm);