begin process at 2010 02 10 03:28:05
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Débutant(e)

 > 

Comment effectuer une actualisation de fichier?


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

Sujets en rapport avec ce message

Acquisition de Données a partir d'un fichier texte [ par madcow41 ] 'lutBon j'ai un fichier qui contient des lignes formées ainsi :123.145.569.188 - - [12/Apr/2001:00:08:49 +0200] "GET /pagehtml.htm HTTP/1.x" et le res Logiciel transformant un fichier texte en base de données Access [ par makandja ] Salut à tous, Voilà j'aimerais réaliser un module logiciel réalisant la transformation d'un fichier texte de mesures en base de données de type Micr Parcourir fichier [ par frenchie_st ] Bonjour, Je dois faire un programme qui gère un fichier texte et j'aurais 2 questions: 1) Le fichier texte est composé de 2 parties: une introduction fichier texte + base de donnée acess [ par superbat81 ] BonjourJ'ai un fichier texte ou il ya des données écrit sous la forme:"001608180120051"les 4 premiers c'es le num de l 'entreprisele 5 et 6 c'est l'he coment récuperer données du RS232 et les mettre dans fichier texte [ par kenzo10 ] Bonjour, je suis en stage et je recherche un moyen de récuperer les données sortie du port RS232 et les mettre dans un fichier texte mais je ne suis p Récupérer des Données d'un fichier texte??? [ par mouss_PO ] voila, je dois récupérer une liste de double dans un fichier texte en C++ et je ne sais vraiment pas comment faire.En gros mon travail total est d'ouv comment lire un fichier texte et affecter les données lus dans un tableaux ? [ par nidalo ] bonjour, j'ai programmé une heuristique qui génerent des instances aléaotoires et les enregistrent dans un fichier texte sous cette forme : 1 3 8 enregistrer valeur d'un fichier texte dans une base de données [ par fab3131 ] bonjour a tous.   jaimerais savoir si  y a kelkun qui sait comment on peut lire des valeurs d'un fichier texte et les sauvegardées dans une base de do Recuperer des données dans un fichier [ par tony_73 ] Bonjour.voila je suis debutant en dot.net et j'aimerais faire une interface sur lequel toutes mes données (titre de fenetre, texte de label, etc..) do fichier texte a excels [ par wantofirst ] bonjour a tousj'ai un petit problèmej'ai fai un programme qui met  des données numériques dans un fichier texte;mais lorsque je veux utiliser les donn


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,343 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales