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
- 3 août 2013 à 11:09 - Dernière réponse :
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
9 mars 2018
- 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

9 réponses

Meilleure réponse
Messages postés
423
Date d'inscription
samedi 17 mai 2003
Dernière intervention
4 août 2018
- 3 août 2013 à 15:26
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...
--

Merci korgis 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Commenter la réponse de korgis
Meilleure réponse
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
9 mars 2018
- Modifié par f0xi le 5/08/2013 à 13:13
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 ?]

Merci f0xi 1

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 86 internautes ce mois-ci

Messages postés
423
Date d'inscription
samedi 17 mai 2003
Dernière intervention
4 août 2018
- 4 août 2013 à 13:19
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.
Messages postés
423
Date d'inscription
samedi 17 mai 2003
Dernière intervention
4 août 2018
- 4 août 2013 à 13:21
P-S: où est passé f0xi dans le "Top contributeurs" ?
Ainsi que d'autre d'ailleurs...
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
9 mars 2018
- 5 août 2013 à 12:43
oui codé à la volé sans debug bien sur :) juste pour le principe.

corrigé :)

le Top ... rien a faire du Top :)
Messages postés
423
Date d'inscription
samedi 17 mai 2003
Dernière intervention
4 août 2018
- 5 août 2013 à 13:44
"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
- 3 août 2013 à 13:38
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
- 3 août 2013 à 14:12
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?
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
9 mars 2018
- 5 août 2013 à 21:12
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.