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 :

Problème de logique !


Sujet :

Langage Delphi

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Ukraine

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 162
    Points : 163
    Points
    163
    Par défaut Problème de logique !
    Bonjour,
    Je dois manipulers des Valuers TTime et TDateTime et TDate,
    voici l'exposé du problème,
    en fait, je dois à partir de deux Valus TTime, détérminer si une valuer TdateTime (obtenue par Now, ou constante) est entre les deux heures spécifiées, mais sachant, que l'une d'elle peut-être après minuit, et que je n'ai pas de Valuer TDate à leur assigner, donc avant de faire des comparaison, je dois obtenir ces valeurs.
    Voici les données connues :

    var
    HeureDebut, HeureFin : TTime; (qui sont connues, par exemple 08:00 et 01:00 (du jour d'après)
    HeureVoulue : TDateTime; (qui est connue)

    Une idée sur comment je pourrais m'y prendre pour savoir si hEUREVoulue est située en les deux autres ??

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 944
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 944
    Points : 5 656
    Points
    5 656
    Par défaut
    Noe,

    À ma connaissance, aucun logiciel ne sait deviner la valeur de données inexistantes.
    Si les cons volaient, il ferait nuit à midi.

  3. #3
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Salut

    Oula, pas facile a comprendre ...
    Voila comment je verrai le truc (si j'ai bien compris) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function VerifierIntervalle (HeureDebut, HeureFin : TTime; DateVoulue : TDateTime):boolean;
    var DateDebut, DateFin : TDateTime;
    begin
      DateDebut:=Trunc(DateVoulue)+HeureDebut;
      DateFin:=Trunc(DateVoulue)+HeureFin;
     
      if HeureFin< HeureDebut then DateFin:=DateFin+1;
     
      Result:=(DateVoulue=>DateDebut) and (DateVoulue<=DateFin);
    end;
    Bonne chance

  4. #4
    Membre éprouvé
    Avatar de Dr.Who
    Inscrit en
    Septembre 2009
    Messages
    980
    Détails du profil
    Informations personnelles :
    Âge : 45

    Informations forums :
    Inscription : Septembre 2009
    Messages : 980
    Points : 1 294
    Points
    1 294
    Par défaut
    un petit tours dans l'aide et dans l'unité DateUtils.
    [ Sources et programmes de Dr.Who | FAQ Delphi | FAQ Pascal | Règlement | Contactez l'équipe ]
    Ma messagerie n'est pas la succursale du forum... merci!

  5. #5
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 355
    Points : 3 132
    Points
    3 132
    Par défaut
    Bonjour,

    je crois que les TTime de tes DateTimePicker sont des TDateTime. Il te suffit donc d'utiliser la fonction CompareDateTime.

    A+ Charly

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Ukraine

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 162
    Points : 163
    Points
    163
    Par défaut
    merci pour vos réponses,

    pour mick605,
    c'est à peu le truc, mais le problème est "DateVoulue", je ne l'ai pas, et celle que je veux essayer de trouver (évidemment, je vais pas deviner), parceque si je trouve la date, il est facile de déterminer la fourchette (donc des valuers qui serviront à comparer) mais pour les moments je n'ai que les valurs TTime, donc impossible d'établir une relation correcte evec des TDateTime.

  7. #7
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 944
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 944
    Points : 5 656
    Points
    5 656
    Par défaut
    Soa,

    Comme déjà dit, tu ne pourras pas si tu n'as pas d'autre information.

    (Si tu trouves, tu pourras postuler pour remplacer Mme Soleil )
    Si les cons volaient, il ferait nuit à midi.

  8. #8
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 738
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 738
    Points : 13 273
    Points
    13 273
    Par défaut
    Je rejoins Mick.

    Peut importe la date voulue (puisqu'il n'y en a pas), mais dés que l'heure de fin est plus petite que l'heure de début, l'événement se termine forcément le lendemain.

  9. #9
    Membre expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 355
    Points : 3 132
    Points
    3 132
    Par défaut
    Bonjour,

    d'accord avec tout le monde : si tes TTime proviennent d'un DateTimePicker , ils comportent la date du jour donc il faut tester l'heure :

    si heureDebut > Heure fin c'est le lendemain, mais cela ne défini pas une plage de temps pour tester si heureVoulue est entre les 2

    A+

    Charly

  10. #10
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Citation Envoyé par djiga4me Voir le message
    merci pour vos réponses,

    pour mick605,
    c'est à peu le truc, mais le problème est "DateVoulue", je ne l'ai pas, et celle que je veux essayer de trouver (évidemment, je vais pas deviner), parceque si je trouve la date, il est facile de déterminer la fourchette (donc des valuers qui serviront à comparer) mais pour les moments je n'ai que les valurs TTime, donc impossible d'établir une relation correcte evec des TDateTime.
    Que contient alors HeureVoulue ? (qui est de type TDateTime)

  11. #11
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Ukraine

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 162
    Points : 163
    Points
    163
    Par défaut
    salut mick,
    normalement ta fonction marche très bien (j'ai juste ajouté une condition de plus), mais je l'ai pas encore testé sur delphi, mais je l'ai testé sur papier, et je pense que ça marche très bien. et j'ai eu tort dans ma dernière réponse, en fait on a tout ce qu'il faut (et par là je veux dire DateVoulue) donc tout marche bien merci.
    Je testerai sous delphi et je vais voir !!

  12. #12
    Membre chevronné

    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2009
    Messages
    935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2009
    Messages : 935
    Points : 1 765
    Points
    1 765
    Par défaut
    Citation Envoyé par djiga4me Voir le message
    salut mick,
    normalement ta fonction marche très bien (j'ai juste ajouté une condition de plus), mais je l'ai pas encore testé sur delphi, mais je l'ai testé sur papier, et je pense que ça marche très bien. et j'ai eu tort dans ma dernière réponse, en fait on a tout ce qu'il faut (et par là je veux dire DateVoulue) donc tout marche bien merci.
    Je testerai sous delphi et je vais voir !!
    Ok, poste ton code final et n'oublies pas le résolu

    Citation Envoyé par droggo Voir le message
    (Si tu trouves, tu pourras postuler pour remplacer Mme Soleil )
    Je crois qu'il peut ^^

  13. #13
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Ukraine

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 162
    Points : 163
    Points
    163
    Par défaut
    Ok, le problème es réglé, avec la condition que j'ai ajoutée tout fonctionne bien.
    Merci.
    Et pour le code je le publie rapidement dans mon prochain message sans faute.

  14. #14
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2008
    Messages
    162
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Ukraine

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2008
    Messages : 162
    Points : 163
    Points
    163
    Par défaut
    donc, voilàle code final :

    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
     
    Var // variables globales (déjà initilisées dans une autre partie du code)
        HeureDebut, HeureFin : TTime;
     
    Function XX(HeureVoulue : TDateTime) : Boolean;
    var   DateDebut, DateFin : TDateTime;
    begin    
      DateDebut:=DateOf(HeureVoulue)+HeureDebut;
      DateFin:=DateOf(HeureVoulue)+HeureFin;
      if HeureFin<HeureDebut then DateFin:=IncDay(DateFin,+1);
      if TimeOf(HeureVoulue)<HeureDebut then
      begin
        DateFin:=IncDay(DateFin,-1);
        DateDebut:=IncDay(DateDebut,-1);
      end;
      Result:=(HeureVoulue>=DateDebut) and (HeureVoulue<=DateFin);
    end;

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

Discussions similaires

  1. problèmes de logique ! ne fait pas dans l'ordre.
    Par djibb dans le forum Tkinter
    Réponses: 3
    Dernier message: 29/05/2007, 17h06
  2. Problème de logique
    Par soso78 dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 03/04/2007, 22h05
  3. Problème de logique :)
    Par deaven dans le forum Oracle
    Réponses: 1
    Dernier message: 13/10/2006, 18h49
  4. Réponses: 10
    Dernier message: 14/07/2006, 20h22
  5. Petit problème de logique...
    Par insomniak dans le forum C++
    Réponses: 15
    Dernier message: 31/10/2005, 20h13

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