IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Comment convertir un ULONG en TTimeStamp ?


Sujet :

Langage Delphi

  1. #1
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut Comment convertir un ULONG en TTimeStamp ?
    Bonjour,

    J'ai une donnée en ULONG qui est un timestamp, je dois la convertir en TTimeStamp pour ensuite l'utiliser en TDateTime mais je n'y arrive pas...

    Comment feriez-vous ?

    Merci,
    ZiP

  2. #2
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Ben tu transtypes ton ULONG en TimeStamp, et ensuite tu utilises TimeStampToDateTime, de l'unité SysUtils :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DateTime := TimeStampToDateTime(TTimeStamp(Value));
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  3. #3
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Bonsoir,

    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
      TEnregistrementMeteo = packed record
           Inconnu                : ULONG;
           Horaire                : ULONG;
           PressionAbsolue        : Single;
           VentVitesse            : Single;
           VentDirection          : ULONG;
           PluieAbsolue           : Single;
           TemperatureInterieure  : Single;
           TemperatureExterieure  : Single;
           HumiditeInterieure     : Short;
           HumiditeExterieure     : Short;
      end;
     
    DateTimeToStr(TimeStampToDateTime(TTimeStamp(gEnregistrementsMeteo[i-1].Horaire)))
    J'ai l'erreur suivante :
    [DCC Erreur] MPrincipale.pas(101): E2089 Transtypage incorrect
    Que faire ?

    Merci,
    ZiP

  4. #4
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 823
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 823
    Points : 15 244
    Points
    15 244
    Par défaut
    Citation Envoyé par [ZiP] Voir le message
    Que faire ?
    F1 sur TTimeStamp, car on dirait que tu as mal posé le problème dans ton premier post :
    J'ai une donnée en ULONG qui est un timestamp
    F1 sur TDateTime t'apportera peut-être la solution.
    Mes 2 cts,
    --
    jp
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  5. #5
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Bonsoir,

    En effet, j'ai une donnée de type ULONG qui represente un timestamp, comme par exemple : Horaire = 8,8396824297e+21

    Je vais regarder dans l'aide...

    Mais je suis un peu perdu là

    ULong [4] Timestamp seconds from 1/1/1900 00:00:00 (GMT)
    ZiP

  6. #6
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 823
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 823
    Points : 15 244
    Points
    15 244
    Par défaut
    Ceci fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    type
      TEnregistrementMeteo = packed record
        Inconnu                : ULONG;
    //    Horaire                : ULONG;
        Horaire                : TTimeStamp;
        PressionAbsolue        : Single;
        VentVitesse            : Single;
        VentDirection          : ULONG;
        PluieAbsolue           : Single;
        TemperatureInterieure  : Single;
        TemperatureExterieure  : Single;
        HumiditeInterieure     : Short;
        HumiditeExterieure     : Short;
      end;
     
    var
      em : TEnregistrementMeteo;
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
      em.Horaire.Date := 1196; // pourquoi pas ?
      em.Horaire.Time := 9125; // pourquoi pas ?
      Form1.Caption := DateTimeToStr(TimeStampToDateTime(TTimeStamp(em.Horaire))); // = 10/04/0004 00:00:09 
    end;
    Mes 2 cts,
    --
    jp
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  7. #7
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    Ton exemple compile mais ne fonctionne pas avec mes données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
      TEnregistrementMeteo = packed record
           Inconnu                : ULONG;
           Horaire                : TTimeStamp;//ULONG;
           PressionAbsolue        : Single;
           VentVitesse            : Single;
           VentDirection          : ULONG;
           PluieAbsolue           : Single;
           TemperatureInterieure  : Single;
           TemperatureExterieure  : Single;
           HumiditeInterieure     : Short;
           HumiditeExterieure     : Short;
      end;
    DateTimeToStr(TimeStampToDateTime(gEnregistrementsMeteo[i-1].Horaire))
    J'ai l'erreur suivante :
    21:53:49 -> '1149104947.-890040616' n'est pas une heure correcte
    Mes données :
    Horaire = -890040616

    Le format de ma donnée :
    ULong [4] Timestamp seconds from 1/1/1900 00:00:00 (GMT)
    Merci pour votre aide,
    ZiP

  8. #8
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 823
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 823
    Points : 15 244
    Points
    15 244
    Par défaut
    Salut,

    À mon avis tu mélanges la notion de Time Stamp (en deux mots) et l'objet TTimeStamp...

    Ça vient d'où, ça :
    ULong [4] Timestamp seconds from 1/1/1900 00:00:00 (GMT)
    --
    jp
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  9. #9
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    En effet, je pense que j'ai confondu les deux notions.

    Je vais corriger mon code.

    Je vous tiens informés.

    Merci,
    ZiP

  10. #10
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    La donnée ne semble pas être correcte, à moins que je me trompe...

    Ci-joint les données :
    http://cjoint.com/?lCiWJOwHG3

    Le format de celle-ci :
    Les enregistrements de 36 octets :
    ULONG Unknown;
    ULONG timestamp;
    float absolute_pressure;
    float wind_speed;
    ULONG wind_direction;
    float absolute_rainfall;
    float indoor_temperature;
    float outdoor_temperature;
    unsigned short indoor_humidity;
    unsigned short outdoor_humidity;
    La donnée timestamp ne semble pas êrtre correcte.

    Merci pour votre aide,
    ZiP

  11. #11
    Membre averti
    Homme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Octobre 2006
    Messages
    970
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Octobre 2006
    Messages : 970
    Points : 381
    Points
    381
    Par défaut
    J'ai donc résolu mon problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
      TEnregistrementMeteo = packed record
           Inconnu                : LongWord;
           Horaire                : LongWord;
           PressionAbsolue        : Single;
           VentVitesse            : Single;
           VentDirection          : LongWord;
           PluieAbsolue           : Single;
           TemperatureInterieure  : Single;
           TemperatureExterieure  : Single;
           HumiditeInterieure     : Short;
           HumiditeExterieure     : Short;
      end;
    DateTimeToStr(EncodeDate(1970,1,1) + (gEnregistrementsMeteo[i-1].Horaire - 2208988800) / 86400)
    Cordialement,
    ZiP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [C++ 2.0] Comment convertir un ULONG en System::DateTime ?
    Par hrp dans le forum Framework .NET
    Réponses: 1
    Dernier message: 22/06/2006, 20h20
  2. Réponses: 6
    Dernier message: 16/01/2006, 20h33
  3. Comment convertir un lecteur du NTFS au Fat32
    Par Cyberman dans le forum Composants
    Réponses: 8
    Dernier message: 24/11/2003, 21h38
  4. Réponses: 3
    Dernier message: 28/09/2003, 10h46
  5. Comment convertir un Jpeg en .ico
    Par Valéry dans le forum Outils
    Réponses: 5
    Dernier message: 04/07/2003, 09h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo