Lire un TDateTime (delphi) - C - Programmation
Marsh Posté le 01-12-2006 à 13:45:47
Marsh Posté le 01-12-2006 à 19:38:46
Elmoricq a écrit :
|
Solution 1 : Je ne peux malheureusement plus toucher au programme Delphi, il est déjà "assez" répendu dans sa version actuelle et je pense que ça va être un gros merdier si une variante sort.
Solution 2 : C'est ce que j'ai commencé à faire. Le double tient sur 8 octets.
Quand je regarde dans un éditeur hexadécimal, la valeur d'aujourd'hui "01/12/2006" est comme suit : 80 11 E3 40. Mais bon, je capte vraiment pas comment on tombe là-dessus.
Extrait de la doc :
Delphi syntax: |
Si vous avez une piste, n'hésitez pas. Merci :-)
Marsh Posté le 01-12-2006 à 20:50:54
Inekman a écrit : Solution 2 : C'est ce que j'ai commencé à faire. Le double tient sur 8 octets. Quand je regarde dans un éditeur hexadécimal, la valeur d'aujourd'hui "01/12/2006" est comme suit : 80 11 E3 40. |
Un peu de cohérence ne ferai pas de mal...
Marsh Posté le 01-12-2006 à 21:15:59
Oui absolmument, j'ai oublié d'ajouter les 4 octets "00 00 00 00" qui se trouvent avant, ce qui donnent "00 00 00 00 80 11 E3 40".
Marsh Posté le 01-12-2006 à 21:51:51
Si tu le traite comme un double, ça se lit comme 39052,0. soit 3952 jours entiers et 0 fraction de 24 heures à compter du 31/12/1899 à 12 heures. l'avantage du double c'est de pouvoir faire des comparaisons et des différences de dates facilement.
Marsh Posté le 01-12-2006 à 21:52:35
Inekman a écrit : Oui absolmument, j'ai oublié d'ajouter les 4 octets "00 00 00 00" qui se trouvent avant, ce qui donnent "00 00 00 00 80 11 E3 40". |
Est-ce que ca signifie 0x40E3118000000000 (LSB first, little endian), et si oui, quel est la définition du format des flottants en Delphi ?
Code :
|
Je trouve bien
Press ENTER to continue. |
mais sans spec, je suis incapable de dire si c'est correct...
Marsh Posté le 04-12-2006 à 09:26:54
videaste95 a écrit : Si tu le traite comme un double, ça se lit comme 39052,0. soit 3952 jours entiers et 0 fraction de 24 heures à compter du 31/12/1899 à 12 heures. l'avantage du double c'est de pouvoir faire des comparaisons et des différences de dates facilement. |
Merci pour l'explication
Marsh Posté le 01-12-2006 à 12:07:46
Salut,
Je souhaite lire une valeur TDateTime (Delphi) se trouvant dans l'entête d'un fichier depuis un programme que je code en C. Cependant j'éprouve quelques difficultés sur la manière dont je dois m'y prendre.
En cherchant dans la doc, j'ai appris que ce type enregistre la date dans un "double" et que la valeur correspond au nombre de jours écoulés entre la date d'aujourd'hui et le 30 (ou 31)/12/1899.
Je ne sais pas comment m'y prendre, avez-vous une idée ?
Merci.