Segunda versão do Houaiss2Babylon

Data: 2008-07-14
Categorias: Projetos

Depois de vários comentários de pessoas tendo problemas em converter seus dicionários Houaiss para o formato Babylon, resolvi criar vergonha na cara e dar uma pequena melhora na versão beta do conversor.

Agora a maioria dos erros que houver será descrita por uma mensagem no seguinte formato:

houaiss2babylonerror.PNG

O primeiro erro acima ocorre principalmente se não houver algum Houaiss instalado que o programa possa detectar. Resolva este problema fazendo uma busca no Buscapé.

Abaixo segue a função criada para exibir essas mensagens:

void MessageError(DWORD err, PCSTR msg, ...)
{
	CHAR errBuffer[100];
	CHAR msgBuffer[ERR_STR_BUF_SIZE];
	va_list vaList;
 
	va_start(vaList, msg);
	vsprintf(msgBuffer, msg, vaList);
	va_end(vaList);
 
	sprintf(errBuffer, " Erro de sistema número %d.", (int) err);
	strcat(msgBuffer, errBuffer);
 
	MessageBox(NULL, msgBuffer, STR_PROJECT_NAME, MB_OK | MB_ICONERROR);
}
 

Um pouco sobre argumentos variáveis

Se você notou, a função acima pode receber um número de argumentos variáveis para formatar a string da mensagem principal do erro, além de exibir seu código. Essa mágica pode ser feita usando-se o cabeçalho padrão "stdarg.h". Através dele temos acesso ao tipo va_list, que representa uma lista de argumentos variáveis.

Pela convenção de chamada da linguagem C (e C++), quem desmonta a pilha é o chamador. Sendo assim, a função chamada não precisa conhecer o número de argumentos com que foi chamado.

A função de formatação de string é uma variante do conhecidíssimo printf, na versão que recebe um tipo va_list. Muito útil para formatação de logs.

Atualizado

A versão beta do Houaiss2Babylon está para sair. Não estarei mais atualizando o saite do projeto no LaunchPad. Aguardem por mais novidades no próprio blogue.

9 respostas para “Segunda versão do Houaiss2Babylon”

  1. Fabricio Morrone Diz:

    Oi Caloni
    Agora consegui usar!! Mas não gerou o arquivo Houaiss.txt. Percebi outra coisa também: na pasta dicionario não tenho os arquivos deah049.dhx até o deah059.dhx. Já desintalei o dicionario e instalei de volta, mas esses arquivos não apareceram.
    Obrigado

  2. Daniel Quadros Diz:

    Caloni,

    Duas sugestões de aperfeiçoamentos: (a) usar a temível FormatMessage para decodificar o código de erro do Windows (b) gravar em um log o andamento da conversão e os erros encontrados.

    Obs.: gostei do 'saite' mas acho que a tradição é usar 'sítio'
    Obs/2: pela segunda vez perdi um comentário que estava montando, o seu blog não gosta qdo abre mais de uma página simultaneamente!

    []
    Daniel

  3. Wanderley Caloni Diz:

    Olá, Fabricio.

    Esses arquivos, se não me engano, não existe, mesmo. Erro meu não verificar o código de erro. Esses arquivos irão sempre dar erro por não existirem. O que eu não entendo é como não foi gerado o txt.

    Vou seguir o conselho do DQ e na próxima versão gerar um log, daí fica mais fácil acompanhar o que está dando de errado.

    Aguarde =)

    []s

  4. Wanderley Caloni Diz:

    Olá, DQ.

    Eu bem que tentei usar o famigerado FormatMessage, mas já passavam das duas da madrugada e não consegui ler o help direito.

    Obs.: eu usava sítio e mudei de opinião por achar em saite a aproximação fonética que precisava; afinal, na lingua falada ninguém usa sítio (apesar de ainda gostar de ambos).
    Obs. 2: calma, um problema de cada vez =). Você está usando IE? Só testo meu saite com Firefox =/

    []s

  5. Daniel Quadros Diz:

    Caloni,

    Fico feliz em saber que não sou só eu que acha o FormatMessage enrolado!

    Sobre o problema no saite, ocorre com o Firefox quando abro uma segunda página em outra aba. O anti-spam gera uma outra soma e quando dou o submite na primeira página ele reclama que eu não sei aritmética. Por exemplo,a conta era 2+8, abri uma nova aba com o link 'vários comentários' no inicio do post. Na nova aba, a conta é 9+6. Se volto para a primeira e respondo 10 dá erro. Se respondo à conta da nova aba, funciona.

    []s

  6. Wanderley Caloni Diz:

    DQ,

    Brilhante! Não sei como eu acharia esse bug se não fossem meus leitores. Eu simplesmente não uso essa continha de mais (não sou lá essas coisas com matemática).

    Corrigido. Se você descobrir qual foi a solução (sem ver o fonte), ganha um capuchinho na Kopenhagen. Apenas, por favor, não me bata =)

    []s

  7. Renan de Araujo Diz:

    Eu peguei a fonte e compilei o arquivo aqui. Daí usei o houaiss2babylon.exe sem problemas.
    Decidi gerar pelo babylon glossary builder. Criei o projeto, e quando vou contruir o glossário, recebo várias mensagens de erro como essa:
    Value of '-18' os not valid for 'Value'. 'Value' should be between 'minimum' and 'maximum'.
    Parameter: 'Value'
    Se eu respondo continuar em todas as mensagens de erro ele volta pro início e para em 18% de novo, que é onde ele começa a dar os erros. Se eu não respondo, ele diz que funcionou... Queria saber se alguem mais teve esse erro...
    Depois de um tempo ele desiste e diz que o dicionário foi bem sucedido!
    Agora minhas particularidades são:
    Estou rodando o windows num MacBook Pro, e queria usar esse programa pra depois converter o Houaiss pra Stardict, que é um formato aberto de dicionário, para posteriormente usá-lo no Dictionary.app do Mac OS que usa o Stardict... Agora, eu criei o glossario por mim mesmo por que preciso de UTF-8 pro stardict.

  8. Wanderley Caloni Diz:

    Olá, Renan.

    Essa segunda versão do conversor, apesar de melhorada, é extremamente beta. Eu sinto muito por todos os problemas relatados até agora (nas duas versões) e apresento minhas desculpas anunciando que atualmente estou trabalhando em uma versão muito mais melhorada, que será a primeira feita para usuários.

    No momento, parabenizo-o pelo seu empenho e peço que dê uma garimpada no algoritmo que abre o dicionário Houaiss descrito no primeiro artigo da série e tente montar o dicionáio para o Startdict fazendo a conversão a partir do formato aberto.

    []s

  9. Renan de Araujo Diz:

    Bom, eu não sou programador mas estou tentando entender as coisas por aqui. Se tudo falhar, eu possivelmente vou ver os requisitos de formato pra gerar o arquivo para o dictionary.app, daí analiso o algorítmo e seu programa para gerar um novo!
    Quanto trabalho!
    aviso aqui se tudo der certo!

Deixe uma resposta