Ce sujet est résolu.
1 | |||||
Auteur | Messages | ||||
---|---|---|---|---|---|
loki | #1 Posté le 18/8/2011 à 11:57:00 | ||||
Bonjour, Je fais un petit programme qui me calcul les % a partir d'un fichier .txt que me fait un autre programme. Comment surveiller la création du fichier .txt et les changements du fichier .txt Merci a ceux qui pourront m'aider. Dell Vostro 3750 Ubuntu 13.04 - Gambas 3.4.1 | |||||
linuxos | #2 Posté le 18/8/2011 à 12:32:00 | ||||
Un peu de sel, de poivre et la crevette sera... | Bonjour, Il faudrait que tu nous en dise un peu plus sur ton projet car il existe plusieurs manieres des faire les choses selon les cas. 1 - pour détecter les modifications d'un fichier tu peux te baser sur: - la date + heure - le checksum du fichier ( commande linux: checksum <fichier>) - le nom si il change a chaque modif/creation 2 - pour la création ou existance d'un nouveau fichier - compter le nombre de fichiers dans le répertoire ou se situe les fichiers crées/nouveaux - tester la présence d'un fichier en particulier si tu connais le nom exacte Ainsi tu comprends qu'il y plusieurs cas de figure et qu'il te faut être plus précis dans tes explications pour que l'on puisse t'aider. Olivier Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous. | ||||
loki | #3 Posté le 18/8/2011 à 13:04:00 | ||||
salut, En faite mon problème n'est pas trop le changement du contenue que j'arrive a résoudre car chaque entrée dans mon fichier .txt est, ou numéroté, ou ajoute une ligne donc facilement reconnaissable. Mon problème est sur le fait d’être a l'écoute tout le temps du fichier .txt sachant que les entrées sont faites aléatoirement dans le temps. Pour le fichier je lui montre au début manuellement l'emplacement (ça lui permet d'avoir l'emplacement et le nom) puis le cycle des entrées se fait (la je veut calculer mes % en direct) puis le fichier .txt s'archive et un nouveau fichier .txt est créé qui remplace le premier au même nom(les noms change chaque jours mais pas la même journée). voila quelques infos supplémentaires. Dell Vostro 3750 Ubuntu 13.04 - Gambas 3.4.1 | |||||
linuxos | #4 Posté le 18/8/2011 à 14:18:00 | ||||
Un peu de sel, de poivre et la crevette sera... | Alors dans ce cas, il faut que tu me donne le bout de code qui tu a ecrit et que tu me décrive un peu plus ou tu affiche le résultat (qui ne s'affiche pas pour le moment) le type d'object.... enfin ce qu'il faut pour que je puisse t'aider. Olivier Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous. | ||||
loki | #5 Posté le 18/8/2011 à 16:54:00 | ||||
Merci pour tes réponses rapides Mais sleep et wait j'ai déja testé dans une boucle while > wend ça ne laisse pas afficher le programme, seule la boucle et les calculs se fonts mais rien ne s'affiche, il n'y a que la console qui fonctionne. Dell Vostro 3750 Ubuntu 13.04 - Gambas 3.4.1 | |||||
linuxos | #6 Posté le 18/8/2011 à 21:08:00 | ||||
Un peu de sel, de poivre et la crevette sera... | C'est normal, quand les evenements sont trop rapide, il faut laisser du temps a l'interface pour afficher les résultats: un petit WAIT 0,1 par exemple redonne du temps a l'interface pour rafraichir le contenu de ses objets. Olivier Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous. | ||||
spheris | #7 Posté le 18/8/2011 à 21:17:00 | ||||
loki, une autre solution toute simple consiste à stocker dans une variable booléenne à chaque modif de fichier. Ainsi, dans ton code, lors de la modification de ton fichier tu passe cette variable à 1. De ce fait il est en premanence possible d'identifier un changement quelquonque dans ton fichier. Bonne soirée | |||||
loki | #8 Posté le 18/8/2011 à 21:48:00 | ||||
@linuxos J'ai monté mon wait et sleep a 1,5,10,25 mais rien n'y fait ou alors j'en ai fait une mauvaise utilisation... @spheris J'ai rien compris Dell Vostro 3750 Ubuntu 13.04 - Gambas 3.4.1 | |||||
linuxos | #9 Posté le 18/8/2011 à 22:02:00 | ||||
Un peu de sel, de poivre et la crevette sera... | Alors dans ce cas, il faut que tu me donne le bout de code qui tu a ecrit et que tu me décrive un peu plus ou tu affiche le résultat (qui ne s'affiche pas pour le moment) le type d'object.... enfin ce qu'il faut pour que je puisse t'aider. Olivier Lorsqu'on s'occupe d'informatique, il faut faire comme les canards... Paraître calme en surface et pédaler comme un forcené par en dessous. | ||||
Prokopy | #10 Posté le 18/8/2011 à 22:03:00 | ||||
Kinder Pingui | Salut, En fait ce que vous cherchez à faire c'est ce que fait l'instruction Watch non ?
Ensuite à chaque appel de File_Read() tu récupères un octet de ton fichier, et tu peux ainsi reconstituer la ligne complète. La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi. Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi. | ||||
loki | #11 Posté le 18/8/2011 à 23:31:00 | ||||
@Prokopy Avant de poster j'avais regardé sur la doc car j'avais vu qu'on pouvait surveiller un port série avec WATCH et j'ai pas réussi a m'en servir (je vient de réessayer mais rien a faire) si tu y arrive @linuxos je te mettrai mon bout de code demain (je vais continuer d'essayer des trucs... avec un peu de chance ) Dell Vostro 3750 Ubuntu 13.04 - Gambas 3.4.1 | |||||
loki | #12 Posté le 19/8/2011 à 12:34:00 | ||||
J'ai enfin réussi, je sais pas si c'est ce qu'il faut faire mais sa l'air de marcher... J'ai fait comme ça:
Si il y a des choses plus faciles ou une autre façon de faire, n’hésiter pas Merci encore pour votre aide. Dell Vostro 3750 Ubuntu 13.04 - Gambas 3.4.1 | |||||
Prokopy | #13 Posté le 19/8/2011 à 12:56:00 | ||||
Kinder Pingui | Voici le code que j'ai utilisé :
Ce code est dans la classe d'un formulaire où il y a un textArea pour afficher le fichier. Par contre chez moi la fonction Eof() ne semble pas aimer quand je supprime des choses dans mon fichier. Mais si il n'y a que des ajouts dans le fichier ça va. Pour ton code il ne faut pas mettre de Wait dans un évènement, ça cause des débordements de pile, utilise plutôt Sleep si tu veux rendre la main. Et puis deux secondes c'est beaucoup, ça risque de faire un sacré temps de réaction. Un centième de seconde ça suffit largement pour ne pas surcharger le système sans qu'il y ait de temps de réaction visible. Sinon, comment tu récupères le nouveau contenu du fichier ? La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi. Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi. | ||||
loki | #14 Posté le 19/8/2011 à 14:01:00 | ||||
Effectivement avec SLEEP je n'ai plus de cycle processeur alors qu'avec WAIT je tournai entre 4% et 8%. En fait le bout de programme que j'ai mis est juste pour la surveillance du fichier qui dès que la date d'enregistrement change le programme m'affiche "changement" Dans le programme final le
se transforme en
un Sub ou sont fait la récupération des données et les analyses Voila mais j'ai pas finis j'suis encore dans les tests... Dell Vostro 3750 Ubuntu 13.04 - Gambas 3.4.1 | |||||
1 |