Je développe une application (un jeu de plateau) en VC++ avec les MFC.
Je souhaite tracer dans un fichier les numéros de cases où on pose des
pions etc.
Je me suis dit que j'allais "simplement" écrire dans un fichier (CFile
myfile; myfile.Write(...); myfile.Close(); etc) les coups joués par le
joueur humain et ceux joués par l'ordinateur.
Or, je retrouve les coups joués dans mon fichier ... mais en désordre :
parfois, deux coups de l'ordinateur à la suite, alors que l'ordinateur
et l'humain jouent chacun leur tour ...
Les écritures dans un fichier CFile sont elles asynchrones ? Est-il
possible qu'elles ne se fassent pas dans l'ordre où elles sont
programmées ? J'ai pourtant essayé :
à chaque écriture, en pensant que le Flush, et la fermeture du fichier
obligeraient l'ordinateur à finir chaque écriture avant d'attaquer la
suivante, mais ça ne change rien ...
Quelle est la méthode qui permet de forcer chaque écriture à se
terminer avant de passer à la suite du programme ?
Merci !
--
Les aspirations des pauvres ne sont pas très éloignées des réalités des
riches.
[Pierre Desproges]
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Vincent Burel
"ByB" wrote in message news:
Bonjour,
Je développe une application (un jeu de plateau) en VC++ avec les MFC. Je souhaite tracer dans un fichier les numéros de cases où on pose des pions etc.
Je me suis dit que j'allais "simplement" écrire dans un fichier (CFile myfile; myfile.Write(...); myfile.Close(); etc) les coups joués par le joueur humain et ceux joués par l'ordinateur.
Or, je retrouve les coups joués dans mon fichier ... mais en désordre : parfois, deux coups de l'ordinateur à la suite, alors que l'ordinateur et l'humain jouent chacun leur tour ...
Les écritures dans un fichier CFile sont elles asynchrones ? Est-il possible qu'elles ne se fassent pas dans l'ordre où elles sont programmées ? J'ai pourtant essayé :
Le flush n'est pas nécessaire (normallement fait au close)... par contre il faut etre sur que le curseur pointe sur la fin du fichier (seek)... il faut aussi que votre fonction de sauvegarde de coup, soit appelée par un seul thread.
VB
"ByB" <email@email.com> wrote in message
news:mn.950d7d676ee837b7.13846@email.com...
Bonjour,
Je développe une application (un jeu de plateau) en VC++ avec les MFC.
Je souhaite tracer dans un fichier les numéros de cases où on pose des
pions etc.
Je me suis dit que j'allais "simplement" écrire dans un fichier (CFile
myfile; myfile.Write(...); myfile.Close(); etc) les coups joués par le
joueur humain et ceux joués par l'ordinateur.
Or, je retrouve les coups joués dans mon fichier ... mais en désordre :
parfois, deux coups de l'ordinateur à la suite, alors que l'ordinateur
et l'humain jouent chacun leur tour ...
Les écritures dans un fichier CFile sont elles asynchrones ? Est-il
possible qu'elles ne se fassent pas dans l'ordre où elles sont
programmées ? J'ai pourtant essayé :
Le flush n'est pas nécessaire (normallement fait au close)... par contre il
faut etre sur que le curseur pointe sur la fin du fichier (seek)... il faut
aussi que votre fonction de sauvegarde de coup, soit appelée par un seul
thread.
Je développe une application (un jeu de plateau) en VC++ avec les MFC. Je souhaite tracer dans un fichier les numéros de cases où on pose des pions etc.
Je me suis dit que j'allais "simplement" écrire dans un fichier (CFile myfile; myfile.Write(...); myfile.Close(); etc) les coups joués par le joueur humain et ceux joués par l'ordinateur.
Or, je retrouve les coups joués dans mon fichier ... mais en désordre : parfois, deux coups de l'ordinateur à la suite, alors que l'ordinateur et l'humain jouent chacun leur tour ...
Les écritures dans un fichier CFile sont elles asynchrones ? Est-il possible qu'elles ne se fassent pas dans l'ordre où elles sont programmées ? J'ai pourtant essayé :
Le flush n'est pas nécessaire (normallement fait au close)... par contre il faut etre sur que le curseur pointe sur la fin du fichier (seek)... il faut aussi que votre fonction de sauvegarde de coup, soit appelée par un seul thread.
VB
ByB
Vincent Burel vient de nous annoncer :
Le flush n'est pas nécessaire (normallement fait au close)... par contre il faut etre sur que le curseur pointe sur la fin du fichier (seek)... il faut aussi que votre fonction de sauvegarde de coup, soit appelée par un seul thread.
VB
Effectivement, j'avais oublié de préciser que je fais aussi un :
myfile.SeekToEnd()
avant le write (et ça ne change rien ...).
Et je n'ai a priori qu'un seul thread dans mon programme (mais j'ai une fonction qui est appelée par l'envoi d'un message que j'ai défini moi même. Est ce que cela en fait un deuxième thread ?)
-- LA FINALITE PONCTUE LES PROCESSUS FONDAMENTAUX DE LA DEMARCHE
Vincent Burel vient de nous annoncer :
Le flush n'est pas nécessaire (normallement fait au close)... par contre il
faut etre sur que le curseur pointe sur la fin du fichier (seek)... il faut
aussi que votre fonction de sauvegarde de coup, soit appelée par un seul
thread.
VB
Effectivement, j'avais oublié de préciser que je fais aussi un :
myfile.SeekToEnd()
avant le write (et ça ne change rien ...).
Et je n'ai a priori qu'un seul thread dans mon programme (mais j'ai
une fonction qui est appelée par l'envoi d'un message que j'ai défini
moi même. Est ce que cela en fait un deuxième thread ?)
--
LA FINALITE PONCTUE LES PROCESSUS FONDAMENTAUX DE LA DEMARCHE
Le flush n'est pas nécessaire (normallement fait au close)... par contre il faut etre sur que le curseur pointe sur la fin du fichier (seek)... il faut aussi que votre fonction de sauvegarde de coup, soit appelée par un seul thread.
VB
Effectivement, j'avais oublié de préciser que je fais aussi un :
myfile.SeekToEnd()
avant le write (et ça ne change rien ...).
Et je n'ai a priori qu'un seul thread dans mon programme (mais j'ai une fonction qui est appelée par l'envoi d'un message que j'ai défini moi même. Est ce que cela en fait un deuxième thread ?)
-- LA FINALITE PONCTUE LES PROCESSUS FONDAMENTAUX DE LA DEMARCHE
> > Le flush n'est pas nécessaire (normallement fait au close)... par contre
il
> faut etre sur que le curseur pointe sur la fin du fichier (seek)... il
faut
> aussi que votre fonction de sauvegarde de coup, soit appelée par un seul > thread. > > VB
Effectivement, j'avais oublié de préciser que je fais aussi un :
myfile.SeekToEnd()
avant le write (et ça ne change rien ...).
Et je n'ai a priori qu'un seul thread dans mon programme (mais j'ai une fonction qui est appelée par l'envoi d'un message que j'ai défini moi même. Est ce que cela en fait un deuxième thread ?)
non ca fait toujours qu'un seul thread, mais vous devriez appeler directement votre fonction de sauvegarde plutot que de passer par la Msg-Loop... et vérifiez qu'il n'y ait pas de possibilité d'envoyer les messages dans le désordre...
"ByB" <email@email.com> wrote in message
news:mn.95687d6746ea0b87.13846@email.com...
Vincent Burel vient de nous annoncer :
>
> Le flush n'est pas nécessaire (normallement fait au close)... par contre
il
> faut etre sur que le curseur pointe sur la fin du fichier (seek)... il
faut
> aussi que votre fonction de sauvegarde de coup, soit appelée par un seul
> thread.
>
> VB
Effectivement, j'avais oublié de préciser que je fais aussi un :
myfile.SeekToEnd()
avant le write (et ça ne change rien ...).
Et je n'ai a priori qu'un seul thread dans mon programme (mais j'ai
une fonction qui est appelée par l'envoi d'un message que j'ai défini
moi même. Est ce que cela en fait un deuxième thread ?)
non ca fait toujours qu'un seul thread, mais vous devriez appeler
directement votre fonction de sauvegarde plutot que de passer par la
Msg-Loop... et vérifiez qu'il n'y ait pas de possibilité d'envoyer les
messages dans le désordre...
> > Le flush n'est pas nécessaire (normallement fait au close)... par contre
il
> faut etre sur que le curseur pointe sur la fin du fichier (seek)... il
faut
> aussi que votre fonction de sauvegarde de coup, soit appelée par un seul > thread. > > VB
Effectivement, j'avais oublié de préciser que je fais aussi un :
myfile.SeekToEnd()
avant le write (et ça ne change rien ...).
Et je n'ai a priori qu'un seul thread dans mon programme (mais j'ai une fonction qui est appelée par l'envoi d'un message que j'ai défini moi même. Est ce que cela en fait un deuxième thread ?)
non ca fait toujours qu'un seul thread, mais vous devriez appeler directement votre fonction de sauvegarde plutot que de passer par la Msg-Loop... et vérifiez qu'il n'y ait pas de possibilité d'envoyer les messages dans le désordre...