• Sábado 20 de Abril de 2024, 12:45

Mostrar Mensajes

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

Páginas: 1 [2]
26
Pascal / Re: Memoria
« en: Jueves 15 de Octubre de 2009, 23:33 »
no puede estar mejor contestada tu pregunta :)

27
Pascal / Re: Ejercicios Resueltos
« 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
Pascal / Re: Abreviando
« en: Miércoles 14 de Octubre de 2009, 17:22 »
usa un ciclo

Código: Pascal
  1.  
  2. For contador :=1 to 100 do
  3. begin
  4.        If LS[contador] then
  5.           numero := contador
  6.  end;
  7.  
  8.  

29
Pascal / Re: funcion edita fecha
« 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
Pascal / funcion edita fecha
« 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..


Código: Pascal
  1.  
  2. program editafechaprueba;
  3. uses crt,utileria;
  4. var
  5.    fecha:string[10];
  6.    tecla:char;
  7. begin
  8.    textattr:=15+0*16;
  9.    clrscr;
  10.    textattr:=15+0*16;
  11.    gotoxy(10,10);write('Fecha : ');
  12.  
  13.    tecla:=EditaFecha(Fecha,18,10,14,1);
  14.  
  15.    textattr:=15+0*16;
  16.    gotoxy(10,20);write('El resultado es : ',Fecha);
  17.    readln;
  18.  
  19. end.
  20.  
  21.  
  22.  
  23.  


la funcion recoge una tecla de salida, que pudiera serles utiles en otras operaciones.

31
Pascal / Re: Pregunta - Depuración
« en: Sábado 10 de Octubre de 2009, 16:07 »
no aun no lo instalo en linux

32
Pascal / Re: Pregunta - Depuración
« 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
Visual C++ / Re: Comparar Bit a Bit
« 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
Pascal / ejemplo de listas con apuntadores
« 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
Código: Pascal
  1.  
  2. program ejemploapuntadores;
  3. uses crt,utileria,apuntadores;
  4.  
  5. {cuerpo del programa}
  6. Var
  7.   TIApuntadorRegistro:ApuntadorRegistro;
  8.   Inicio,Final:ApuntadorRegistro;
  9.   Archivo:TipoArchivo;
  10.   Registro:TipoRegistro;
  11.   tecla:char;
  12.   Tamanio,contador:longint;
  13.   Opcion:Integer;
  14.   ArregloSeleccion:arregloVertical;
  15.   Ventana1:Save_screen;
  16. Begin
  17.     textattr:=15+1*16;
  18.     clrscr;
  19.     ArregloSeleccion[1]:='Mant. a Reg.';
  20.     ArregloSeleccion[2]:=' Listado    ';
  21.     ArregloSeleccion[3]:='Acerda de ..';
  22.     ArregloSeleccion[4]:='   Salir    ';
  23.     cuadro3d(1,1,80,3,2,1);
  24.     Textattr:=0+2*16;
  25.     gotoxy(2,2);write(' Ejemplos del uso de Apuntadores y Registros en Pascal 11/10/2009');
  26.     cuadro3d(2,23,79,25,2,1);
  27.     Textattr:=0+2*16;
  28.     gotoxy(45,24);write('epayan76@hotmail.com');
  29.     InicializaLista(Inicio,Final);
  30.     AperturaDeArchivo(Archivo);
  31.     CargaArchivoAMemoria(Archivo,Registro,Inicio,Final,TIApuntadorRegistro);
  32.     Close(archivo);
  33.     Repeat
  34.          cursoroff;
  35.          Opcion := MenuVertical(ArregloSeleccion,4,1,5,0,7,15,1);
  36.          case Opcion of
  37.              1 : Begin
  38.                    GetScreen(ventana1);
  39.                    Alta(Registro,Inicio,Final,TIApuntadorRegistro);
  40.                    PutScreen(Ventana1);
  41.                  End;
  42.              2 : Begin
  43.                    GetScreen(ventana1);
  44.                    EfectoScroll(Inicio,Final,TIApuntadorRegistro);
  45.                    PutScreen(Ventana1);
  46.                  End;
  47.              3 : Begin
  48.                    GetScreen(ventana1);
  49.                    AcercaDe;
  50.                    PutScreen(Ventana1);
  51.                  End;
  52.          end;{case}
  53.     Until ( Opcion = 4) or ( Opcion = 27);
  54. End.
  55.  
  56.  
  57.  


anexo archivo zip con las utilerias y el archivo.dat que debera estar en c:

35
Pascal / Re: Parametros por valor
« 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:
Código: Pascal
  1.  
  2. procedimientos
  3. funciones
  4. {cuerpo del programa}
  5. begin
  6. end.
  7.  
  8.  
  9.  

tal vez con un poco de orden y esctructuracion de tus funciones y procedimientos corrijas el problema

36
Pascal / Re: Parametros por valor
« en: Lunes 28 de Septiembre de 2009, 15:51 »
un ejemplos para ser mas explicitos esperemos que sea de ayuda

Código: Pascal
  1.  
  2. program nombre_del_programa;
  3. uses crt;
  4. {------------------*----------------------------------*---------------------}
  5. {en este ejemplo el X y el Y no se modificarán}
  6. procedure calculo1(x,y:integer);
  7. begin
  8.        {lo que se quiera hacer con X}
  9.         X:=x+1;
  10.        {lo que se quiera hacer con Y}
  11.         y:=Y+1;
  12. end;
  13.  
  14. {------------------*----------------------------------*---------------------}
  15. {en este ejemplo el X y el Y se modificarán}
  16. procedure calculo3(var x,y:integer);
  17. begin
  18.        {lo que se quiera hacer con X modificandolo}
  19.         X:=x+1;
  20.        {lo que se quiera hacer con Y modificandolo}
  21.         y:=Y+1;
  22. end;
  23. var x,y:integer;
  24. begin
  25.     clrscr;
  26.      x:=0;
  27.      y:=0;
  28.      calculo1(x,y); {en este procedimiento no se modifican los valores de X Y}
  29.      writeln('valor de X : ',x,' Valor de Y ',y);
  30.      calculo3(x,y); {en este procedimiento se modifican los valores X Y}
  31.      writeln('valor de X : ',x,' Valor de Y ',y);
  32. end.
  33.  
  34.  

37
Pascal / pequeño ejemplo de archivos
« 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.
Código: Pascal
  1.  
  2. program RegArchivos;
  3. uses crt,strings,go32,utileria,archivos,sysutils; {unidades o utilerias utilizadas}
  4.  
  5. {-----*-------*-------*-------*--------*------*------*------*-------*------}
  6. { Cuerpo del programa }
  7. Var
  8.     Archivo  : TipoArchivo; {tipo del archivo}
  9.     registro : TipoRegistro; {tipo del registro}
  10.     Ventana1 , Ventana2 , Ventana3 : save_screen;
  11.     Opcion , Numero : integer;
  12.     seleccion : ArregloVertical;
  13.     Tecla : char;
  14. Begin
  15.     textattr:=15+1*16;
  16.     borraarea(1,1,79,25,15,1);
  17.     clrscr;
  18.     {agregamos un menu}
  19.     Seleccion[1]:='Mant. de Regis';
  20.     Seleccion[2]:=' Listado       ';
  21.     Seleccion[3]:=' Salir        ';
  22.     cuadro3d(1,1,80,3,2,1);
  23.     Textattr:=0+2*16;
  24.     gotoxy(2,2);write('Programa que Ejemplifica el uso de Archivos y Registros en Pascal .11/10/2009');
  25.     cuadro3d(2,23,79,25,2,1);
  26.     Textattr:=0+2*16;
  27.     gotoxy(45,24);write('epayan76@hotmail.com');
  28.     Repeat
  29.        cursoroff;
  30.        opcion := MenuVertical(Seleccion,3,1,5,0,7,15,1);
  31.        case opcion of
  32.             1 : begin
  33.                    GetScreen(ventana1);
  34.                    AperturaDeArchivo(Archivo); {aperturamos el archivo}
  35.                    Alta(Archivo,Registro);
  36.                    close(Archivo);
  37.                    PutScreen(Ventana1);
  38.                 End;
  39.             2 : Begin
  40.                    GetScreen(ventana1);
  41.                    AperturaDeArchivo(Archivo); {aperturamos el archivo}
  42.                    EfectoScroll(Archivo,Registro);
  43.                    Close(Archivo);
  44.                    PutScreen(Ventana1);
  45.                 End;
  46.        End;{case}
  47.     Until (Opcion= 3) or (Opcion = 27);
  48.     cursoron;
  49.     textattr:=15+0*16;
  50.     clrscr;
  51. End.
  52. {este programa puede ser usado y distribuido libremente con fines didacticos y educativos}
  53.  
  54.  

38
Visual FoxPro / Re: Seguridad En La Base De Dotos
« en: Miércoles 23 de Septiembre de 2009, 03:10 »
Cita de: "robert03"
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 :D

39
Pascal / Re: utilerias
« en: Miércoles 23 de Septiembre de 2009, 02:10 »
anexo mas funciones a la utileria

40
Pascal / Re: Archivo .pas dañado
« en: Jueves 17 de Septiembre de 2009, 23:50 »
checaste tus *.bak, aveces queda algo ahi

41
Pascal / utilerias
« 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:
Código: Pascal
  1. program prueba3;
  2. uses crt,strings,go32,utileria,sysutils; {unidades o utilerias utilizadas}
  3.  
  4. {-----*-------*-------*-------*--------*------*------*------*-------*------}
  5. { Cuerpo del programa }
  6. Var
  7.     Ventana1 : save_screen;
  8.     Opcion   , Numero : integer;
  9.     seleccion : ArregloVertical;
  10.     Tecla : char;
  11. Begin
  12.     textattr:=15+1*16;
  13.     borraarea(1,1,79,25,15,1);
  14.     clrscr;
  15.     {agregamos un menu}
  16.     Seleccion[1]:='Mant. de Regis';
  17.     Seleccion[2]:='  Reportes    ';
  18.     Seleccion[3]:=' Modif. Reg.  ';
  19.     Seleccion[4]:=' Listado      ';
  20.     Seleccion[5]:=' Salir        ';
  21.     cuadro3d(1,1,80,3,2,1);
  22.     Textattr:=0+2*16;
  23.     gotoxy(2,2);write('Programa que Ejemplifica el uso de Archivos y Registros en Pascal .11/10/2009');
  24.     cuadro3d(2,23,79,25,2,1);
  25.     Textattr:=0+2*16;
  26.     gotoxy(45,24);write('Elabor¢: Edwin Ariel Payan Haas');
  27.  
  28.     Repeat
  29.        cursoroff;
  30.        opcion := MenuVertical(Seleccion,5,1,5,0,7,15,1);
  31.        case opcion of
  32.             1 : begin
  33.                    GetScreen(ventana1);
  34.                    gotoxy(30,10);write(hola);
  35.                    readln;
  36.                    PutScreen(Ventana1);
  37.                 End;
  38.             2 : begin
  39.                 End;
  40.             3 : Begin
  41.                 End;
  42.             4 : Begin
  43.                    GetScreen(ventana1);
  44.                    gotoxy(30,10);write(hola);
  45.                    readln;
  46.                    PutScreen(Ventana1);
  47.                 End;
  48.        End;{case}
  49.     Until (Opcion= 5) or (Opcion = 27);
  50.     textattr:=15+1*16;
  51.     borraarea(1,1,79,25,15,1);
  52.     clrscr;
  53.  
  54. End.
  55.  
  56.  


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
  1. Function NumAPalabra(Cantidad:real):String;
  2. const
  3.    {Declaramos las unidades del 1 al 29}
  4.    Unidades: array [1..29] of string[15]= ('UN','DOS','TRES','CUATRO','CINCO','SEIS','SIETE','OCHO','NUEVE','DIEZ',
  5.                                              'ONCE','DOCE','TRECE','CATORCE','QUINCE','DIECISEIS','DIECISIETE','DIECIOCHO','DIECINUEVE','VEINTE',
  6.                                              'VEINTIUN','VEINTIDOS','VEINTITRES','VEINTICUATRO','VEINTICINCO','VEINTISEIS','VEINTISIETE','VEINTIOCHO','VEINTINUEVE');
  7.    {declaramos las decenas del 10 al 90}
  8.    Decenas : array [1..9] of String[15] = ('DIEZ','VEINTE','TREINTA','CUARENTA','CINCUENTA','SESENTA','SETENTA','OCHENTA','NOVENTA');
  9.  
  10.    {Declaramos las centenas del 100 al 900}
  11.    Centenas :Array [1..9] of string[15] = ('CIENTO','DOSCIENTOS','TRESCIENTOS','CUATROCIENTOS','QUINIENTOS','SEISCIENTOS','SETECIENTOS','OCHOCIENTOS','NOVECIENTOS' );
  12.  
  13. var {declaramos las variables usadas en la funcion}
  14.    CantidadReal    :Real;
  15.    CantidadEntera  ,TmpCantidadentera :longInt;
  16.    Centavos        :REAL;
  17.    TextoCentavos   :String;
  18.    TnDigito        ,TnPrimerDigito ,
  19.    TnSegundoDigito ,TnTercerDigito :integer;
  20.    BloqueTexto     :String;
  21.    TnNumeroBloques :Byte;
  22.    TnBloqueCero    :integer;
  23.    Contador        :integer;
  24.  
  25. Begin
  26.    {Inicializamos las variables}
  27.    centavos         := 0;
  28.    CantidadEntera   := Trunc(Cantidad);
  29.    TmpCantidadentera:= CantidadEntera;
  30.    Centavos         := round(((CantidadEntera-Cantidad) * 100 )* -1);
  31.    TnDigito         := 0;
  32.    TnNumeroBloques  := 1;
  33.    TnPrimerDigito   := 0;
  34.    TnSegundoDigito  := 0;
  35.    TnTercerDigito   := 0;
  36.    BloqueTexto      := '';
  37.    TnBloqueCero     := 1;
  38.  
  39.    Repeat
  40.         For Contador:= 1 To 3  do {ciclo para determinar unidades,decenas ,centenas}
  41.             Begin
  42.               TnDigito:=TmpCantidadEntera Mod 10;{hacemos el recorrido por cada digito}
  43.               If TnDigito <> 0 Then{si no es cero buscamos en los arreglos constantes}
  44.                  Begin
  45.                       Case Contador of
  46.                           1:Begin  {si son unidades}
  47.                                 BloqueTexto := ' '+ Unidades[TnDigito];
  48.                                 TnPrimerDigito := TnDigito ;
  49.                             End;
  50.                           2:Begin {si son decenas}
  51.                                 If TnDigito <= 2 Then
  52.                                    BloqueTexto := ' ' + Unidades[(TnDigito * 10) + TnPrimerDigito ]+ ' '
  53.                                 Else
  54.                                    Begin
  55.                                        If TnPrimerDigito <> 0 then
  56.                                            BloqueTexto := ' '+ Decenas[TnDigito]+ ' Y'+BloqueTexto
  57.                                        Else
  58.                                           If TnDigito <> 0 then
  59.                                              BloqueTexto := ' '+ Decenas[TnDigito]
  60.                                           Else
  61.                                              BloqueTexto:= BloqueTexto
  62.                                        End;
  63.                                    TnSegundoDigito := TnDigito;
  64.                                    End;
  65.                            3:Begin {si son centenas}
  66.                                  IF (TnDigito = 1) and (TnPrimerDigito = 0) and (TnSegundoDigito = 0) then
  67.                                      BloqueTexto:=' CIEN '+BloqueTexto
  68.                                  Else
  69.                                     BloqueTexto:= Centenas[TnDigito] + BloqueTexto;
  70.                                  TnTercerDigito := TnDigito;
  71.                              End;
  72.                       End;{case}
  73.                    TmpCantidadentera:=trunc(TmpCantidadentera/10);{dividimos entre 10 para recorrer la cifra}
  74.                  End
  75.               Else
  76.                  Begin
  77.                      TnBloqueCero := TnBloqueCero + 1 ;{validamos los bloques para determinar miles y millones}
  78.                      TmpCantidadentera:=trunc(TmpCantidadentera/10);{dividimos entre 10 para recorrer la cifra}
  79.                      If TmpCantidadEntera = 0 Then {rompiendo el ciclo forzozamente}
  80.                         Contador:=3;
  81.                  End;
  82.          End;{for}
  83.          Case TnNumeroBloques of {validando miles y millones}
  84.               1: Begin {validando cientos}
  85.                      NumAPalabra := BloqueTexto;
  86.                  End;
  87.              2 :Begin {validando miles}
  88.                     If TnBloqueCero < 2 then
  89.                        NumAPalabra:=BloqueTexto+NumAPalabra
  90.                     Else
  91.                        begin
  92.                           If (TnPrimerDigito = 0) and (TnSegundoDigito = 0) and (TnTercerDigito = 0) then
  93.                              NumAPalabra:=BloqueTexto+NumAPalabra
  94.                           Else
  95.                              NumAPalabra:=BloqueTexto+' MIL '+NumAPalabra;
  96.                        End;
  97.                  End;
  98.               3 :Begin {validando millones}
  99.                      If (TnPrimerDigito = 1) and (TnSegundoDigito = 0) and (TnTercerDigito = 0) then
  100.                         NumAPalabra:= BloqueTexto + ' MILLON '+ NumAPalabra
  101.                      Else
  102.                         NumAPalabra:= BloqueTexto + ' MILLONES '+ NumAPalabra;
  103.                  End;
  104.             End;{case}
  105.             TnNumeroBloques := TnNumeroBloques + 1 ; {incrementando el bloque}
  106.            {inicializando variables para las siguientes pasadas en caso de haber miles y millones}
  107.             TnDigito        := 0;
  108.             TnPrimerDigito  := 0;
  109.             TnSegundoDigito := 0;
  110.             TnTercerDigito  := 0;
  111.             BloqueTexto     := '';
  112.      Until TmpCantidadEntera = 0 ;{validar hasta que que sea 0}
  113.      Str(Centavos:2:0,TextoCentavos);{convirtiendo los centavos a texto}
  114.      If CantidadEntera > 1 then {si la cantidad es mayor que 1}
  115.         NumAPalabra:= 'SON: ('+ NumAPalabra  +' PESOS '+TextoCentavos+'/100 M.N)'
  116.      Else {en caso que sea 1}
  117.         NumAPalabra:= 'SON: ('+ NumAPalabra  +' PESO '+TextoCentavos+'/100 M.N)'
  118. End;
  119.  
cualquier aportacion para enriquecer a la utileria sera bienvenida

compartamos codigo solo asi se superan las personas......

Páginas: 1 [2]