Programación General > Pascal

 Centrar Texto (#2)

(1/1)

_.B._:
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; 

bet@:
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;

_.B._:
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:

FSR:
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 ;)

_.B._:
:good:

Navegación

[0] Índice de Mensajes

Ir a la versión completa