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 :

AssignFile et '.'


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 103
    Par défaut AssignFile et '.'
    Bonjour,

    J'ai un programme dans lequel l'utilisateur à la possibilité de faire des exports de résultats de calculs. Actuellement, ces fonctions d'export utilistent les routines "AssignFile", "Rewrite", "Writeln" et "CloseFile" pour écrire dans un fichier en mode "Text".

    Avec ces routines, il est impossible d'écrire un fichier dans un répertoire dont le nom contient des ".".

    Je voulais donc savoir si il existait un moyen de contourner ce problème, sans pour autant réécrire tout monde code en passant par des TStringsList?

    Merci.

  2. #2
    Membre émérite Avatar de Kaféine
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 569
    Par défaut
    Salut,

    Citation Envoyé par rezuss
    Avec ces routines, il est impossible d'écrire un fichier dans un répertoire dont le nom contient des ".".
    Je vois pas en quoi c'est un problème.

    Néanmoins il est possible de sauvegarder le contenu d'un TStringList dans un fichier avec ses méthodes LoadFromFile, SaveToFile.

  3. #3
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    103
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 103
    Par défaut
    Citation Envoyé par Kaféine
    Je vois pas en quoi c'est un problème.
    L'appel de la routine "AssignFile" passe, mais après lorsque je fais appel à la routine "Rewrite" j'obtiens l'erreur suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ... raised exception class  EInOutError with message 'Invalid filename'.
    Et cela n'arrive que lorsque le nom du répertoire contient un ".".

  4. #4
    Membre émérite Avatar de Kaféine
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 569
    Par défaut
    Je sais pas ce que tu fais mais ceci par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var
      F: File;
    begin
      AssignFile(F, 'Test.Test.Txt');
      Rewrite(F);
      CloseFile(F);
    ne pose aucun problème chez moi

  5. #5
    Membre émérite Avatar de Kaféine
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 569
    Par défaut
    peut qu'il te faut te position sur le bnon répertoire avant de traiter le fichier avec les fonction prévue à cette effet

  6. #6
    Membre émérite Avatar de Kaféine
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 569
    Par défaut
    non car ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var
      F: File;
    begin
      AssignFile(F, 'c:\bla.bla\Test.Test.Txt');
      Rewrite(F);
      CloseFile(F);
    fonctionne également et pourtant il y a un point dans répertoire
    evidemment c:\bla.bla\ existe

  7. #7
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    Apres tu peux aussi gerer l'ecriture du fichier via les Stream ....

    Soit un TMemoryStream que tu sauve via la methode SaveToFile, soit directement un TFileStream.

    Un peux obscure de prime abort mais tellement plus appreciable par la suite !

    A noter que TFileStream et TMemoryStream (entre autre) derive de TStream donc permet un gestion generique du traitement via un parametre TStream, ce qui a pour effet de pouvoir effectuer le traitement directement depuis un fichier HDD comme depuis une szone memoire ou on aurait chargé un fichier extrait d'un package ou recupere sur le reseau sans transiter par le disque dur.

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

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