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 :

[Fichiers] Accès en cours au fichier par un autre programme ?


Sujet :

Langage Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 19
    Points : 21
    Points
    21
    Par défaut [Fichiers] Accès en cours au fichier par un autre programme ?
    Voilà mon problème, je souhaite réaliser un programme pour jeu, qui se charge de sauvegarder automatiquement les fichiers replay créer par le jeu.
    Lors d'une partie, le jeu crée un fichier nommé 000000.rep dans un dossier que je connais. Tout le long de la partie, il écrit dedans les informations sur le replay. Une fois la partie finie le fichier reste là intact jusqu'à la prochaine partie, où le jeu réecrira dedans sans l'effacer (mais il éffacera d'abord son contenu).
    Si le fichier 000000.rep n'est pas présent lors du démarrage d'une partie, le jeu le crée automatiquement.

    Ce que je souhaitais faire :
    J'efface le fichier 000000.rep
    Quand il est crée il est alors ouvert en écriture par le jeu, j'attend qu'il soit fermé (fin de la partie), et à ce moment là je le copie vers un emplacement de mon choix, puis je l'efface.

    Mon problème :
    Comment reperer la création du fichier ?
    Un test d'existence du fichier toutes les x secondes, ou il y a une procédure permettant de verifier les créations de fichiers par windows ?

    Comment reperer la fin de l'ecriture dans le fichier ?

    Merci d'avance.
    Par ailleurs si vous avez des liens vers de bon tutorials bien complets sur le gestion des fichiers en delphi (des choses plus complexes que ce uqi est couvert par les tutos de developpez.net) je suis preneur.

  2. #2
    Membre à l'essai
    Inscrit en
    Août 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    ton fichier il est creer comment ??
    a+
    fusef

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 19
    Points : 21
    Points
    21
    Par défaut
    Bah, le programme le crée tout seul lors du début de la partie, et c'est un fichier binaire.

  4. #4
    Membre expert
    Avatar de Eric Sigoillot
    Inscrit en
    Mars 2002
    Messages
    1 212
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 212
    Points : 3 369
    Points
    3 369
    Par défaut
    Ben si tu sais déjà quand tu crées le fichier...

    Sinon tu peux surveiller un répertoire pour les modifications qu'il pourrait subir. Regarde du côté de FindFirstChangeNotification.

    A+
    Règles du forum
    F.A.Q Pascal

    Pour me joindre (aucune question technique, merci)

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 19
    Points : 21
    Points
    21
    Par défaut
    Ca n'est pas moi qui créer le fichier, c'est un jeu (que je n'ai pas réalisé, donc).
    Je peux savoir quand il est crée, puisque le fichier 000000.rep sera créer, mais ce que je veux savoir, c'est quand le jeu en question a FINIT d'écrire dedans, et donc qu'il libère le fichier.

  6. #6
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    salut
    pour controler son création tu peut faire comme HDD34 ta di avec FindFirstChangeNotification.
    puit pour connétre si il est férmer par ex: tu esseye de le renomer comme si tu veu déplasser son contenu ""cest ce que tu veu"" si cest passer cest qu il est férmer si non cest non
    PAS DE DESTIN, C'EST CE QUE NOUS FAISONS

  7. #7
    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
    tu esseye de le renomer
    Un poil bourrin mais efficace :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Try
    AssigneFile(f, '...');
    RenameFile(f, 'Replay.rep');
    Except
    On Exception do Exit;
    End;
     
    CopyFile(Source, dest);
    End;
    (A copier sur un OnTimer et a modifier bien sur ;pp le principe est la )
    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

  8. #8
    Membre à l'essai
    Inscrit en
    Août 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    salut,
    un ptit bout de 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
    function FileInUse(AFile:string):Boolean; 
    var 
      h: Thandle; 
    begin 
      Result:=False; 
      h:=CreateFile(PChar(AFile), 
                    GENERIC_WRITE, 
                    FILE_SHARE_WRITE, 
                    nil, 
                    OPEN_EXISTING, 
                    FILE_ATTRIBUTE_NORMAL, 
                    0); 
      if h = INVALID_HANDLE_VALUE then 
        begin 
          Result:=True; 
        end; 
     
      CloseHandle(h); 
    end; 
     
    procedure TForm1.Button1Click(Sender: TObject); 
    begin 
      if FileInUse('C:\Temp\Todel1.doc') then 
        ShowMessage('Fichier en cours d''utilisation'); 
    end;
    a+
    fusef

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Août 2004
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 19
    Points : 21
    Points
    21
    Par défaut
    Merci

  10. #10
    Membre à l'essai
    Inscrit en
    Août 2004
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 13
    Points : 11
    Points
    11
    Par défaut
    de rien.
    si sa te convient alors utilise la balise resolut merci
    a+
    fusef

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

Discussions similaires

  1. [XL-2007] Fichier en cours d'utilisation par "un autre utilisateur"
    Par Kimy_Ire dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 10/04/2015, 21h20
  2. Réponses: 0
    Dernier message: 02/07/2010, 20h14
  3. Réponses: 7
    Dernier message: 22/08/2008, 16h20
  4. Accès au disque dur : fichiers de conf., dépôt de fichiers
    Par 84mickael dans le forum Tomcat et TomEE
    Réponses: 7
    Dernier message: 08/04/2008, 14h40
  5. Comment lire un fichier DB en cours d'utilisation par 1 autr
    Par jbat dans le forum Bases de données
    Réponses: 4
    Dernier message: 12/03/2004, 11h06

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