|
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
« en: Martes 8 de Febrero de 2005, 00:57 »
Para saber si existe algún archivo en particular... Function FileExist(P :PathStr) :Boolean; Var Ch :File; OK :Boolean; Begin Assign(Ch, P); {$I-} Reset(Ch, 1); OK := (IOResult=0); Close(Ch); {$I+} FileExist := OK; End; {FileExist}
Espero que te sea de utilidad. Saludos
2
« en: Martes 6 de Julio de 2004, 01:07 »
Quizás ésto te sirva: {** Encripta una cadena **} Function EncryptStr(Str, Pwd :String) :String; Var Result :String; Ascii :Integer; Begin Result := ''; For Index := 1 to Length(Str) do Begin Ind := (Index Mod Length(Pwd)); If (Ind=0) then Ind := Length(Pwd); Ascii := Ord(Str[Index]) + Ord(Pwd[Ind]); If (Ascii>255) then Ascii := Ascii - 256; Result := Result + Chr(Ascii); End; {For} EncryptStr := Result; End; {EncryptStr} {** Desencripta una cadena **} Function UnEncryptStr(Str, Pwd :String) :String; Var Result :String; Ascii :Integer; Begin Result := ''; For Index := 1 to Length(Str) do Begin Ind := (Index Mod Length(Pwd)); If (Ind=0) then Ind := Length(Pwd); Ascii := Ord(Str[Index]) - Ord(Pwd[Ind]); If (Ascii<0) then Ascii := Ascii + 256; Result := Result + Chr(Ascii); End; {For} UnEncryptStr := Result; End; {UnEncryptStr}
Espero que te sea de utilidad. Saludos
3
« en: Viernes 11 de Junio de 2004, 17:35 »
Un Ejemplo: Program Lee_Archivo_Binario; Type TProc = Procedure(Ch :Char); PProc = ^TProc; {Va leyendo un archivo binario Byte por Byte, llamado al procedimiento "Proc"} {después de cada lectura. Le pasa como parámetro el caracter leído} Procedure LeeBin(Arch :String; Var Proc :PProc); Var Ch :File; Dt :Byte; {Almacena el Byte leído} Ld :Word; {Cantidad de Bytes que se pudieron leer} Begin Assign(Ch, Arch); Reset(Ch, 1); Repeat BlockRead(Ch, Dt, 1, Ld); If (Ld=1) then Proc^(Chr(Dt)); Until (DosError>0) or (Ld=0); Close(Ch); End; {LeeBin} {Despliega un caracter en pantalla} Procedure MiProc(Ch :Char); Begin Write(Ch); End; {MiProc} Begin LeeBin('C:\MIBIN.DAT', @MiProc); ReadLn; End. {Lee_Archivo_Binario}
Cualquier duda, postéala por acá. Saludos
4
« en: Sábado 29 de Mayo de 2004, 01:12 »
Librería que permite el uso de Strings de largo variable.
Autor: Leo
5
« en: Sábado 29 de Mayo de 2004, 01:08 »
¿Has probado lo siguiente? Procedure Beep; Begin Write(#7); End; {Beep}
Saludos
6
« 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
« 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
« 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
« en: Lunes 24 de Mayo de 2004, 12:58 »
Reemplaza lo siguiente: While (resp='s') or (resp='S') do Begin WriteLn('INGRESE EL NOMBRE DEL ALUMNO:'); ReadLn(nom); WriteLn('EDAD DEL ALUMNO:'); ReadLn(edad); WriteLn('INGRESE EL SEXO DEL ALUMNO:'); ReadLn(sexo); WriteLn('¿ DESEA SEGUIR INGRESANDO MAS DATOS? (S/N)'); ReadLn(resp); cant1:=cant1+1; sum1:=sum1+edad; cant2:=cant2+1; sum2:=sum2+edad; end; if sexo='m' then Begin prom1:=sum1/cant1; WriteLn('LA CANTIDAD DE ALUMNOS INGRESADOS ES:',cant1:3:1); WriteLn('LA EDAD PROMEDIO DE ALUMNOS INGRESADOS ES:',prom1:3:1); End Else Begin prom2:=sum2/cant2; WriteLn('LA CANTIDAD DE ALUMNAS INGRESADOS ES:',cant2:3:1); WriteLn('LA EDAD PROMEDIO DE ALUMNAS INGRESADOS ES:',prom2:3:1); End; End.
Por... While (resp='s') or (resp='S') do Begin Write('INGRESE EL NOMBRE DEL ALUMNO:'); ReadLn(nom); Wrte('EDAD DEL ALUMNO:'); ReadLn(edad); Write('INGRESE EL SEXO DEL ALUMNO:'); ReadLn(sexo); Write('¿ DESEA SEGUIR INGRESANDO MAS DATOS? (S/N)'); ReadLn(resp); If (sexo='m') or (sexo='M') then Begin Inc(Cant1); {Cantidad de Hombres} Inc(Sum1); {Suma de edades de Hombres} End Else Begin Inc(Cant2); {Cantidad de Mujeres} Inc(Sum2); {Suma de edades de Mujeres} End, {If} End; {While} Writen('VARONES:'); WriteLn('- Cantidad: ', Cant1); WriteLn('- Promedio de Edad: ', Sum1 Div Cant1); WriteLn; Writen('MUJERES:'); WriteLn('- Cantidad: ', Cant2); WriteLn('- Promedio de Edad: ', Sum2 Div Cant2); End.
Espero que te sirva. Saludos
10
« 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
« 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 ¿Sugerencias...? Saludos
12
« 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
« 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í: Const {Tipo de Moneda. El caracter 'm' representa moneda, y 'b' billete} TipoMoneda :Array[1..13] of String[6] = ('b10000', 'b5000', 'b2000', 'b1000', 'm500', 'm100', 'm50', 'm25', 'm20, 'm10', 'm5', 'm2', 'm1'); {Cantidad de billetes/Monedas por valor} CantMoneda: Array[1..13] of Word = (100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100); Procedure EntregaDinero(Cantidad :LongInt); Var Indice :Byte; Moneda :Word; Err :Integer; CantidadBilletes :Word; Begin WriteLn('Desgloce:'); For Indice := 1 to SizeOf(TipoMoneda) Div SizeOf(TipoMoneda[1])) do Begin Val(Copy(TipoMoneda[Indice], 2, Length(TipoMoneda[Indice])-1), Moneda, Err); CantidadBilletes := Cantidad Div Moneda; If (CantidadBilletes > CantMoneda[Indice]) then CantidadBilletes := CantMoneda[Indice]; If (CantidadBilletes > 0) then Begin If (TipoMoneda[Indice]='b') then Write('Billetes') Else Write('Monedas'); WriteLn(' de $', Moneda, ' = ', CantidadBilletes); CantMoneda[Indice] := CantMoneda[Indice] - CantidadBilletes; Cantidad := Cantidad - CantidadBilletes*Moneda; End; {If} End; {For 'Indice'} End; {EntregaDinero}
Espero que esto sea de utilidad. Saludos
Páginas: [1]
|
|
|