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 :

Comment enregistrer une string dans fichier autre que .txt ?


Sujet :

Langage Delphi

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Points : 82
    Points
    82
    Par défaut Comment enregistrer une string dans fichier autre que .txt ?
    Bonjour à tous, j'ai un soucis pour l'enregistrement de donnée

    J'ai un tableau défini comme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tab : array of array of array of string
    Pour l'instant j'enregistre ce tableau à l'aide d'une Tstringlist et de la méthode savetofile et ça marche tres bien.

    Cependant lors de la transmission de ce fichier par mail, sur certains serveur de mail, il arrive que le fichier soit transmit en mode texte ce qui destructure completement le fichier en ajoutant des "retour chariots" la ou il ne faut pas.

    Je ne peux pas non plus l'enregistrer dans un fichier typé car le type dynamique de string n'est pas finalisé.

    Existe t-il une autre méthode qui permettrai d'enregistrer des chaines dynamiques dans un format qui ne serait pas susceptible d'être modifié par l'envoi par mail?

    Merci

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Points : 576
    Points
    576
    Par défaut
    Bonjour

    Je n'ai la solution telle que vous la désirez, mais un truc qui pourrait écenteullement vous aider.

    Le truc serait de ne plus passer un tableau de string( et donc déliminer les #10#13 des retou chariot) mais un text délimité de type SQL

    Exemple:
    Si jai les ligne dans mon stringList

    List[0] := 'Ligne A'
    List[1] := 'LigneB'
    List[2] := 'Ligne C, et autre'

    Et que je fasse un quotedStr de chaque ligne j'optient
    List[0] := '''Ligne A'''
    List[1] := '''LigneB'''
    List[2] := '''Ligne C', et autre'''

    Cela me permet de coder l'informatin sous la forme
    '''Ligne A'';''LigneB'';''Ligne C', et autre'''

    inversement pour lire le resultat che cherche les rupture de lign (';') et j'utilise AnsiDequotedStr.

    Cette solution et relativement malcomode, mais si personne ne vous en indique une autre elle peut toujour servir.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Points : 82
    Points
    82
    Par défaut
    Effectivement, en l'absence d'une solution plus formelle, je vais me tourner vers cette solution.

    ça va me couter quelques heures, mais il est vrai que ça résoudra le problème.

    Je vais attendre quelques temps, voir si une autre solution peut être envisagée.

    Merci.

  4. #4
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Tu peux aussi utiliser des flux (TStream) pour gérer ce problème :
    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
    procedure Enregistre;
    var X, Y, Z : integer;
        Stream : TStream;
    begin
      Stream := TFileStream.Create('C:\...\Fichier.ext', fmCreate or fmShareDenyNone);
      try
        Stream.WriteBuffer(MaxX, 4);
        Stream.WriteBuffer(MaxY, 4);
        Stream.WriteBuffer(MaxZ, 4);
        for Z := 0 to MaxZ-1 do
          for Y := 0 to MaxY-1 do
            for X := 0 to MaxX-1 do
              WriteStrToStream(Stream, tab[X][Y][Z]);
      finally
        Stream.Free;
      end;
    end;
    Tu trouveras la fonction WriteStrToStream dans l'unité SjrdUsual
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Points : 82
    Points
    82
    Par défaut
    Merci sjrd je vais m'atteler aux flux.

    Jamais touché encore, je vais me faire ça d'ici mercredi.

  6. #6
    Membre actif Avatar de [Silk]
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2005
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

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

    Informations forums :
    Inscription : Mai 2005
    Messages : 198
    Points : 201
    Points
    201
    Par défaut
    sa serait pas plus simple de changer l'extension du fichier simplement ??
    du genre *.ini ou une extension personalisée
    je dit peut etre une bétise mais si sa marche c'est pas beaucoup plus simple ?

    [Silk]
    Silk

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Points : 82
    Points
    82
    Par défaut
    Non, j'ai déja essayé, ça ne marche pas.

    Je commence à tester la méthode des flux aujourd'hui, je donnerai des nouvelles.

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Points : 82
    Points
    82
    Par défaut
    en essayant d'installer le package, j'ai une erreur de compilation :

    Directive de compilation incorrecte 'REGION' et 'ENDREGION'

    Une recherche rapide sur le forum ne m'a rien donné, je vais voir sous google, mais si sjrd passe par la...

    Je suis sous delphi 7 Education.

    Merci

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Points : 82
    Points
    82
    Par défaut
    A priori, ces dirctives ne sont disponibles qu'à partir de DELPHI 2005.

    Si je les enlèves est ce que ça change quelque chose à la fonctionnalité du code ?

    A part pouvoir "replier" certaines parties ?

  10. #10
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Non tu peux les enlever sans danger
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Points : 82
    Points
    82
    Par défaut
    OK, merci, j'ai donc retirer toutes les directives régions, je peux compiler le paquet, mais lorsque j'installe, j'ai un message d'erreur :

    impossible d'installer le paquet SJRDUnits.bpl ce n'est pas un paquet de conception.
    Pour l'instant j'ai contourné le probleme en integrant manuellement SjrdUsual et SjrdStrUtils dans mon appli, mais j'aimerais assez l'avoir en paquet, si cela est possible sous Delphi 7

    Tu vois d'ou le probleme peux venir ?

  12. #12
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    "Ce paquet n'est pas un paquet de conception" signifie tout simplement qu'il n'y à pas de composants visuels dans le paquet. C'est un paquet d'exécution et ce qui comptes c'est les unités qu'il contient

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 84
    Points : 82
    Points
    82
    Par défaut
    Ok Désolé.

    Donc placer les .dcu dans le repertoire lib de Delphi devrait suffire ?

    Sinon les méthodes d'écriture et de lecture dans un flux marchent impec.

    Je rajoute autant de retour chariot que je veux ou je veux ça passe pareil.

    Merci sjrd

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

Discussions similaires

  1. enregistrer une listview dans un autre fichier
    Par wahidred dans le forum VB.NET
    Réponses: 1
    Dernier message: 05/05/2012, 21h06
  2. Réponses: 4
    Dernier message: 26/05/2011, 22h50
  3. Réponses: 3
    Dernier message: 09/04/2008, 14h19
  4. [C#] Comment enregistrer une image dans une tables access ?
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 7
    Dernier message: 16/06/2006, 11h58
  5. Comment enregistrer une string dans un fichier
    Par Dnx dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 23/09/2005, 14h52

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