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 :

Ajout date dans le nom du fichier copié en filestream


Sujet :

Langage Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Par défaut Ajout date dans le nom du fichier copié en filestream
    Bonjour à tous

    Dans mon programme, je fais une copie du fichier listecredit.txt (comme sauvegarde) dans un répertoire \backup
    J'aimerai que le fichier créer ne porte pas le nom exact du fichier source mais qu'il contienne la date et heure du jour.

    Pour cela, j'ai ajouté un DateTimePicker. Je sais comment récupérer la date et heure mais je n'arrive pas à insérer cette variable dans mon code (le code d'origine sans l'ajout est en bas de post)

    j'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    try       // fichier copié dans repertoire destination (backup)
          DT1 := TFileStream.Create(ExtractFilePath(Application.EXEName) + 'backup\listecredit' + madate + '.txt', fmCreate);
    mais ça génère une erreur

    Pour résumé, je voudrais que le nom de fichier soit (ex: listecredit29031717h730) date et heure d'enregistrement du datetimepicker

    A vous lire pour votre aide
    Beauserge



    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
    procedure TForm1.Button4Click(Sender: TObject);
    var
    ST1,DT1 : TFileStream;
    madate: string;
    begin
    DateTimePicker1.DateTime:=now; //on actualise le Datetimpepicker
    madate:=DateToStr(DateTimePicker1.DateTime);  //conversion de la date en string
     
              // on vérifie si le dossier existe déja
    if not DirectoryExists(ExtractFilePath(Application.EXEName)+('\backup')) then
       CreateDir(ExtractFilePath(Application.EXEName)+('\backup'));        //si non il est créee
     
    try           // fichier source dans repertoire source
        ST1 := TFileStream.Create(ExtractFilePath(Application.EXEName) + 'listecredit.txt', fmOpenRead);
     
        try       // fichier copié dans repertoire destination (backup)
          DT1 := TFileStream.Create(ExtractFilePath(Application.EXEName) + 'backup\listecredit.txt', fmCreate);
     
          try
            DT1.CopyFrom(ST1, 0);
           finally
            DT1.free;         
          end;
        finally
          ST1.Free;
     
        end;

  2. #2
    Membre émérite
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Par défaut
    Bonjour,

    l'erreur vient du fait qu'il y a des caractères interdit pour un nom de fichier dans MaDate

    il faut au minimum les virer ou les remplacer Ex.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
      MaDate := StringReplace(MaDate, '/', '', [rfReplaceAll]);
      MaDate := StringReplace(MaDate, ':', '', [rfReplaceAll]);
      MaDate := StringReplace(MaDate, ' ', '', [rfReplaceAll]);
    Cordialement,
    @+

  3. #3
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 089
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 089
    Par défaut
    ou la fonction FormatDateTime dédiée pour cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    madate:=FormatDateTime('yyyymmddhhnnss',DateTimePicker1.DateTime);  //conversion de la date en string
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Expert confirmé
    Avatar de anapurna
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    3 491
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2002
    Messages : 3 491
    Par défaut
    salut


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DT1 := TFileStream.Create(ExtractFilePath(Application.EXEName) +Format('backup\listecredit%s.txt',[FormatDateTime('yyyymmddhhnnss',DateTimePicker1.DateTime)]), fmCreate);

  5. #5
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 679
    Billets dans le blog
    2
    Par défaut
    Comme ShaiLeTroll et anapurna, j'aurai utilisé FormatDateTime mais avec la date et l'heure courante (sans passer par le DateTimePicker1) car il s'agit d'un backup d'un fichier. Le fichier "backupé" peut très bien avoir la date et l'heure au moment où le traitement passe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FormatDateTime('yyyymmddhhnnss',now)
    Mon site - Mes tutoriels - GitHub - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

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

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 937
    Par défaut
    Attention également à ça ExtractFilePath(Application.EXEName) comme répertoire de travail. Ca marche au design et se plante en environnement réel avec un petit access denied

  7. #7
    Membre émérite
    Avatar de Cirec
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    467
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 467
    Par défaut
    Citation Envoyé par ShaiLeTroll Voir le message
    ou la fonction FormatDateTime dédiée pour cela ...
    je dois me faire trop vieux ou je ne pratique pas assez parce que ...
    ... je l'avais complètement zappé celle-la !!!

    du coup pour respecter le prototype initial de Beauserge
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    madate:=FormatDateTime('ddmmyyhh"h"ns',DateTimePicker1.DateTime);

  8. #8
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Octobre 2006
    Messages
    74
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2006
    Messages : 74
    Par défaut
    Merci beaucoup à tous pour vos réponses pertinentes

    J'ai fait un mix avec le code d'Anapurna et le FormatDateTime de Cirec et c'est ce qu'il me fallait à la virgule prés.

    Cordialement
    Beauserge

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

Discussions similaires

  1. [AC-2010] Export requête dans Excel avec ajout de la date dans le nom du fichier
    Par LiliAlex1005 dans le forum VBA Access
    Réponses: 4
    Dernier message: 29/11/2016, 12h04
  2. la date dans le nom du fichier .log
    Par zouuc dans le forum Logging
    Réponses: 5
    Dernier message: 13/02/2009, 12h10
  3. log4j date dans le nom du fichier log ?
    Par yoyo33fc dans le forum Logging
    Réponses: 9
    Dernier message: 31/10/2008, 13h42
  4. Réponses: 5
    Dernier message: 02/06/2008, 07h47
  5. lo4j : date dans le nom du fichier
    Par astrofiles dans le forum Logging
    Réponses: 2
    Dernier message: 30/05/2007, 18h01

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