Accueil > Forum > > > > Comment effectuer une actualisation de fichier?
Comment effectuer une actualisation de fichier?
mercredi 25 avril 2007 à 23:04:54 |
Comment effectuer une actualisation de fichier?

jalmjj
|
Alors voilà le problème que je n'arrive pas à résoudre (étant toujours débutant en C++). J'ai crée un programme de réception de liaison série grâce auquel je récupère des données que j'enregistre au fur et à mesure de leur arrivé dans un fichier texte. Mais je dois pouvoir utiliser ce fichier texte dans une autre application (un logiciel crée en MFC et C++) afin de pouvoir décodé les données présentes dans ce fichier. Donc pour l'ouverture et l'analyse de ce fichier je n'ai aucun problème mais je voudrais mettre en place un procédé qui m'indiquerai lorsque de nouvelles données seraient mise dans le fichier texte et qui me demanderai si je souhaite ou non ré-ouvrir ce fichier afin d'avoir toutes les données contenues dans le fichier. Et j'aimerai aussi que si je réponde oui celà re-ouvre automatiquement le fichier. Je sais que celà doit être possible vu que lorsque j'ouvre le fichier texte avec WORDPAD pour lire les données du fichier, j'ai cette fonction qui me dis que le fichier a été modifié et me demande si je veux ouvrir la nouvelle version du fichier. Dans le cas ou personne ne serait comment faire ou que celà ne soit pas possible, est-ce qu'il est possible de mettre un simple bouton d'actualisation (sans messages qui previendrait d'une modification dans le fichier) comme celui pour actualiser une page internet??? Merci d'avance pour votre aide et vos réponses.
|
|
jeudi 26 avril 2007 à 00:11:57 |
Re : Comment effectuer une actualisation de fichier?

THEwarrior333
|
Peut-etre en comparant regulierement la date de modification du fichier? (cf GetFileAttributes) < body>
|
|
jeudi 3 mai 2007 à 22:33:43 |
Re : Comment effectuer une actualisation de fichier?

jalmjj
|
Merci pour ta réponse et ton aide THEwarrior333. J'ai en effet regarder comment utiliser la GetFileAttributes et en effectuant une comparaison entre la date de la derniere modification du fichier et celle à un moment ultérieur je peux voir si il y a eu un rajout de données. Et dans ce cas, je mets la nouvelle date comme base pour la prochaine comparaison car j'ai mis cette comparaison dans la boucle me servant pour la réception de données via le port serie. Je peux donc maintenant savoir quand a lieu un changement dans mon fichier.
Dans un deuxième temps, et comme j'aimerais prévenir l'utilisateur que le fichier a subit des modifications, j'ai utilisé la fonction MessageBox [MessageBox(0,date,"Le fichier a été modifié",MB_ICONWARNING); ] pour faire apparaître un message prévenant qu'une mise à jour du fichier a été faite. Mais a priori tant que je n'ai pas validé la fenêtre qui apparait le programme ne passe pas à l'exécution de la ligne de code suivante. J'aimerai donc savoir si il existe un moyen pour faire apparaître une fenêtre avec mon message et que celles-ci n'empêche pas la poursuite de l'exécution du programme (plus simplement faire une fenêtre qui ne fasse que afficher ma phrase comme on peut le faire avec un "cout").
|
|
vendredi 4 mai 2007 à 01:11:59 |
Re : Comment effectuer une actualisation de fichier?

THEwarrior333
|
MessageBox est en effet un evenement bloquant, c'est a dire qu'il interrompt l'execution du programme. Tu as plusieurs solutions pour y remedier: - soit tu réalises une fenetre d'interface (peut etre est-ce deja fait?) en API windows. Il suffit alors dans celle-ci d'intégrer un contrôle tel qu'un static box par exemple qui recevra le texte d'avertissement. - soit tu crées un thread (si tu ne sais pas ce que c'est dis le moi) qui s'occupe uniquement de savoir si ton fichier est mis ou jour et d'avertir quand c'est le cas. Créer et gérer les threads est moins évident que de créer un simple fenetre mais c'est tout a fait envisageable.
La premiere solution me semble etre la plus adaptée à ton probleme mais n'ayant pas tous les details de ton projet ce n'est pas sûr non plus.
|
|
lundi 7 mai 2007 à 00:24:41 |
Re : Comment effectuer une actualisation de fichier?

jalmjj
|
Encore merci pour ta réponse. Non, je ne connais pas le thread (mais j'ai cru comprendre que c'etait un element bien utile, qui servait assez souvent en programmation). Je ne connais pas non plus l'API windows.
Sinon ben par rapport a mon projet et ma question de départ, ben en fait j'ai d'un côté un programme qui réceptionne des données par la liaison série et qui les sauvegardes dans des fichiers textes. Et d'un autre côté, j'ai un logiciel que j'ai récupéré (écrit en MFC et C++ ) qui me permet d'analyser et de traités les données que je reçoit. En observant le programme code du logiciel j'ai réussi a mettre un lien dans la barre de tâche qui me permet de lancer le fichier éxecutable de mon programme de réception de la liaison série. Et donc, en fait là je voudrais avoir un message qui s'affiche sur l'écran pour me dire quand le fichier de reception est modifie, donc juste besoin d'afficher un simple message lorsque je detecte un changement (en procédant comme tu me l'as conseillé avec une comparaison de la date de modification du fichier).
Pour ce qui est de ma premiere requete de mise a jour, ben je pense que je vais mettre en place un bouton dans la barre de tache qui m'ouvrira le fichier dont j'aurais specifier le nom. Et pour ce nom ben je lui donnerai celui du fichier qui est dejà ouvert, car comme lorsque un fichier est ouvert par le logiciel son mon est affiché, je pense que je dois pouvoir le récupérer et donc le réutiliser pour réouvrir le fichier.
|
|
lundi 7 mai 2007 à 06:39:04 |
Re : Comment effectuer une actualisation de fichier?

THEwarrior333
|
En deux mots pour les definitions: - un thread est l'execution en parallele d'une partie d'un code. Pour te donner une idée: la copie de fichiers sous windows utilise deux threads: un pour faire la copie proprement dite et un pour afficher l'animation de copie. Si l'animation et la copie se faisaient sous un meme thread, l'animation serait figée ou tres saccadée. Il y a des bons tutos sur le net. Tu peux deja regarder celui-la: [ Lien ] - l'API windows est la librairie permettant d'utiliser les fonctions windows telles que l'affichage de fenetres, de controles, l'utilisation de threads justement, etc... D'ailleurs MFC est en fait une sur-couche (une vraie usine à gaz d'ailleurs) de cette API, c'est à dire un ensemble de classes dont le but est (soit-disant) de simplifier la programmation windows.
Bref dans ton cas si je comprend bien, tu as la possibilité au moment du click sur le bouton de lancer un thread exécutant ton programme. Ainsi une fois ton programme lancé, meme s'il s'interrompt pour avertir d'une mise à jour, le programme de traitement (celui que tu as recupéré) continue d'intéragir avec l'utilisateur. Cependant, tant que l'utilisateur n'a pas validé le MessageBox, ton programme attendra. Est-ce ce que tu souhaites? Si en fait tu souhaites que ton programme récupère sans cesse les données et ne soit jamais interrompu lors du MessageBox, alors le thread doit etre lancé au niveau de ton programme ce qui, en résumé, fait que ton programme s'execute en deux threads qui communiquent entre eux: - un contenant la boucle de reception des données et qui envoie un message à l'autre thread pour l'avertir d'une mise à jour. - un deuxieme qui contient la boucle de réception des messages du premier thread et affichant un MessageBox lorsque le premier thread lui en donne l'ordre.
Sinon puisque tu as pu comprendre un peu le fonctionnement de l'interface en MFC, peut-etre arriverais-tu à y intégrer une zone de texte statique recevant les messages de mise à jour...A ce moment la ca simplifie les choses car tu n'as peut-etre plus besoin de threads.
Pour ce qui est du nom du fichier ouvert, s'il est affiché par l'interface alors oui biensur tu dois pouvoir le récupérer.
|
|
mardi 8 mai 2007 à 21:49:46 |
Re : Comment effectuer une actualisation de fichier?

jalmjj
|
"Bref dans ton cas si je comprend bien, tu as la possibilité au moment du click sur le bouton de lancer un thread exécutant ton programme. Ainsi une fois ton programme lancé, meme s'il s'interrompt pour avertir d'une mise à jour, le programme de traitement (celui que tu as recupéré) continue d'intéragir avec l'utilisateur. Cependant, tant que l'utilisateur n'a pas validé le MessageBox, ton programme attendra. Est-ce ce que tu souhaites?"
Je ne sais pas si cela est un thread mais j'ai utilisé la fonction shellexecute (que j'ai trouvé en cherchant dans l'aide du logiciel Microsoft Visual C++). Sinon tu as raison mon programme attend que je valide le messagebox et c'est justement ceci que je veux éviter car cela a pour effet de me faire perdre des données lors de ma réception par la liaison serie. Sinon si j'ai bien compris ce que tu voulais dire avec des threads on peut en quelques sortes faire fonctionner deux programmes en parrallèle? Si c'est le cas cela conviendrait parfaitement a mon problème donc je vais lire le tuto sur le lien que tu as mis et essayé de comprendre comment ça marche. Et concerant le nom du fichier que je veux récupérer, oui il s'affiche sur l'interface du logiciel avec d'autres informations et c'est pour ça que j'ai penser que je pouvais sûrement le récupérer, il me faut juste un peu de temps pour comprendre ou se situe les informations dans le code du logiciel ^^. Encore merci pour toutes tes réponses.
|
|
mercredi 9 mai 2007 à 05:46:21 |
Re : Comment effectuer une actualisation de fichier?

THEwarrior333
|
En fait un thread n'est pas vraiment l'execution de deux programmes en parallèle: tu crées un thread à l'intérieur d'un programme pour faire fonctionner une partie du code (des fonctions) en parallèle. ShellExecute convient pour lancer ton exécutable à partir du logiciel. Il ne résoud pas ton probleme car tu dois créer un thread dans ton programme, pour le contrôle du flot de données sans quoi chaque apparition du MessageBox bloquera l'exécution de ton programme.
|
|
Cette discussion est classée dans : fichier, texte, données, actualisation, cel
Répondre à ce message
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : CXIMAGERE : CXIMAGE par rt15
Cliquez pour lire la suite par rt15
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|