[eside-ghost] Problema con free pascal
albertito
atetinho en gmail.com
Jue Oct 19 00:46:21 CEST 2006
hola de nuevo,
albertito escribió:
> hola!
>
> erzapito escribió:
>> Jon Ander Peñalba escribió:
>>> Hola a todos ;-)
>>>
>>> He estado haciendo algunas practicas de la asignatura de
>>> programación de 1º (pascal). Lo primero que hice fue mirar los
>>> programas alternativos que había en la página de e-ghost e instale
>>> el Free pascal. Hasta aquí todo bien, el problema surge al compilar
>>> la primera practica.
>>>
>>> (...)
>>> /En contra de lo que cabria esperar, el resultado es el siguiente:/
>>>
>>> *Introduce el tiempo: 172814
>>>
>>> El resultado es:
>>> Días: 0
>>> Horas: -6
>>> Minutos: -36
>>> Segundos: -34
>>>
>>> */No me convencía el resultado, así que probé con GNU Pascal, y el
>>> resultado era el correcto:
>>> *
>>> /Introduce el tiempo: 172814
>>>
>>> El resultado es:
>>> Días: 2
>>> Horas: 0
>>> Minutos: 0
>>> Segundos: 14
>>>
>>> /*¿Alguna idea de porque Free Pascal hace eso?
>>>
>>> PD: He añadido GNU Pascal a la lista de programas alternativos, que
>>> no estaba ;-)
>>>
>>> ______________________________________________ LLama Gratis a
>>> cualquier PC del Mundo. Llamadas a fijos y móviles desde 1 céntimo
>>> por minuto. http://es.voice.yahoo.com
>>> _______________________________________________
>>> eside-ghost mailing list
>>> eside-ghost en deusto.es
>>> https://listas.deusto.es/mailman/listinfo/eside-ghost
>>>
>> puede ser el tipo de datos, 24*60*60 a lo mejor es mayor que el int
>> de freepascal, prueba a declararlos con un tipo más grande.
> alex, me has quitado la respuesta del teclado. efectivamente, el
> problema es que el tipo de datos 'integer' de Pascal no es lo
> suficientemente grande como para almacenar el dato que necesitas. Para
> solucionar el problema, usa el tipo de datos 'longint'.
> de todos modos, al compilar probaste la opción "-MDelphi" que genera
> el .exe con soporte para Delphi? Igual te hubiese dicho algo.
bueno, me respondo a mí mismo. Lo que había dicho es correcto. Sabía que
el tipo de datos es demasiado pequeño. Pero el problema viene porque ese
resultado de 24*60*60 no se almacena en "ningún sitio"(en ninguna
variable definida por el usuario) y elcompilador lo almacena en una zona
de memoria para tipos 'integer'. Imagino que todo esto nos quedará más
claro si cogemos el manual de referencia de FreePascal. Efectivamente,
tras ojear dicho manual nos encontramos con lo siguiente:
'The integer type maps to the smallint type in the default Free Pascal
mode. It maps to either a longint or int64 in either Delphi or ObjFPC mode.'
por tanto, el problema se soluciona poniendo el flag que habia indicado
con anterioridad, es decir, "-MDelphi"; realizando una conversión al
tipo "longint"; pero porque genera un código compatible con Delphi.
bueno, creo que es hora de dejar el asunto porque es más una pregunta de
programación; y es hora de irse a dormir :-).
>
> agur y suerte!
agur!
>> _______________________________________________
>> eside-ghost mailing list
>> eside-ghost en deusto.es
>> https://listas.deusto.es/mailman/listinfo/eside-ghost
>>
>
>
--
albertito
Blog Personal: http://www.ifelsedeveloper.blogia.com
Página Personal: http://atetinho.googlepages.com/home
IMPORTANTE:
Por favor, si me mandas correos con copia a varias personas, pon mi dirección de correo en copia oculta (CCO), para evitar que acabe en montones de sitios, eliminando mi privacidad, favoreciendo la propagación de virus y la proliferación del SPAM.
Más información sobre la lista de distribución eside-ghost