Olá amigos,
Só para deixar registrado, eu tenho uma Query que lê campos boolean "TINYINT(1)" de uma tabela em MySQL usando as funções:
oQuery := oServer:Query("SELECT * FROM usuarios INNER JOIN permissoes ON usuarios.perm_id = permissoes.perm_id WHERE user_ativo = 1 AND user_login='" + Login.tb_Usuario.Value + "' AND user_senha = '" + Login.tb_Senha.Value + "'")
... comandos...
oRow := oQuery:GetRow(1) // Pego a primeira e unica linha se não retornou vazio é claro
// Habilito ou desabilito o item do menu do formulário principal conforme o previlégio/permissão do usuário logado
Linha 67 do programa:
Main.mp_CTe.Enabled := oRow:FieldGet( oRow:FieldPos('perm_menu_CTe')) // A FieldPos() retorna a posição numérica da coluna (campo) para o FieldGet() que por sua vez retorna o conteúdo da coluna/campo.
... repito isso para cada menu do formulário principal
A função FieldGet() na versão IDE HMG 3.0.35 convertia o campo Tinyint valor 1 para .T. e 0 para .F., então o comando funcionava.
Ao compilar com a versão IDE HMG 3.3.0 64-bits com a compilação habilitada para gerar aplicação em 32-bits a alinha 67 da erro de execução pois a função FieldGet não retorna mais .T. ou .F. e sim o número literal 0 ou 1.
Então mudei a linha de comando para:
Main.mp_CTe.Enabled := ( oRow:FieldGet( oRow:FieldPos('perm_menu_CTe')) > 0 )
Resolvido.