Domingo 22 de Diciembre de 2024, 11:39
SoloCodigo
Bienvenido(a),
Visitante
. Por favor,
ingresa
o
regístrate
.
¿Perdiste tu
email de activación?
Inicio
Foros
Chat
Ayuda
Buscar
Ingresar
Registrarse
SoloCodigo
»
Foros
»
Programación General
»
Pascal
»
utilerias
« anterior
próximo »
Imprimir
Páginas: [
1
]
Autor
Tema: utilerias (Leído 1959 veces)
epayan
Miembro activo
Mensajes: 41
Nacionalidad:
utilerias
«
en:
Jueves 17 de Septiembre de 2009, 22:49 »
0
hola foro, revisando el baul me tope con algunas utilerias usadas que me gustaria reciclar y compartir , para los programas inline, ya un poco viejitos recondicionados para freepascal..
un saludo y espero que les sea util..
los procedimientos y funciones que se incluyen:
1.- GetScreen .
2.- PutScreen.
3.- Marco.
4.- cuadro.
5.- cuadro3d.
6.-PresentaTextoDerecha.
7.-PresentaTextoIzquierda.
8.-PresentaTextoMedio.
9.-MenuVertical.
10.- MenuHorizontal.
11.- Concatena.
12.-RellenaBlancos.
13.-RellenaCaracter.
14.-Borraarea
15.-ConvierteMayuscula.
16.-EditaCuerda.
17.-EditaFecha.
18.-EditaPassword
19.-EditaEntero.
20.-EditaByte.
21.-EditaLongint.
22.-EditaReal.
23.-NumAPalabra
aquie un ejemplo:
Código: Pascal
program
prueba3;
uses
crt
,
strings
,
go32
,
utileria
,
sysutils;
{unidades o utilerias utilizadas}
{-----*-------*-------*-------*--------*------*------*------*-------*------}
{ Cuerpo del programa }
Var
Ventana1
:
save_screen;
Opcion
,
Numero
:
integer
;
seleccion
:
ArregloVertical;
Tecla
:
char
;
Begin
textattr
:=
15
+
1
*
16
;
borraarea
(
1
,
1
,
79
,
25
,
15
,
1
)
;
clrscr;
{agregamos un menu}
Seleccion
[
1
]
:=
'Mant. de Regis'
;
Seleccion
[
2
]
:=
' Reportes '
;
Seleccion
[
3
]
:=
' Modif. Reg. '
;
Seleccion
[
4
]
:=
' Listado '
;
Seleccion
[
5
]
:=
' Salir '
;
cuadro3d
(
1
,
1
,
80
,
3
,
2
,
1
)
;
Textattr
:=
0
+
2
*
16
;
gotoxy
(
2
,
2
)
;
write
(
'Programa que Ejemplifica el uso de Archivos y Registros en Pascal .11/10/2009'
)
;
cuadro3d
(
2
,
23
,
79
,
25
,
2
,
1
)
;
Textattr
:=
0
+
2
*
16
;
gotoxy
(
45
,
24
)
;
write
(
'Elabor¢: Edwin Ariel Payan Haas'
)
;
Repeat
cursoroff;
opcion
:=
MenuVertical
(
Seleccion
,
5
,
1
,
5
,
0
,
7
,
15
,
1
)
;
case
opcion
of
1
:
begin
GetScreen
(
ventana1
)
;
gotoxy
(
30
,
10
)
;
write
(
hola
)
;
readln
;
PutScreen
(
Ventana1
)
;
End
;
2
:
begin
End
;
3
:
Begin
End
;
4
:
Begin
GetScreen
(
ventana1
)
;
gotoxy
(
30
,
10
)
;
write
(
hola
)
;
readln
;
PutScreen
(
Ventana1
)
;
End
;
End
;
{case}
Until
(
Opcion
=
5
)
or
(
Opcion
=
27
)
;
textattr
:=
15
+
1
*
16
;
borraarea
(
1
,
1
,
79
,
25
,
15
,
1
)
;
clrscr;
End
.
un ejemplo visual de este codigo:
http: // 2.bp.blogspot.com/_5QIJNhCUCcc/SrP6imfuOoI/AAAAAAAAABg/HTFASS_gZv8/s1600-h/pantalla+demo.JPG
Agregando mas codigo a la utileria incluyo una funcion convierte numero a palabras , el codigo estaba en Visual Basic y se porto a pascal. cito las fuentes , por que hay que dar credito a los autores http:/ / gchable.wordpress.com/2007/10/14/4/ , al parecer el autor es Saúl López con una pequeña modificación de ByPaco² .
el codigo anexado a continuacion:
Código: Pascal
Function
NumAPalabra
(
Cantidad
:
real
)
:
String
;
const
{Declaramos las unidades del 1 al 29}
Unidades
:
array
[
1
..
29
]
of
string
[
15
]
=
(
'UN'
,
'DOS'
,
'TRES'
,
'CUATRO'
,
'CINCO'
,
'SEIS'
,
'SIETE'
,
'OCHO'
,
'NUEVE'
,
'DIEZ'
,
'ONCE'
,
'DOCE'
,
'TRECE'
,
'CATORCE'
,
'QUINCE'
,
'DIECISEIS'
,
'DIECISIETE'
,
'DIECIOCHO'
,
'DIECINUEVE'
,
'VEINTE'
,
'VEINTIUN'
,
'VEINTIDOS'
,
'VEINTITRES'
,
'VEINTICUATRO'
,
'VEINTICINCO'
,
'VEINTISEIS'
,
'VEINTISIETE'
,
'VEINTIOCHO'
,
'VEINTINUEVE'
)
;
{declaramos las decenas del 10 al 90}
Decenas
:
array
[
1
..
9
]
of
String
[
15
]
=
(
'DIEZ'
,
'VEINTE'
,
'TREINTA'
,
'CUARENTA'
,
'CINCUENTA'
,
'SESENTA'
,
'SETENTA'
,
'OCHENTA'
,
'NOVENTA'
)
;
{Declaramos las centenas del 100 al 900}
Centenas
:
Array
[
1
..
9
]
of
string
[
15
]
=
(
'CIENTO'
,
'DOSCIENTOS'
,
'TRESCIENTOS'
,
'CUATROCIENTOS'
,
'QUINIENTOS'
,
'SEISCIENTOS'
,
'SETECIENTOS'
,
'OCHOCIENTOS'
,
'NOVECIENTOS'
)
;
var
{declaramos las variables usadas en la funcion}
CantidadReal
:
Real
;
CantidadEntera
,
TmpCantidadentera
:
longInt
;
Centavos
:
REAL
;
TextoCentavos
:
String
;
TnDigito
,
TnPrimerDigito
,
TnSegundoDigito
,
TnTercerDigito
:
integer
;
BloqueTexto
:
String
;
TnNumeroBloques
:
Byte
;
TnBloqueCero
:
integer
;
Contador
:
integer
;
Begin
{Inicializamos las variables}
centavos
:=
0
;
CantidadEntera
:=
Trunc
(
Cantidad
)
;
TmpCantidadentera
:=
CantidadEntera;
Centavos
:=
round
(
(
(
CantidadEntera
-
Cantidad
)
*
100
)
*
-
1
)
;
TnDigito
:=
0
;
TnNumeroBloques
:=
1
;
TnPrimerDigito
:=
0
;
TnSegundoDigito
:=
0
;
TnTercerDigito
:=
0
;
BloqueTexto
:=
''
;
TnBloqueCero
:=
1
;
Repeat
For
Contador
:=
1
To
3
do
{ciclo para determinar unidades,decenas ,centenas}
Begin
TnDigito
:=
TmpCantidadEntera
Mod
10
;
{hacemos el recorrido por cada digito}
If
TnDigito <>
0
Then
{si no es cero buscamos en los arreglos constantes}
Begin
Case
Contador
of
1
:
Begin
{si son unidades}
BloqueTexto
:=
' '
+
Unidades
[
TnDigito
]
;
TnPrimerDigito
:=
TnDigito ;
End
;
2
:
Begin
{si son decenas}
If
TnDigito <
=
2
Then
BloqueTexto
:=
' '
+
Unidades
[
(
TnDigito
*
10
)
+
TnPrimerDigito
]
+
' '
Else
Begin
If
TnPrimerDigito <>
0
then
BloqueTexto
:=
' '
+
Decenas
[
TnDigito
]
+
' Y'
+
BloqueTexto
Else
If
TnDigito <>
0
then
BloqueTexto
:=
' '
+
Decenas
[
TnDigito
]
Else
BloqueTexto
:=
BloqueTexto
End
;
TnSegundoDigito
:=
TnDigito;
End
;
3
:
Begin
{si son centenas}
IF
(
TnDigito
=
1
)
and
(
TnPrimerDigito
=
0
)
and
(
TnSegundoDigito
=
0
)
then
BloqueTexto
:=
' CIEN '
+
BloqueTexto
Else
BloqueTexto
:=
Centenas
[
TnDigito
]
+
BloqueTexto;
TnTercerDigito
:=
TnDigito;
End
;
End
;
{case}
TmpCantidadentera
:=
trunc
(
TmpCantidadentera
/
10
)
;
{dividimos entre 10 para recorrer la cifra}
End
Else
Begin
TnBloqueCero
:=
TnBloqueCero
+
1
;
{validamos los bloques para determinar miles y millones}
TmpCantidadentera
:=
trunc
(
TmpCantidadentera
/
10
)
;
{dividimos entre 10 para recorrer la cifra}
If
TmpCantidadEntera
=
0
Then
{rompiendo el ciclo forzozamente}
Contador
:=
3
;
End
;
End
;
{for}
Case
TnNumeroBloques
of
{validando miles y millones}
1
:
Begin
{validando cientos}
NumAPalabra
:=
BloqueTexto;
End
;
2
:
Begin
{validando miles}
If
TnBloqueCero <
2
then
NumAPalabra
:=
BloqueTexto
+
NumAPalabra
Else
begin
If
(
TnPrimerDigito
=
0
)
and
(
TnSegundoDigito
=
0
)
and
(
TnTercerDigito
=
0
)
then
NumAPalabra
:=
BloqueTexto
+
NumAPalabra
Else
NumAPalabra
:=
BloqueTexto
+
' MIL '
+
NumAPalabra;
End
;
End
;
3
:
Begin
{validando millones}
If
(
TnPrimerDigito
=
1
)
and
(
TnSegundoDigito
=
0
)
and
(
TnTercerDigito
=
0
)
then
NumAPalabra
:=
BloqueTexto
+
' MILLON '
+
NumAPalabra
Else
NumAPalabra
:=
BloqueTexto
+
' MILLONES '
+
NumAPalabra;
End
;
End
;
{case}
TnNumeroBloques
:=
TnNumeroBloques
+
1
;
{incrementando el bloque}
{inicializando variables para las siguientes pasadas en caso de haber miles y millones}
TnDigito
:=
0
;
TnPrimerDigito
:=
0
;
TnSegundoDigito
:=
0
;
TnTercerDigito
:=
0
;
BloqueTexto
:=
''
;
Until
TmpCantidadEntera
=
0
;
{validar hasta que que sea 0}
Str
(
Centavos
:
2
:
0
,
TextoCentavos
)
;
{convirtiendo los centavos a texto}
If
CantidadEntera >
1
then
{si la cantidad es mayor que 1}
NumAPalabra
:=
'SON: ('
+
NumAPalabra
+
' PESOS '
+
TextoCentavos
+
'/100 M.N)'
Else
{en caso que sea 1}
NumAPalabra
:=
'SON: ('
+
NumAPalabra
+
' PESO '
+
TextoCentavos
+
'/100 M.N)'
End
;
cualquier aportacion para enriquecer a la utileria sera bienvenida
compartamos codigo solo asi se superan las personas......
El mensaje contiene
1 archivo adjunto
. Debes
ingresar
o
registrarte
para poder verlo y descargarlo.
Tweet
«
última modificación: Domingo 4 de Julio de 2010, 18:04 por epayan
»
m0skit0
Miembro de PLATA
Mensajes: 2337
Nacionalidad:
Re: utilerias
«
Respuesta #1 en:
Viernes 18 de Septiembre de 2009, 13:44 »
0
Gracias por compartir
Fr33k K0mpu73r
epayan
Miembro activo
Mensajes: 41
Nacionalidad:
Re: utilerias
«
Respuesta #2 en:
Miércoles 23 de Septiembre de 2009, 02:10 »
0
anexo mas funciones a la utileria
Imprimir
Páginas: [
1
]
« anterior
próximo »
SoloCodigo
»
Foros
»
Programación General
»
Pascal
»
utilerias