|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - epayan
26
« en: Jueves 15 de Octubre de 2009, 23:33 »
no puede estar mejor contestada tu pregunta
27
« en: Miércoles 14 de Octubre de 2009, 23:09 »
creo qe deberiamos disculpar al eternity, no le han salido bien las cosas y es un manera de demostrarlo
28
« en: Miércoles 14 de Octubre de 2009, 17:22 »
usa un ciclo For contador :=1 to 100 do begin If LS[contador] then numero := contador end;
29
« en: Miércoles 14 de Octubre de 2009, 15:43 »
gracias por tus comentarios , son bienvenidos, aun asi seguire aportando hasta que el tiempo me lo permita, comentarios como estos alientan a seguir
30
« en: Martes 13 de Octubre de 2009, 18:35 »
en ocasiones nos vemos en la necesidad de realizar trabajos en la escuela , en donde pidamos fechas y no contamos con una validacion adecuada. En caso de tener un maestro que se fije en todo , hasta en las validaciones.. pues bien , les hago una entrega de una funcion que valida, si la fecha es corecta o no tomando encuenta los años biciestos, en formato DD/MM/YYYY, de manera rapida que les sea de utilidad , mejoras acepto correcciones.. program editafechaprueba; uses crt,utileria; var fecha:string[10]; tecla:char; begin textattr:=15+0*16; clrscr; textattr:=15+0*16; gotoxy(10,10);write('Fecha : '); tecla:=EditaFecha(Fecha,18,10,14,1); textattr:=15+0*16; gotoxy(10,20);write('El resultado es : ',Fecha); readln; end.
la funcion recoge una tecla de salida, que pudiera serles utiles en otras operaciones.
31
« en: Sábado 10 de Octubre de 2009, 16:07 »
no aun no lo instalo en linux
32
« en: Sábado 10 de Octubre de 2009, 05:03 »
solamente lo he intentado con el IDE con las teclas F4 y F7 al igual que tu , pero desde un compilador de lienea de comando no.
33
« en: Viernes 2 de Octubre de 2009, 22:58 »
alguna vez hice algo asi , para manipular el puerto paralelo
donde el valor maximo era un byte o 11111111= 255 estoy en lo correcto? si es asi deberia ser de la siguiente manera:
1, 2 , 4 , 8 , 16, 36, 64, 128
de tal manera que empezaba por:
if valor >= 128 { valor = Valor - 128 arregloposicion [8]=1; }
y asi me voy con las demas posiciones
espero que sea eso a lo que te estes refiriendo, si no ignora este comentario
34
« en: Viernes 2 de Octubre de 2009, 21:21 »
la ultima entrega que hice fué de Archivos tipeados y registros. SI bien son utiles para manejar informacion permanente en la computadora , no es muy recomendable trabajar directamente con ellas, la razon es la velocidad.. Para solventar este problema se utilizan la memoria, y como usar esta memoria ?.. Nada mas y nada menos que con apuntadores , manajedos atravez de listas. He aqui un ejemplo de como cargar un archivo tipeado (records) y trabajar con ese archivo en la memoria, se nota mucho la diferencia a que si se trabajára con los archivos fisicamente . que les sea de utilidad anexo el programa principal program ejemploapuntadores; uses crt,utileria,apuntadores; {cuerpo del programa} Var TIApuntadorRegistro:ApuntadorRegistro; Inicio,Final:ApuntadorRegistro; Archivo:TipoArchivo; Registro:TipoRegistro; tecla:char; Tamanio,contador:longint; Opcion:Integer; ArregloSeleccion:arregloVertical; Ventana1:Save_screen; Begin textattr:=15+1*16; clrscr; ArregloSeleccion[1]:='Mant. a Reg.'; ArregloSeleccion[2]:=' Listado '; ArregloSeleccion[3]:='Acerda de ..'; ArregloSeleccion[4]:=' Salir '; cuadro3d(1,1,80,3,2,1); Textattr:=0+2*16; gotoxy(2,2);write(' Ejemplos del uso de Apuntadores y Registros en Pascal 11/10/2009'); cuadro3d(2,23,79,25,2,1); Textattr:=0+2*16; gotoxy(45,24);write('epayan76@hotmail.com'); InicializaLista(Inicio,Final); AperturaDeArchivo(Archivo); CargaArchivoAMemoria(Archivo,Registro,Inicio,Final,TIApuntadorRegistro); Close(archivo); Repeat cursoroff; Opcion := MenuVertical(ArregloSeleccion,4,1,5,0,7,15,1); case Opcion of 1 : Begin GetScreen(ventana1); Alta(Registro,Inicio,Final,TIApuntadorRegistro); PutScreen(Ventana1); End; 2 : Begin GetScreen(ventana1); EfectoScroll(Inicio,Final,TIApuntadorRegistro); PutScreen(Ventana1); End; 3 : Begin GetScreen(ventana1); AcercaDe; PutScreen(Ventana1); End; end;{case} Until ( Opcion = 4) or ( Opcion = 27); End.
anexo archivo zip con las utilerias y el archivo.dat que debera estar en c:
35
« en: Lunes 28 de Septiembre de 2009, 17:30 »
podriamos ver el codigo para ayudarte mejor podría ser una variable global que este controlando tu menú , que te hace entrar de golpe a la opcion calcular por lo que se procedimientos y funciones van antes de: procedimientos funciones {cuerpo del programa} begin end.
tal vez con un poco de orden y esctructuracion de tus funciones y procedimientos corrijas el problema
36
« en: Lunes 28 de Septiembre de 2009, 15:51 »
un ejemplos para ser mas explicitos esperemos que sea de ayuda program nombre_del_programa; uses crt; {------------------*----------------------------------*---------------------} {en este ejemplo el X y el Y no se modificarán} procedure calculo1(x,y:integer); begin {lo que se quiera hacer con X} X:=x+1; {lo que se quiera hacer con Y} y:=Y+1; end; {------------------*----------------------------------*---------------------} {en este ejemplo el X y el Y se modificarán} procedure calculo3(var x,y:integer); begin {lo que se quiera hacer con X modificandolo} X:=x+1; {lo que se quiera hacer con Y modificandolo} y:=Y+1; end; var x,y:integer; begin clrscr; x:=0; y:=0; calculo1(x,y); {en este procedimiento no se modifican los valores de X Y} writeln('valor de X : ',x,' Valor de Y ',y); calculo3(x,y); {en este procedimiento se modifican los valores X Y} writeln('valor de X : ',x,' Valor de Y ',y); end.
37
« en: Jueves 24 de Septiembre de 2009, 02:58 »
dentro de la humilde aportacion que les traigo, acontinuacion un pequeño ejemplo del manejo de archivos tipeados cito el programa principal y anexo dos unidades la primera utileria.pas y la segunda archivos.pas compilado en freepascal. espero que les sea de utilidad. program RegArchivos; uses crt,strings,go32,utileria,archivos,sysutils; {unidades o utilerias utilizadas} {-----*-------*-------*-------*--------*------*------*------*-------*------} { Cuerpo del programa } Var Archivo : TipoArchivo; {tipo del archivo} registro : TipoRegistro; {tipo del registro} Ventana1 , Ventana2 , Ventana3 : 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]:=' Listado '; Seleccion[3]:=' 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('epayan76@hotmail.com'); Repeat cursoroff; opcion := MenuVertical(Seleccion,3,1,5,0,7,15,1); case opcion of 1 : begin GetScreen(ventana1); AperturaDeArchivo(Archivo); {aperturamos el archivo} Alta(Archivo,Registro); close(Archivo); PutScreen(Ventana1); End; 2 : Begin GetScreen(ventana1); AperturaDeArchivo(Archivo); {aperturamos el archivo} EfectoScroll(Archivo,Registro); Close(Archivo); PutScreen(Ventana1); End; End;{case} Until (Opcion= 3) or (Opcion = 27); cursoron; textattr:=15+0*16; clrscr; End. {este programa puede ser usado y distribuido libremente con fines didacticos y educativos}
38
« en: Miércoles 23 de Septiembre de 2009, 03:10 »
hola muchacho como estan
soy nuevo en el foros y tengo una pregunta.
como hago para que no puedan ver, acceder y modificar la informacion de las tablas (base de datos) por medio de windows. que sólo puedan acceder, ver y modificar por el ejecutable del software.
esto por cuestion de seguridad en la base de datos. usa un server linux , usando samba , con un directorio compartido , validado por ip, usuario , grupos, y en las reestriccines de bashh con chmod y chown solo le dejas que se vea el ejecutable
39
« en: Miércoles 23 de Septiembre de 2009, 02:10 »
anexo mas funciones a la utileria
40
« en: Jueves 17 de Septiembre de 2009, 23:50 »
checaste tus *.bak, aveces queda algo ahi
41
« en: Jueves 17 de Septiembre de 2009, 22:49 »
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: 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: 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......
|
|
|