Que es Aspell
GNU Aspell, generalmente llamado simplemente Aspell es un corrector ortográfico de software libre diseñado para reemplazar Ispell. Es el corrector ortográfico estándar para el sistema de software GNU. También compila para otros sistemas operativos tipo Unix y Windows. El programa principal está licenciado bajo la GNU Lesser General Public License (GNU LGPL), la documentación bajo la GNU Free Documentation License (GNU FDL). Diccionarios para que estén disponibles para alrededor de 70 idiomas. El mantenedor principal es Kevin Atkinson. (Fuente Wikipedia)
Donde puedo descargar Aspell para windows
En los siguientes links se puede descargar el paquete para Windows con sus respectivos diccionarios en varios idiomasImplementacion de Aspell en Visual FoxPro
Después de mucho navegar e investigar por toda la web fue imposible encontrar una implementación de Aspell en Visual FoxPro, así que realice la tarea de implementarlo, para esto fue necesario el análisis de distintas implementaciones es lenguajes como C++, Pascal, Delphi entre otros.
Debemos tener claro que estamos usando una librería dinámica externa propia de Aspell compilada para Windows, así que como prerrequisitos tenemos:
- Descargue e instale Aspell para windows desde el siguiente link http://ftp.gnu.org/gnu/aspell/w32/Aspell-0-50-3-3-Setup.exe
- Descargue e instale el diccionario para Español (Usado en este ejemplo), recuerde que puede usar cualquiera de los diccionarios disponibles, el link es http://ftp.gnu.org/gnu/aspell/w32/Aspell-es-0.50-2-3.exe
Ejemplo basico de Aspell desde Visual FoxPro
*!* Ubicación de la DLL #DEFINE ASPELL_DLL "C:\PROGRAM FILES\ASPELL\BIN\ASPELL-15.DLL" #DEFINE ASPELL_LANG "es" *!* Funciones de la DLL IF FILE(ASPELL_DLL)==.t. DECLARE INTEGER new_aspell_config IN (ASPELL_DLL) DECLARE INTEGER aspell_config_replace IN (ASPELL_DLL) INTEGER, STRING, STRING DECLARE INTEGER new_aspell_speller IN (ASPELL_DLL) INTEGER DECLARE INTEGER aspell_error_number IN (ASPELL_DLL) INTEGER DECLARE INTEGER to_aspell_speller IN (ASPELL_DLL) INTEGER DECLARE INTEGER aspell_speller_check IN (ASPELL_DLL) INTEGER, STRING, INTEGER DECLARE INTEGER aspell_speller_suggest IN (ASPELL_DLL) INTEGER, STRING, INTEGER DECLARE INTEGER aspell_word_list_elements IN (ASPELL_DLL) INTEGER DECLARE INTEGER delete_aspell_string_manag IN (ASPELL_DLL) INTEGER DECLARE STRING aspell_string_enumeration_next IN (ASPELL_DLL) INTEGER DECLARE STRING aspell_error_message IN (ASPELL_DLL) INTEGER ELSE =MESSAGEBOX("La libreria de Aspell no fue encontrada, descarguela e instalela desde:"+CHR(13)+; "http://aspell.net"+CHR(13)+; "http://aspell.net/win32/dicts",0+64+256,"Libreria no instalada") RETURN .f. ENDIF *!* Variables LOCAL lnSpellConfig, ; lnPossibleErr, ; lnSpellChecker, ; lcPalabra, ; lnPalabra, ; lcSuggestions, ; lnElements, ; lcSugerencias, ; llSalir *!* Iniciando instancia lnSpellConfig = new_aspell_config() *!* Cargando diccionario ESPAÑOL (es) IF aspell_config_replace(lnSpellConfig, "lang", ASPELL_LANG)==1 lnPossibleErr = new_aspell_speller(lnSpellConfig) lnSpellChecker = 0 *!* Comprobando Inicio IF aspell_error_number(lnPossibleErr) != 0 =MESSAGEBOX(aspell_error_message(lnPossibleErr),0+16+256+4096,"Error Aspell") RETURN .f. ELSE lnSpellChecker = to_aspell_speller(lnPossibleErr) ENDIF *!* Palabra a comprobar lcFrase=INPUTBOX("Ingrese la frase a comprobrar","Frase","",0,"","") *!* Recorriendo palabras FOR lnItem=1 TO GETWORDCOUNT(lcFrase,' ') lcPalabra=GETWORDNUM(lcFrase,lnItem,' ') lnPalabra=LEN(lcPalabra) IF aspell_speller_check(lnSpellChecker,lcPalabra,lnPalabra)==0 lcSuggestions =aspell_speller_suggest(lnSpellChecker,lcPalabra,lnPalabra) lnElements = aspell_word_list_elements(lcSuggestions) lcSugerencias='' llSalir=.f. DO WHILE llSalir==.f. TRY lcSugerencias=lcSugerencias+aspell_string_enumeration_next(lnElements)+CHR(13) CATCH TO loError llSalir=.t. ENDTRY ENDDO =MESSAGEBOX("Incorrecta, sugerencias para "+lcPalabra+CHR(13)+lcSugerencias,0+512+4096,"Incorrectar") ELSE =MESSAGEBOX("Correcta, "+lcPalabra,0+512+4096,"Correctar") ENDIF ENDFOR ELSE =MESSAGEBOX("Imposible iniciar la configuracion de Aspell",0+16+256+4096,"Fallo configuración") ENDIF
Jose Guillermo Ortiz Hernandez