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

Delphi Discussion :

[D10.4.2] Différence de résultat avec la fonction FileAge ?


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de der§en
    Homme Profil pro
    Bretagne
    Inscrit en
    Septembre 2005
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bretagne
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 069
    Par défaut [D10.4.2] Différence de résultat avec la fonction FileAge ?
    Bonjour,

    Le compilateur me disant que utilisation du premier format de FileAge est obsolète, je teste le deuxième format sauf que je n'ai pas les mêmes valeurs en sortie.

    Nom : BugFileAge.jpg
Affichages : 312
Taille : 22,4 Ko

    Est-ce normal ou bien, c'est un bug ?

    Voici le bout de code qui est utilisé dans mon exemple :
    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
    25
    26
    27
    28
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      V1, V2: TDateTime;
      I1, I2: LongInt;
      Fichier: string;
    begin
      Fichier := Application.ExeName;
     
      I1 := FileAge(Fichier);
     
      V1 := FileDateToDateTime(I1);
     
      FileAge(Fichier, V2);
     
      I2 := DateTimeToFileDate(V2);
     
      Edit1.Text := FloatToStr(V1);
      Edit2.Text := FloatToStr(V2);
     
      Edit3.Text := DateTimeToStr(V1);
      Edit4.Text := DateTimeToStr(V2);
     
      Edit5.Text := I1.ToString;
      Edit6.Text := I2.ToString;
     
      Edit7.Text := FloatToStr(I1 - I2);
    end;

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 931
    Billets dans le blog
    6
    Par défaut
    Curieux !
    Si cette référence est juste, la différence de 1 correspond à 100 nanosecondes, pas à 2 secondes !
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre chevronné Avatar de der§en
    Homme Profil pro
    Bretagne
    Inscrit en
    Septembre 2005
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bretagne
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 069
    Par défaut
    Normalement, les valeurs de retours devraient être identique, non, donc, je subodore un bug !

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 598
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 598
    Billets dans le blog
    65
    Par défaut
    Le bogue serait plutôt dans la fonction DateTimeToFileDate que dans FileAge

    si tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     I1:=FileAge(fichier);
      V1 := TFile.GetLastWriteTime(Fichier);
      I1Prime:=DateTimeToFileDate(V1);
    alors I1Prime=I2

    Dans la fonction DateTimeToFileDate les millisecondes ne sont pas prises en compte !?

  5. #5
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    le premier utilise FileTimeToDosDateTime et le second FileTimeToSystemTime, la précision de FileTimeToDosDateTime est limitée aux secondes.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  6. #6
    Membre chevronné Avatar de der§en
    Homme Profil pro
    Bretagne
    Inscrit en
    Septembre 2005
    Messages
    1 069
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Bretagne
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 069
    Par défaut
    Merci de vos retours, je vais avec tout cela, chercher un moyen, d’avoir la même valeur en sortie

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

Discussions similaires

  1. [Débutant] Différence de résultat avec ou sans la boucle for !
    Par hydric dans le forum MATLAB
    Réponses: 1
    Dernier message: 07/06/2017, 01h18
  2. Réponses: 2
    Dernier message: 03/02/2017, 11h59
  3. Erreur de résultat avec la fonction last_value
    Par cristophe0071983 dans le forum Développement
    Réponses: 1
    Dernier message: 01/11/2016, 12h10
  4. Différence de résultat avec requête MATCH
    Par Slayes dans le forum Requêtes
    Réponses: 2
    Dernier message: 04/09/2013, 13h00
  5. [AC-2007] Comment récupérer 2 résultats avec 1 fonction ?
    Par tibofo dans le forum VBA Access
    Réponses: 2
    Dernier message: 04/08/2010, 17h14

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