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 travailler sur un fichier texte utilisé par une autre application ?


Sujet :

Langage Delphi

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Août 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 129
    Points : 128
    Points
    128
    Par défaut Comment travailler sur un fichier texte utilisé par une autre application ?
    bonjour,
    je dois faire une appli qui analyse un fichier texte, ce fichier etant rempli petit a petit par un programme exterieur(en fait je veux me faire un parser de log pour un jeu). donc comment faire pour ne pas verouiller le fichier?si je fais un assign sur une variable textfile ce fichier sera verouillé et donc inacessible par le programme non?
    merci

  2. #2
    Membre chevronné
    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
    Points : 2 158
    Points
    2 158
    Par défaut
    L'utilisation standard des fichiers texte oui.

    Mais en regardant du cote des TFileStream ca devrais marcher...
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 129
    Points : 128
    Points
    128
    Par défaut
    bon ben j'ai fait des tests a tout hasard et je n'ai pas d'erreurs, j'ai un timer qui tourne sur un intervalle de 50 ms et qui lance une procedure pour remplir une tstringlist avec le contenu du fichier (closefile du fichier a la fin a tout hasard), et je peux ecrire dedans , pas d'erreur et ca actualise bien . pourtant sur un autre programme je suis sur d'avoir eu des erreurs pour ecrire sur un fichier que l'appli traitait. bref , tant que ca marche

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Août 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 129
    Points : 128
    Points
    128
    Par défaut
    bon vu que la methode a base de textfile plantait comme prevu 8) je suis allé voir du coté des tfilestream.
    ce code est donc executé toute les 50ms pour remplir une stringlist :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    var
    i:integer;
    sl_i:=tstringlist;
    MemFlux:TfileStream;
     
    begin
     
    memFlux:=TFileStream.Create(dlg_open.FileName,fmOpenRead) ;
     
     
     memflux.read(i,sizeof(i));
        sl_1.LoadFromStream(memflux);
        memflux.free;
    ca marche trés bien en "offline" mais des que le jeu est lancé et accede donc au fichier de log, plantage "le fichier est utilisé par un autre processus".
    donc ma question est comment acceder au fichier sans se faire jeter

  5. #5
    Membre confirmé
    Avatar de lil_jam63
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    447
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 447
    Points : 600
    Points
    600
    Par défaut
    Dans ton cas, j'ai bien peur que tu ne puisses pas faire grand chose car c'est le jeu qui ouvre le fichier en accès exclusif et ça tu ne peux pas le modifier (sauf si une option est prévue pour).
    De ton côté, tu peux ouvrir le fichier comme tu veux, ça ne changeras pas les accès posés par le jeu et dès que celui çi y accédera, tu sera bloqué.
    ----------------------------------------------------
    Avant de poster, pensez à utiliser les différents outils à votre disposition:
    Google, la FAQ et le moteur de recherche.

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Août 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 129
    Points : 128
    Points
    128
    Par défaut
    je suis sur que c'est possible etant donné que des applis de ce type sont deja sorties pour ce jeu...
    et puis je ne veux rien ecrire sur le fichier , seulement le lire (et vu que je peux le faire "a la main" je ne vois pas pourquoi ca bloquerai par delphi)
    merci quand meme pour la réponse

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    298
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2003
    Messages : 298
    Points : 318
    Points
    318
    Par défaut
    Tu auras plus de possibilité avec les API windows: OpenFile, CreateFile,...
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/base/createfile.asp

    Il faut peut être ouvrir le fichier avec des droits spécifiques avant de lancer le jeu.

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Août 2003
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2003
    Messages : 129
    Points : 128
    Points
    128
    Par défaut
    c'est bon j'ai reussi a faire tourner le soft en meme temps que le jeu, en fait il fallait faire un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    memFlux:=TFileStream.Create(dlg_open.FileName,fmShareDenyNone) ;
    au lieu de

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    memFlux:=TFileStream.Create(dlg_open.FileName,fmOpenRead) ;
    voila

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 07/07/2011, 23h04
  2. Réponses: 4
    Dernier message: 11/06/2008, 01h30
  3. Tester si le fichier est utilisé par une autre appli
    Par sivaller dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 05/06/2008, 19h47
  4. Réponses: 5
    Dernier message: 28/05/2007, 11h52

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