Inclure la date et l'heure au nom de fichier [Résolu]

Messages postés
42
Date d'inscription
samedi 3 août 2013
Dernière intervention
15 août 2014
- - Dernière réponse : f0xi
Messages postés
4307
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
- 5 août 2013 à 21:12
Bonjour,
Comment puis-je avec ce code :
NomFich:='E:\Journal alarmes CMR\alarmes CMR.doc ';
memo.Lines.SaveToFile(NomFich);
inclure dans le nom de fichier la date et l'heure d'enregistrement ?
Sachant que dans mon programme j'ai :
Edit1.Text := DateToStr(Date);
Edit2.Text := TimeToStr(Time);
Merci d'avance
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Messages postés
423
Date d'inscription
samedi 17 mai 2003
Dernière intervention
4 août 2018
15
1
Merci
Tu peux par exemple insérer la date et l'heure sous la forme :
[yyyymmddhhmmss] juste avant l'extension du fichier.
Voici un code simple qui permettra de le faire.
// Retourne un string sous la forme "yyyymmddhhmmss" :
function AllowedStrDateTime(const sDate, sTime: string): string;
var
  AllowedStrDate, AllowedStrTime: string;
begin
  AllowedStrDate := Copy(sDate, 7, 4) + Copy(sDate, 4, 2) + Copy(sDate, 1, 2);
  AllowedStrTime := Copy(sTime, 1, 2) + Copy(sTime, 4, 2) + Copy(sTime, 7, 2);
  Result := AllowedStrDate + AllowedStrTime;
end;

// et le timer déclenche ce code :
var
  NomFich: string;
  Ext: string;
  AllowedDateTime: string;
begin
  NomFich := 'E:\Journal alarmes CMR\alarmes CMR.doc ';
  Ext := ExtractFileExt(NomFich);
  Delete(NomFich, Pos(Ext, NomFich), Length(Ext));
  AllowedDateTime := AllowedStrDateTime(Edit1.Text, Edit2.Text);
  NomFich := Format('%s [%s]%s', [NomFich, LegalDateTime, Ext]);
  Memo.Lines.SaveToFile(NomFich);
end;


Si tu débutes avec Delphi, je te conseille d'aller voir l'aide (F1) concernant les fonctions de traitement des strings :
Delete, Copy, Pos, Length, ExtractFilePath, ExtractFileExt, Format, etc...
--

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 86 internautes nous ont dit merci ce mois-ci

Commenter la réponse de korgis
Messages postés
4307
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
34
1
Merci
Tu peux t'amuser à recréer une structure de dossier avec les dates :

var Y, M, D,H,N,S,Z : word;
   Path,FileName : string;
begin
  DecodeDate( Now, Y, M , D);
  DecodeTime( Now, H, N, S, Z);

  Path := format('E:\Journaux Alarmes CMR\%.4d\%.2d\%.2d\',[Y,M,D]);
  if Not directoryExists(Path) then
    forceDirectories(Path);

  FileName := format('%s\journal-%.2d-%.2d-%2d-%.4d.txt',[Path,H,N,S,Z]);
  (*Objet*).saveToFile(FileName);
end;

________________________________________________________
[ besoin de câbles audio, vidèo, informatique pas cher ?]

Dire « Merci » 1

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 86 internautes nous ont dit merci ce mois-ci

korgis
Messages postés
423
Date d'inscription
samedi 17 mai 2003
Dernière intervention
4 août 2018
15 -
Oui, bien vu.
Et "codé à la volée"...
Sans remettre en question le principe du code, je signale qu'il vaudra mieux remplacer CreateDirectory ou CreateDir par ForceDirectories.
korgis
Messages postés
423
Date d'inscription
samedi 17 mai 2003
Dernière intervention
4 août 2018
15 -
P-S: où est passé f0xi dans le "Top contributeurs" ?
Ainsi que d'autre d'ailleurs...
f0xi
Messages postés
4307
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
34 -
oui codé à la volé sans debug bien sur :) juste pour le principe.

corrigé :)

le Top ... rien a faire du Top :)
korgis
Messages postés
423
Date d'inscription
samedi 17 mai 2003
Dernière intervention
4 août 2018
15 -
"le Top ... rien a faire du Top :)"
Ouais... c'était plus flatteur quand ça s'appelait le Top des Membres... ;-P
Commenter la réponse de f0xi
Messages postés
423
Date d'inscription
samedi 17 mai 2003
Dernière intervention
4 août 2018
15
0
Merci
Sous quelle forme veux-tu écrire les dates et heures (sachant que les caractères ":" et "/" ne sont pas autorisés pour les noms de fichiers ?
Je te conseille d'utiliser les méthodes "ExtractFileExt" et "Format".
Commenter la réponse de korgis
Messages postés
42
Date d'inscription
samedi 3 août 2013
Dernière intervention
15 août 2014
0
Merci
Merci Korgis pour ta réponse,
Peut importe le format du moment que l'on puisse comprendre la date et l'heure d'enregistrement du fichier.
En fait, je souhaite réaliser un programme qui enregistre le contenu d'un memo automatiquement toutes les 24H et egalement qui propose un enregistrement immediat par l'appui sur un bouton.
lorsque je tape ce code,
NomFich:='E:\Journal alarmes CMR\alarmes CMR.doc ';
memo.Lines.SaveToFile(NomFich);
l'enregistrement s'effectue bien, mais à chaque appui, le précédent est écrasé. C'est pour cela qu'avec l'info date et heure je pense que cela réglerai mon Pb.
De plus pour l'enregistrement toutes les 24H, je pense avec un Timer surveiller le passage à 0h00minOOs.
Qu'en pense tu?
f0xi
Messages postés
4307
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
34 -
pour sauver à une heure bien précise :

function getTimeCodeStr: string;
begin
  DateTimeToString(result, 'yyyy-mm-dd-hhnnss', now);
end;

function TForm1.SyncTimer: word; { créée dans le public de TForm1 }
var H,N,S,Z: word;
begin
  decodeTime(now, H, N, S, Z);
  { synchro du timer, 
    dans 1 heure - le temps (M,S) déjà écoulé 
  }
  Timer1.Interval := 3600000 - (N*60000 + S*1000);
  { si on démarre le programme à 12h45 et 34secondes,
    3600000 - (2700000 + 34000) = 866000 = 
    test dans 14.43 minutes
  }
  result := H;
end;

procedure TForm1.Form1Create(Sender: TObject);
begin
  SyncTimer;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if SyncTimer in [4,8,12,16,20,0] then { sauve toute les 4 heures }
    Journalisation.SaveToFile('E:\Journaux\Journal-'+getTimeCode+'.txt');
end;

procedure TForm1.ButtonSaveClick(Sender: TObject);
begin
  Journalisation.SaveToFile('E:\Journaux\Journal-manualsave-'+getTimeCode+'.txt');
end;
Commenter la réponse de marin1617

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.