Page 1 of 1

Acentuar automaticamente

PostPosted: Tue May 12, 2009 4:15 pm
by softruz
Muy buenas, estoy intentando buscar algún algoritmo que me pueda acentuar automaticamente pero creo que la mejor manera es que con la clase TWORD lo pase a word y las acentue y las recoja una vez hecho este proceso. ¿Sabeis algo que haga esto?

Un Saludo.

Re: Acentuar automaticamente

PostPosted: Tue May 12, 2009 4:40 pm
by Armando
Softrus:

Creo que el algoritmo que buscas es muy complicado aunque no imposible, lo que hago en una aplicación es apoyarme en el verificador de ortografía de WORD que aunque una chapuza me sacó del problema y no solo para acentur palabras sino para revisar toda la ortografía.

Si te interesa podemos seguir el hilo.

Saludos

Re: Acentuar automaticamente

PostPosted: Tue May 12, 2009 5:09 pm
by softruz
Si eso es lo que había pensado, si tienes algo por ahi para ir indicandome me harías un gran favor.

Un Saludo.

Re: Acentuar automaticamente

PostPosted: Tue May 12, 2009 5:42 pm
by Armando
softruz:

Ahí te va, es un código que tambien me compartieron, no recuerdo el nombre de quien me lo envió y pido disculpas por eso.

Tengo definido un Botón cuya acción es ir a la función SpellCheck() y le envío como parámetro la variable que contiene el texto que deseo revisar (oPro:DES), como puedes apreciar la función SpellCheck me devuelve el mismo texto pero ya corregido y lo recibo en la misma variable.

Code: Select all  Expand view

    REDEFINE BUTTON oOrtografia ID 903 OF oDlg CANCEL;
        ACTION (oPro:DES := SpellCheck(oPro:DES),oDlg:Update());
        MESSAGE "Revisa la ortografía de la descripción del proyecto"
 


Y esta es la función SpellCheck

Code: Select all  Expand view

/*
* --------------------------------------------------------------------------*
* --------------------------------------------------------------------------*
*/

STATIC FUNCTION SpellCheck(Texto)
LOCAL oWord,oDoc,oTexto
LOCAL cText:=Texto

oWord:=TOleAuto():New( "Word.Application" )
oWord:Visible := .F.
oWord:Documents:Add()
oDoc := oWord:Get("ActiveDocument")

oTexto := oWord:Selection()
oTexto:Text := Texto

oDoc:CheckSpelling()

cText := oTexto:Text

oDoc:Close(0)
oWord:Quit()
oTexto:=NIL
oDoc:=NIL
oWord:=NIL

IF ! EMPTY(cText) // si cancelamos en el chequeo de ortografia, nos devuelve una cadena vacia
    Texto := cText
ENDIF
RETURN(Texto)
 


Espero te sirva o al menos te de la idea de como salir del paso.

Saludos

Re: Acentuar automaticamente

PostPosted: Tue May 12, 2009 5:53 pm
by softruz
Muchas gracias lo pruebo y te comento.

Re: Acentuar automaticamente

PostPosted: Wed May 13, 2009 12:59 am
by Willi Quintana
Hola,
se me ocurre una funcion que maneje las reglas de ortografia,,, a ver,,,
x regla,, se acentuan las palabras que termian en "ion"
xpos := AT("on", cpalabra)
If xpos > 0
cpalabra := STRTRAN(cpalabra , "on","ón")
endif
..
.
es una idea

Salu2

Re: Acentuar automaticamente

PostPosted: Wed May 13, 2009 8:29 am
by softruz
Me podrían decir ¿como puedo conseguir que automaticamente coja la primera coincidencia y la suplante por la palabra mal escrita? y así tener una corrección automatica.

Un Saludo.

Re: Acentuar automaticamente

PostPosted: Wed May 13, 2009 9:11 pm
by wmormar
softruz wrote:Me podrían decir ¿como puedo conseguir que automaticamente coja la primera coincidencia y la suplante por la palabra mal escrita? y así tener una corrección automatica.

Un Saludo.


podrían utilizar algo así (es al vuelo):

Code: Select all  Expand view

function corrige( cTexto )
   strtran( cTexto, "ion ", "ión " )
return cNuevo
 


Claro está que hay que ir aplicando las reglas adicionales, se complicarán en algunas, pero es un avance...

espero sea de ayuda.

Re: Acentuar automaticamente

PostPosted: Thu May 14, 2009 7:17 am
by softruz
Es un buen avance pero lo que me interesa es que cuando entra en la corrección automática coja la primera coincidencia por defecto y que no me pregunte nada, ¿hay algo parecido?

Un Saludo.