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 :

écrire des variables dans la même ligne


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 71
    Points : 33
    Points
    33
    Par défaut écrire des variables dans la même ligne
    Bonjour,

    Je dois écrire une ligne dans un fichier texte sous la forme: A B C D(des variables de types string), donc j'utilise Write pour les écrire dans la même ligne, mon souci c'est que si je ferme l'application et j'ai écris que A B, au prochain lancement je souhaite écrire le reste dans la même ligne, et j'arrive pas a le faire et mon programme beugue. voila le code ke j'utilise pour ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if FileExists(FileDir) then
        begin
          AssignFile(F,FileDir);
          append(F);
          Write(F, MyVar); // MyVAr = A or B or C or D
          CloseFile(F);
        end;

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 676
    Points : 25 491
    Points
    25 491
    Par défaut
    Avec un fichier Texte et Append, tu ajouteras forcément, tu ne peux modifier une valeur existante !
    tu dois réécrire complètement le fichier !
    Tu renommes l'ancien Fichier, tu l'ouvre en lecture (c'est In)
    Tu crées un fichier de remplacement, tu l'ouvre via Reset (c'est Out)
    tu peux le faire, tu utilises ReadLn(In)\WriteLn(Ou) jusqu'à la ligne à modifier, tu écris une version modifié, puis tu reprends la copie avec ReadLn\WriteLn
    Je me rappelle avoir écrit ce genre de code dans un autre sujet, je le laisse le chercher !

    Tu peux le faire avec une TStringList, tu charge le fichier avec LoadFromFile, tu modifies le Strings[] qu'il faut, puis un SaveToFile

    Il faut utiliser un TFileStream, Seek pour se positionner puis Write
    Attention, c'est un mode binaire, c'est très différent comme méthode de manipulation de fichier !
    Ensuite, si tu insères des données, il te faut décaler tout ce qui suit !
    J'avais commencé une classe TTextFileReader, je n'ai jamais pris le temps de faire une TTextFileWriter !


    Pourquoi ne pas utiliser une base de données ? un simple TClientDataSet fera très bien l'affaire, cela utilise un fichier XML
    Tu es figé sur CE format de fichier parce qu'il sera utilisé par un autre programme ?
    Si tu peux en changer, passe à une DB ou alors un Fichier Binaire structuré qui sera plus facile à modifier à postériori !

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2011
    Messages
    71
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 71
    Points : 33
    Points
    33
    Par défaut
    J'utilise ce format de fichier pour deux raisons :
    - la 1ere : les utilisateurs doivent consulter les résultats chaque jours, un fichier ce renouvèle chaque mois, donc un '.txt' pour eux c'est plus facile.
    - 2eme : comme je débute dans le monde de développement logiciel, je ne connais pas beaucoup de langage, et surtout les Base de données.

    Sinon pour les solutions que vous m'avez proposer, je vais tester la 1ere, car je ne vois pas comment le faire avec un TFileStream, Seek et Write

    Merci pour tout

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 676
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 676
    Points : 25 491
    Points
    25 491
    Par défaut
    Citation Envoyé par mohammed.badre Voir le message
    - la 1ere : les utilisateurs doivent consulter les résultats chaque jours, un fichier ce renouvèle chaque mois, donc un '.txt' pour eux c'est plus facile.
    Tu confonds le moyen et le besoin !
    Le Besoin ne limite en rien les possibilités ! Il faut justement mettre tout en œuvre pour le satisfaire !
    Ton besoin d'origine est un log accessible pour un humain mais tu as une contrainte technique de mise à jour, il faut donc trouver une solution
    alternative au simple fichier texte

    Rien ne t'empêche d'avoir un format interne en binaire qui serait illisible par un utilisateur mais plus facile à maintenir !
    Ensuite, tu peux ajouter un outil de lecture de fichier log pour avoir une version lisible des données, et pourquoi pas un export vers un fichier texte !

    Citation Envoyé par mohammed.badre Voir le message
    - 2eme : comme je débute dans le monde de développement logiciel, je ne connais pas beaucoup de langage, et surtout les Base de données.
    Si tu réagis comme cela, tu ne progresseras jamais, tu as l'occasion de tester de nouveaux éléments techniques, profites-en !
    Comme je le disais, le TClientDataSet sera approprié pour cette utilisation !

    Citation Envoyé par mohammed.badre Voir le message
    Sinon pour les solutions que vous m'avez proposer, je vais tester la 1ere, car je ne vois pas comment le faire avec un TFileStream, Seek et Write
    Encore une fois, tu renonces avant même d'essayer !
    Je t'ai fourni un lien vers le code complet de TTextFileReader, c'était justement pour que tu puisses l'étudier et comprendre la subtilité de la manipulation binaire d'un fichier texte !

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

Discussions similaires

  1. Réponses: 10
    Dernier message: 24/02/2014, 15h22
  2. [MySQL] Portée des variables dans un même script
    Par paintbox dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 29/07/2010, 20h11
  3. écrire des variables dans un fichier
    Par Blako_17 dans le forum C++Builder
    Réponses: 4
    Dernier message: 14/07/2008, 22h51
  4. [AS2] déclarer des variables dans une fonction
    Par ooyeah dans le forum ActionScript 1 & ActionScript 2
    Réponses: 12
    Dernier message: 02/08/2005, 12h50
  5. Réponses: 9
    Dernier message: 05/04/2005, 09h39

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