
Justificar texto
FoxPro/Visual FoxPro
Publicado el 21 de Junio del 2004 por Eduardo Ureña (3 códigos)
23.367 visualizaciones desde el 21 de Junio del 2004
Función que devuelve un texto justificado
FUNCTION Justifica(xTexto,xLargo)
* Programa: Justifica
* Parámetros: xTexto, xLargo
* xTexto= Línea a justificar
* xLargo= Largo de la línea
* Escrito: Eduardo Ureña
* País: Costa Rica
* Nota: Si no se desea justificar una línea, deberá terminarla con un punto.
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
Comentarios sobre la versión: Versión 1 (4)
Saludos.
Martín
Se pordía trabajr con campos memo (imprimir texto continuo en una o dos paginas) ???
Gracias.
Felicidades sigue asi......