[eside-ghost] Problema con free pascal
Jon Ander Peñalba
jonansgames en yahoo.es
Jue Oct 19 07:50:43 CEST 2006
albertito escribió:
> 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
>>>
>>
>>
>
>
jejejejejeje
Gracias ;-)
______________________________________________
LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com
Más información sobre la lista de distribución eside-ghost