• Viernes 8 de Noviembre de 2024, 16:59

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 - FSR

Páginas: [1]
1
Pascal / Re: Como Saber Los Archivos De Una Carpeta
« en: Martes 8 de Febrero de 2005, 00:57 »
Para saber si existe algún archivo en particular...

Código: Text
  1. Function FileExist(P :PathStr) :Boolean;
  2.     Var
  3.         Ch :File;
  4.         OK :Boolean;
  5.     Begin
  6.         Assign(Ch, P);
  7.         {$I-}
  8.              Reset(Ch, 1);
  9.              OK := (IOResult=0);
  10.              Close(Ch);
  11.         {$I+}
  12.         FileExist := OK;
  13.     End; {FileExist}
  14.  

Espero que te sea de utilidad. Saludos  ;)

2
Pascal / Re: Encriptar En Pascal
« en: Martes 6 de Julio de 2004, 01:07 »
Quizás ésto te sirva:

Código: Text
  1. {** Encripta una cadena **}
  2. Function EncryptStr(Str, Pwd :String) :String;
  3.     Var
  4.         Result :String;
  5.         Ascii    :Integer;
  6.     Begin
  7.         Result := '';
  8.         For Index := 1 to Length(Str) do
  9.             Begin
  10.                 Ind := (Index Mod Length(Pwd));
  11.                 If (Ind=0) then Ind := Length(Pwd);
  12.                 Ascii :=  Ord(Str[Index]) + Ord(Pwd[Ind]);
  13.                 If (Ascii>255) then Ascii := Ascii - 256;
  14.                 Result := Result + Chr(Ascii);
  15.             End; {For}
  16.         EncryptStr := Result;
  17.     End; {EncryptStr}
  18.  
  19.  
  20. {** Desencripta una cadena **}
  21. Function UnEncryptStr(Str, Pwd :String) :String;
  22.     Var
  23.         Result :String;
  24.         Ascii    :Integer;
  25.     Begin
  26.         Result := '';
  27.         For Index := 1 to Length(Str) do
  28.             Begin
  29.                 Ind := (Index Mod Length(Pwd));
  30.                 If (Ind=0) then Ind := Length(Pwd);
  31.                 Ascii :=  Ord(Str[Index]) - Ord(Pwd[Ind]);
  32.                 If (Ascii<0) then Ascii := Ascii + 256;
  33.                 Result := Result + Chr(Ascii);
  34.             End; {For}
  35.         UnEncryptStr := Result;
  36.     End; {UnEncryptStr}
  37.  
         

Espero que te sea de utilidad. Saludos  ;)

3
Pascal / Re: Leer Archivo Binario Sin Tipo Y Visualizarlos
« en: Viernes 11 de Junio de 2004, 17:35 »
Un Ejemplo:

Código: Text
  1. Program Lee_Archivo_Binario;
  2.  
  3. Type
  4.     TProc = Procedure(Ch :Char);
  5.     PProc = ^TProc;
  6.  
  7. {Va leyendo un archivo binario Byte por Byte, llamado al procedimiento "Proc"}
  8. {después de cada lectura. Le pasa como parámetro el caracter leído}
  9. Procedure LeeBin(Arch :String; Var Proc :PProc);
  10.     Var
  11.         Ch :File;
  12.         Dt :Byte;       {Almacena el Byte leído}
  13.         Ld :Word;      {Cantidad de Bytes que se pudieron leer}        
  14.     Begin
  15.         Assign(Ch, Arch);
  16.         Reset(Ch, 1);
  17.         Repeat
  18.             BlockRead(Ch, Dt, 1, Ld);
  19.              If (Ld=1)  then Proc^(Chr(Dt));
  20.         Until (DosError>0) or (Ld=0);
  21.         Close(Ch);
  22.     End; {LeeBin}
  23.  
  24.  
  25. {Despliega un caracter en pantalla}
  26. Procedure MiProc(Ch :Char);
  27.     Begin
  28.         Write(Ch);
  29.     End; {MiProc}
  30.  
  31.  
  32. Begin
  33.     LeeBin('C:\MIBIN.DAT', @MiProc);
  34.     ReadLn;
  35. End. {Lee_Archivo_Binario}
  36.  



Cualquier duda, postéala por acá. Saludos ;)

4
Pascal / [Código Fuente] Strings dinámicas...
« en: Sábado 29 de Mayo de 2004, 01:12 »
Librería que permite el uso de Strings de largo variable.

Autor: Leo

5
Pascal / Re: Procedure #1. Beep.
« en: Sábado 29 de Mayo de 2004, 01:08 »
¿Has probado lo siguiente?

Código: Text
  1. Procedure Beep;
  2.     Begin
  3.         Write(#7);
  4.     End; {Beep}
  5.  

Saludos ;)

6
Pascal / Re: Como crear un archivo
« en: Viernes 28 de Mayo de 2004, 20:56 »
Parece que se te escapa un detalle: OrgaCiber habla de abrir un archivo ya existente y poder agregar más datos sin alterar los que ya tiene grabados. Respecto a lo del Append, sólo es válido con los archivos de tipo Text. Saludos ;)

7
Pascal / Re: Como crear un archivo
« en: Jueves 27 de Mayo de 2004, 12:57 »
Tal como dice Hao Asakura, utilizando el comando RESET; además, para desplazarte dentro del archivo, utiliza el comando SEEK. Saludos ;)

8
Pascal / Re: Matrices
« en: Martes 25 de Mayo de 2004, 12:59 »
A mi parecer, la disminución en una unidad de los límites de la Matriz son sólo para manejo Interno. Lo importante es que puedas utilizar los índices establecidos en la declaración sin problemas. Saludos ;)

9
Pascal / Re: Organizar los datos de la salida
« en: Lunes 24 de Mayo de 2004, 12:58 »
Reemplaza lo siguiente:

Código: Text
  1. While (resp='s') or (resp='S') do
  2.     Begin
  3.         WriteLn('INGRESE EL NOMBRE DEL ALUMNO:');
  4.         ReadLn(nom);
  5.         WriteLn('EDAD DEL ALUMNO:');
  6.         ReadLn(edad);
  7.         WriteLn('INGRESE EL SEXO DEL ALUMNO:');
  8.         ReadLn(sexo);
  9.         WriteLn('¿ DESEA SEGUIR INGRESANDO MAS DATOS? (S/N)');
  10.         ReadLn(resp);
  11.         cant1:=cant1+1;
  12.         sum1:=sum1+edad;
  13.         cant2:=cant2+1;
  14.         sum2:=sum2+edad;
  15.     end;
  16.  
  17. if sexo='m' then
  18.     Begin
  19.         prom1:=sum1/cant1;
  20.         WriteLn('LA CANTIDAD DE ALUMNOS INGRESADOS ES:',cant1:3:1);
  21.         WriteLn('LA EDAD PROMEDIO DE ALUMNOS INGRESADOS ES:',prom1:3:1);
  22.     End
  23.  
  24. Else
  25.     Begin
  26.         prom2:=sum2/cant2;
  27.         WriteLn('LA CANTIDAD DE ALUMNAS INGRESADOS ES:',cant2:3:1);
  28.         WriteLn('LA EDAD PROMEDIO DE ALUMNAS INGRESADOS ES:',prom2:3:1);
  29.     End;
  30. End.
  31.  


Por...

Código: Text
  1. While (resp='s') or (resp='S') do
  2.     Begin
  3.         Write('INGRESE EL NOMBRE DEL ALUMNO:');
  4.         ReadLn(nom);
  5.         Wrte('EDAD DEL ALUMNO:');
  6.         ReadLn(edad);
  7.         Write('INGRESE EL SEXO DEL ALUMNO:');
  8.         ReadLn(sexo);
  9.         Write('¿ DESEA SEGUIR INGRESANDO MAS DATOS? (S/N)');
  10.         ReadLn(resp);      
  11.         If (sexo='m') or (sexo='M') then
  12.             Begin
  13.                 Inc(Cant1);             {Cantidad de Hombres}
  14.                 Inc(Sum1);             {Suma de edades de Hombres}
  15.             End
  16.         Else
  17.             Begin
  18.                 Inc(Cant2);             {Cantidad de Mujeres}
  19.                 Inc(Sum2);             {Suma de edades de Mujeres}
  20.             End, {If}
  21.     End; {While}
  22.  
  23. Writen('VARONES:');
  24. WriteLn('- Cantidad: ', Cant1);
  25. WriteLn('- Promedio de Edad: ', Sum1 Div Cant1);
  26. WriteLn;
  27. Writen('MUJERES:');
  28. WriteLn('- Cantidad: ', Cant2);
  29. WriteLn('- Promedio de Edad: ', Sum2 Div Cant2);
  30. End.
  31.  


Espero que te sirva. Saludos ;)

10
Pascal / Re: Centrar Texto (#2)
« 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 ;)

11
Pascal / Re: Mejor Opcion A La Hora De Hacer Abms
« en: Martes 11 de Mayo de 2004, 13:20 »
Te podrías crear tu propio Sistema de Bases de Datos, de manera que sea flexible y no se amarre a un grupo de campos pre-definidos.

No sería mala idea que esto quedara como desafío, y entre todos echemos a andar este proyecto :comp:

¿Sugerencias...? :kicking:

Saludos  ;)

12
Pascal / Variables De Ambiente...
« en: Martes 11 de Mayo de 2004, 13:17 »
Compañeros, en Pascal encuentro la funcion GetEnv, que te devuelve el valor de una Variable de Ambiente, pero ¿cómo puedo regresar un resultado modificando una Variable de Ambiente? He intentado haciendo una llamada al Intérprete de Comandos (COMMAND.COM), pero el problema es que cada vez que es llamado crea un nuevo espacio para las Variables de Ambiente, es que es liberado una vez que regresa el control a mi programa. Agradezco desde ya vuestra ayuda. Saludos  ;)

13
Pascal / Re: Reto Para Programadores De Pascal
« en: Martes 11 de Mayo de 2004, 01:48 »
Para el proceso de entregar el dinero en base al efectivo disponible, se podría hacer algo así:


Código: Text
  1. Const
  2.     {Tipo de Moneda. El caracter 'm' representa moneda, y 'b' billete}
  3.     TipoMoneda :Array[1..13] of String[6] = ('b10000', 'b5000', 'b2000', 'b1000',
  4.                                                                'm500', 'm100', 'm50', 'm25',
  5.                                                                'm20, 'm10', 'm5', 'm2', 'm1');
  6.  
  7.     {Cantidad de billetes/Monedas por valor}
  8.     CantMoneda: Array[1..13] of Word = (100, 100, 100, 100, 100, 100, 100,
  9.                                                             100, 100, 100, 100, 100, 100, 100, 100);
  10.  
  11.  
  12.  
  13. Procedure EntregaDinero(Cantidad :LongInt);
  14.     Var
  15.         Indice   :Byte;
  16.         Moneda :Word;
  17.         Err        :Integer;
  18.         CantidadBilletes :Word;
  19.  
  20.     Begin
  21.         WriteLn('Desgloce:');
  22.         For Indice := 1 to SizeOf(TipoMoneda) Div SizeOf(TipoMoneda[1])) do
  23.             Begin
  24.                 Val(Copy(TipoMoneda[Indice], 2, Length(TipoMoneda[Indice])-1),
  25.                       Moneda, Err);
  26.                 CantidadBilletes := Cantidad Div Moneda;
  27.                 If (CantidadBilletes > CantMoneda[Indice]) then
  28.                     CantidadBilletes := CantMoneda[Indice];
  29.                 If (CantidadBilletes > 0) then
  30.                     Begin
  31.                         If (TipoMoneda[Indice]='b') then
  32.                             Write('Billetes')
  33.                         Else
  34.                             Write('Monedas');
  35.                         WriteLn(' de  $', Moneda, ' = ', CantidadBilletes);
  36.                         CantMoneda[Indice] := CantMoneda[Indice] - CantidadBilletes;
  37.                         Cantidad := Cantidad - CantidadBilletes*Moneda;
  38.                     End; {If}
  39.             End; {For 'Indice'}
  40.     End; {EntregaDinero}
  41.  



Espero que esto sea de utilidad. Saludos  ;)

Páginas: [1]