Programación General => Pascal => Mensaje iniciado por: _.B._ en Miércoles 4 de Febrero de 2004, 19:55
Título: Centrar Texto (#2)
Publicado por: _.B._ en Miércoles 4 de Febrero de 2004, 19:55
Este Procedure sirve para centrar un String, no importa si se encuentra dentro de un Window, o si la resolución es de 40 u 80 columnas.
Código: Text
PROCEDURE CentrarTxt (WriteTexto:STRING);
VAR X,Y,Z:BYTE;
BEGIN
X:=1;
Y:=WHEREY;
Z:=LO (WINDMAX) - LO (WINDMIN) + 1;
IF LENGTH (WriteTexto) < Z THEN
X:=((Z-LENGTH (WriteTexto)) DIV 2)+1;
GOTOXY (X,Y);
WRITE (WriteTexto)
END;
Título: Re: Centrar Texto (#2)
Publicado por: bet@ en Miércoles 31 de Marzo de 2004, 20:45
ke pascal usas yo no sabia ke se pudiera usar byte. Me puedes explicar esta parte porfa Y:=WHEREY; Z:=LO (WINDMAX) - LO (WINDMIN) + 1;
Título: Re: Centrar Texto (#2)
Publicado por: _.B._ en Miércoles 21 de Abril de 2004, 03:39
Saludos!. Estoy utilizando Turbo Pascal 7.0. Byte son enteros de 0 a 255, ambos inclusive. whereX y whereY son funciones que regresan un valor entero, de la coordenada X y Y, respectivamente, del cursor en la ventana (window(x1,y1,x2,y2)) en que se encuentre, en el momento en que la funcion es llamada. Ahora, windMin y windMax son funciones tambien, que devuelven las coordenadas X y Y de la esquina superior izquierda (windMin) y de la exquina inferior derecha (windMax) de la ventana actual. Las funciones "lo" y "hi" no se como explicarlas :unsure: pero te digo que lo(windMin) o lo(windMax) retornan el valor de la X en las respectivas esquinas, y, de manera análoga, hi(windMin) y hi(windMax) retornan los Y. Cuando no has definido ninguna ventana, la esquina superior izquierda de la pantalla sera (X1,Y1) = (0,0) (o sea, lo(windMin) = 0 y hi(windMin) = 0), y la inferior derecha sera (X2,Y2) = (49,79) (o sea, lo(windMax) = 49 y hi(windMax) = 79) para una resolucion de pantalla de 50X80. Cuando hayas definido ventanas, la esquina superior sera (1,1). Ahora, y si esta explicación sirvió de algo ;) : Para calcular la distancia entre dos puntos A y B, se realiza asi: D = A - B + 1. De aqui el porque de la ecuacion Z:=LO (WINDMAX) - LO (WINDMIN) + 1 Z seria la distancia entre los bordes de la ventana, cualquiera que sea, y luego la utilizo en el Z div 2 para calcular la mitad de las columnas de la misma ventana. A programar! :comp:
Título: Re: Centrar Texto (#2)
Publicado por: FSR en Martes 11 de Mayo de 2004, 18:47
Sólo una aclaración. El tipo BYTE está presente desde la versión 4.0 de Turbo Pascal. El WindMin y WindMax no son funciones, sino vaiables de tipo WORD (valores entre 0 y 65535).
Lo de LO y HI se explica así:
Un Nº WORD está compuesto por 2 BYTEs. Ej: 1DFC (Hexadecimal). El LO obtiene la parte menos significativa del número (FC) y el HI la parte más significativa (1D).
Para el caso del WindMin y el WindMax, la parte menos significativa almacena la coordenada X, y la más significativa la coordena Y.
Así, WindMin almacena (X1,Y1) y el WindMax almacena (X2, Y2).
Saludos ;)
Título: Re: Centrar Texto (#2)
Publicado por: _.B._ en Lunes 17 de Mayo de 2004, 01:23