
Justificar texto en VFP
Publicado por Ernesto Hernandez (4623 intervenciones) el 09/08/2007 19:50:34
FUNCTION Justifica(xTexto,xLargo)
xTex=RTRIM(xTexto) && Sólo elimino los espacios a la derecha
IF EMPTY(xTex) .OR. RIGHT(xTex,1)="."
Cad=xTex
ELSE
J=0
Pal=""
FOR xI=1 TO LEN(xTex)
Let=SUBSTR(xTex,xI,1)
IF Let=" " .OR. xI=LEN(xTex) &&espacio o final de palabra
J=J+1
DIME xVector(J)
IF xI=LEN(xTex)
Pal=Pal+Let
ENDIF
xVector(J)=Pal
Pal=""
ELSE
Pal=Pal+Let
ENDIF
NEXT xI
* Calculando el largo de la cadena sin tomar en cuenta espacios
Lar=0
FOR xI=1 TO Alen(xVector,1) &&Cantidad de filas
Lar=Lar+LEN(xVector(xI))
NEXT xI
Conteo=xLargo-Lar &&Cantidad de espacios a intercalar
Esp=ALEN(xVector,1)-1 &&Espacios entre palabras viables
xEsp=Conteo/Esp &&Número aproximado de espacios a intercalar entre palabras
xxEsp=INT(xEsp)
EspFal=(xEsp-xxEsp)*Esp
Cad=""
FOR xI=1 TO ALEN(xVector,1)-1
IF xI<=EspFal
Vac=SPACE(xxEsp)+SPACE(1)
ELSE
Vac=SPACE(xxEsp)
ENDIF
Cad=Cad+xVector(xI)+Vac
NEXT xI
Cad=Cad+xVector(ALEN(xVector,1))
ENDIF
RETURN Cad
Suerte
xTex=RTRIM(xTexto) && Sólo elimino los espacios a la derecha
IF EMPTY(xTex) .OR. RIGHT(xTex,1)="."
Cad=xTex
ELSE
J=0
Pal=""
FOR xI=1 TO LEN(xTex)
Let=SUBSTR(xTex,xI,1)
IF Let=" " .OR. xI=LEN(xTex) &&espacio o final de palabra
J=J+1
DIME xVector(J)
IF xI=LEN(xTex)
Pal=Pal+Let
ENDIF
xVector(J)=Pal
Pal=""
ELSE
Pal=Pal+Let
ENDIF
NEXT xI
* Calculando el largo de la cadena sin tomar en cuenta espacios
Lar=0
FOR xI=1 TO Alen(xVector,1) &&Cantidad de filas
Lar=Lar+LEN(xVector(xI))
NEXT xI
Conteo=xLargo-Lar &&Cantidad de espacios a intercalar
Esp=ALEN(xVector,1)-1 &&Espacios entre palabras viables
xEsp=Conteo/Esp &&Número aproximado de espacios a intercalar entre palabras
xxEsp=INT(xEsp)
EspFal=(xEsp-xxEsp)*Esp
Cad=""
FOR xI=1 TO ALEN(xVector,1)-1
IF xI<=EspFal
Vac=SPACE(xxEsp)+SPACE(1)
ELSE
Vac=SPACE(xxEsp)
ENDIF
Cad=Cad+xVector(xI)+Vac
NEXT xI
Cad=Cad+xVector(ALEN(xVector,1))
ENDIF
RETURN Cad
Suerte
Valora esta pregunta


0