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 :

Manipulation des fichiers textes sous DELPHI


Sujet :

Delphi

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut Manipulation des fichiers textes sous DELPHI
    Bonjour à tous,


    - Voilà, j'ai réalisé une interface graphique sous DELPHI qui permet
    de faire une acquisition de données en temps réel. Et je souhaite
    sauvegarder admettons des données acquises sur 15 minutes de temps
    dans un premier fichier texte que je nommerai "datafile1.txt"
    - Ensuite, je procéderai à l'acquisition d'une 2nd série de données
    sur 15 autres minutes, à sauvegarder dans un 2nd fichier texte nommé
    "datafile2.txt".
    - Ensuite une 3ème série de données dans datafile3.txt, une 4ème série
    de données dans datafile4.txt, ...etc.
    - J'ai du mal à automatiser ce processus de sauvegarde. Je suis obligé
    à chaque fois d’arrêter l'acquisition et de renommer manuellement les
    fichiers de données sauvegardés datafile1.txt, datafile2.txt, ...

    Pourriez-vous s'il vous plait m'indiquer une solution possible pour
    une automatisation des noms des fichiers de données sauvegardés.

    Bien cordialement,

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Bonjour, bienvenue sur le forum

    Sans un minimum de code (partie sauvegarde, boucle de traitement) , difficile de donner des solutions .

    à priori , avec une variable compteur il serais facile de changer de nom de fichier
    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    NomFichier:=Format('datafile%d.txt',[i]);
    memo1.Lines.SaveTofile(NomFichier);
    memo1.Clear;
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Bonjour Serge,

    Merci infiniment pour ta réponse rapide.
    J'ai implémenté tes lignes de code, mais ça n'a pas l'air de tourner (Les datafiles ne se sont pas crées).
    J'ai déclarer "NomFichier" comme étant "File", puis "Text File", mais au niveau de l'instruction: NomFichier:=Format('datafile%d.txt',[i]);
    il m'affiche la chose suivante: Opérateur non applicable à ce type d'opérande.

    As tu une idée du Pb ?.
    Je te remercie d'avance.

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

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

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 858
    Points : 11 301
    Points
    11 301
    Billets dans le blog
    6
    Par défaut
    Le format de la variable qu'on cherche à lui affecter n'est donc pas celui attendu.

    Celui attendu est forcément celui fourni par la fonction Format et attendu par la méthode SaveToFile. La touche F1 indique certainement que c'est dans les 2 cas un type string, CQFD.

    Enfin, le nom de la variable, NomFichier, laissait supposer son contenu, donc sa nature.
    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 !

  5. #5
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    encore une fois sans voir le code , difficile de se faire une opinion .

    J'ai effectivement oublier d'indiquer que i était un entier (cela me paraissait tellement évident, au vue des noms demandés, que je n'avais pas mis les points sur les i )
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Nouveau Candidat au Club
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,

    encore une fois sans voir le code , difficile de se faire une opinion .

    J'ai effectivement oublier d'indiquer que i était un entier (cela me paraissait tellement évident, au vue des noms demandés, que je n'avais pas mis les points sur les i )

    Bonjour,

    Voici une portion du code que j’utilise
    J’a implémenté les lignes de codes que tu m’a transmis, mais je n’ai pas datafile1.txt, datafile2.txt, …etc.
    A la place, Il y a uniquement un seul fichier qui est crée (sans l’extension .txt) qui est nommé NomFichier.
    Rien qu'en prenant une seule valeur de i:=1 (sans mettre dans une boucle), ça n'a pas l'air de fonctionner.


    Voici le code:
    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
    29
    30
    31
    32
    33
    34
    35
    procedure TForm1.Button1Click(Sender: TObject);
     
    var
    .
    .
    i:integer;
    NomFichier: string; // Je déclare les variables i et NomFichier parmis d’autres variables
    .
    .
    Begin
    OpenCom('COM1: baud=9600 parity=N data=8 stop=0'); // J’accède au port série 
     
    i:=1; // J’initialise i à 1
       Memo1.Lines.Clear;
              Memo1.Lines.Add ('Début d''acquisition');
              Memo1.Lines.Add ('-- ' +  DateToStr(Now) + ' --');
              Memo1.Lines.Add ('-- ' +  TimeToStr(Now) + ' --') ;
       NomFichier:=Format('datafile%d.txt',[i]);
              memo1.Lines.SaveToFile('C:\NomFichier);
    i :=i+1 ; // J’incrémente la variable i 
    .
    .
    J’implémente ma boucle d’acquisition de données qui me donne un résultat d’acquisition que je mets dans la variable « val ».
    .
    .
       val:=floattostr(s); // Résultat de l’acquisition 
              Memo1.Lines.Add(val) ;
     
    // Je sauvegarde le résultat de l’acquisition 
    Memo1.Lines.Add ('Fin d''acquisition');
    Memo1.Lines.Add ('-- ' +  DateToStr(Now) + ' --');
    Memo1.Lines.Add ('-- ' +  TimeToStr(Now) + ' --') ;
    memo1.Lines.SaveToFile('C:\NomFichier');
     
    end;
    J’espère que ça pourra t'aider
    Merci par avance,

  7. #7
    Membre chevronné

    Homme Profil pro
    au repos
    Inscrit en
    Février 2014
    Messages
    429
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : au repos

    Informations forums :
    Inscription : Février 2014
    Messages : 429
    Points : 1 884
    Points
    1 884
    Par défaut
    Bonjour,

    memo1.Lines.SaveToFile('C:\NomFichier');

    Ce n'est pas ta variable NomFichier que tu utilises !!!

    memo1.Lines.SaveToFile('C:\' + NomFichier);

    ou

    NomFichier:=Format('c:\datafile%d.txt',[i]);
    Memo1.Lines.SaveToFile(NomFichier);

    Thierry

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par ThWilliam Voir le message
    Bonjour,

    memo1.Lines.SaveToFile('C:\NomFichier');

    Ce n'est pas ta variable NomFichier que tu utilises !!!

    memo1.Lines.SaveToFile('C:\' + NomFichier);

    ou

    NomFichier:=Format('c:\datafile%d.txt',[i]);
    Memo1.Lines.SaveToFile(NomFichier);

    Thierry

    Bonjour Thierry,

    - Merci bien pour ta réponse, le programme fonctionne très bien. Merci également à Serge et Yves pour leurs aides.
    - Par ailleurs, je voulais rajouter dans mon application une sorte de « bouton d’arrêt d’urgence », Qui permet l’arrêt prématuré de mon programme en cours d’exécution, à tout moment sans quitter l'application. Quelqu’un aurai une idée ?

    Merci par avance,
    Cordialement,

  9. #9
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    riad.yahiaoui : je voulais rajouter dans mon application une sorte de « bouton d’arrêt d’urgence », Qui permet l’arrêt prématuré de mon programme en cours d’exécution, à tout moment sans quitter l'application.
    Quelqu’un aurai une idée ?
    Bin puisque ton application c'est ton programme l'arrêt de ton programme c'est l'arrêt de ton application donc tu quittes forcément l'application... : Application.Terminate.
    A moins que la question aie été mal formulée car on peut aussi "interrompre l'exécution du programme en cours sans quitter l'appli avec un (ou plusieurs) if ToucheClavier(VK_ESCAPE) then EXIT;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function  ToucheCla(t : integer) : boolean; // Appui Touche
    //        utilisations : if ToucheCla(VK_CONTROL) then
    //                       if ToucheCla(Ord('R')) then
    begin     Result:= ((GetAsyncKeyState(t) and 32768)<> 0)
    end;
    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    Chercheur
    Inscrit en
    Avril 2014
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Corrèze (Limousin)

    Informations professionnelles :
    Activité : Chercheur
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Avril 2014
    Messages : 5
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Gilbert Geyer Voir le message
    Bonjour,


    Bin puisque ton application c'est ton programme l'arrêt de ton programme c'est l'arrêt de ton application donc tu quittes forcément l'application... : Application.Terminate.
    A moins que la question aie été mal formulée car on peut aussi "interrompre l'exécution du programme en cours sans quitter l'appli avec un (ou plusieurs) if ToucheClavier(VK_ESCAPE) then EXIT;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function  ToucheCla(t : integer) : boolean; // Appui Touche
    //        utilisations : if ToucheCla(VK_CONTROL) then
    //                       if ToucheCla(Ord('R')) then
    begin     Result:= ((GetAsyncKeyState(t) and 32768)<> 0)
    end;
    A+.

    Merci Gilbert pour ta réponse. Effectivement un simple "Exit" était amplement suffisant.
    A présent, tout est ok.
    Merci les amis pour votre aide.

    Très bonne continuation à tous.

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

Discussions similaires

  1. Manipulation des fichiers textes
    Par tickerdu22 dans le forum C#
    Réponses: 1
    Dernier message: 17/02/2008, 19h45
  2. Réponses: 2
    Dernier message: 07/10/2007, 19h52
  3. A propos des fichiers ressources sous delphi
    Par ramanov dans le forum Débuter
    Réponses: 6
    Dernier message: 31/08/2007, 19h21
  4. Réponses: 2
    Dernier message: 06/08/2007, 13h54

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