Código de FoxPro/Visual FoxPro - Justificar texto

Justificar textográfica de visualizaciones


FoxPro/Visual FoxPro

estrellaestrellaestrellaestrellaestrella(4)
Publicado el 21 de Junio del 2004 por Eduardo Ureña
18.215 visualizaciones desde el 21 de Junio del 2004. Una media de 28 por semana
Función que devuelve un texto justificado

Versión 1
estrellaestrellaestrellaestrellaestrella(4)

Publicado el 21 de Junio del 2004gráfica de visualizaciones de la versión: Versión 1
18.216 visualizaciones desde el 21 de Junio del 2004. Una media de 28 por semana
estrellaestrellaestrellaestrellaestrella
estrellaestrellaestrellaestrella
estrellaestrellaestrella
estrellaestrella
estrella

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
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)

raul
26 de Junio del 2004
estrellaestrellaestrellaestrellaestrella
bueno, pero pense que mejor
Responder
Martín
18 de Agosto del 2004
estrellaestrellaestrellaestrellaestrella
Me gustó. Es 1 función útil. Quizás (es sólo 1 opinión) te convendría trabajar con 1 largo de cadena por defecto, es decir, que si no se aclara, se justifique a 80 caracteres, por ejemplo... pero es útil, gracias.

Saludos.

Martín
Responder
Percy Macedo Alegre
11 de Octubre del 2004
estrellaestrellaestrellaestrellaestrella
Muy bueno el código, pero solo funciona para variables de texto de cadenas...cierto?..
Se pordía trabajr con campos memo (imprimir texto continuo en una o dos paginas) ???

Gracias.
Responder
Regina Giron
13 de Junio del 2005
estrellaestrellaestrellaestrellaestrella
Excelente!!!!!!!!
Felicidades sigue asi......
Responder

Comentar la versión: Versión 1

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios

http://lwp-l.com/s1066