[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