bonsoir , , tout d'abord je me présente ; je suis un élève ingénieur informatique industrielle , je suis entrains de développer un programme c++ (.dll) qui me permet de créer un système d'automatisation ensuite et je suis bloqué dans une tache de ce projet.
quand mon dll tombe "offline" je doit stoppé tout les tache en cours et quand il revient "OnLine" il suffit de tester s'il y a modification au niveau du configuration donc j'ai créer 2 fichiers l'un pour enregistrer l'ancien config et l'autre pour la nouvelle config après l'offline , ensuite j'ai comparé les deux fichiers si pas de modification donc pas de problème si non je doit informer l’utilisateur ; donc je veux récupérer seulement les lignes ou il y a la modification dans un tableau et l'envoyer ensuite (cette tache doit réaliser avec ZMQ et pour les testes mon utilisateur c'est le workflow ) , et j'attend la repense , si l'utilisateur confirme que c'est lui qui a fait ces modification donc rien ne ce passe juste je doit vider le fichier "new config" sinon je doit remplacer les nouveaux valeurs du config par les anciens .
voila c'est mon code , je demande votre aide parce que j'ai des contraintes de temps et merci d'avance.
petite remarque : dans le cas réel j'ai 831 lignes a tester et chaque ligne sera afficher comme ça :
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98 #include "stdafx.h" #include <iostream> #include <string> #include <fstream> void Default_Config() { fstream fichier("default config.txt", ios::out | ios::trunc); if (fichier) { for (int i = 0; i < 15; i++) { int a = 5; // c'est valeur juste pour tester a = a*i; fichier << a << endl; } fichier.close(); } else cerr << "Impossible d'ouvrir le fichier !" << endl; } void new_config() { fstream fichier("new config", ios::out | ios::trunc); if (fichier) { for (int i = 0; i < 15; i++) { int a = 6; a = a*i; fichier << a << endl; } fichier.close(); } else cerr << "Impossible d'ouvrir le fichier !" << endl; } std::string fichiers_identiques_strcmp(string fichier1, string fichier2) { std::string a = ""; int position = 0; char str1[256]; char str2[256]; fstream file1(fichier1, ios::in); fstream file2(fichier2, ios::in); if (!file1 || !file2) { perror("Impossible d'ouvrir les fichiers"); exit(1); } while (file1 >> str1 && file2 >> str2) { position++; if (strcmp(str1, str2) != 0) { a +=str2; } } file1.close(); file2.close(); return a; } int main() { string fiche1 = "default config.txt"; string fiche2 = "new config.txt"; /*fstream file(fiche1, ios::out);*/ std::string c; int b; Default_Config(); Default_Config1(); if (lineNumber(fiche1) == lineNumber(fiche2)) { c = fichiers_identiques_strcmp("default config.txt", "new config.txt"); /*return a;*/ } /*else c = false;*/ b = lineNumber(fiche1); string s; fstream file; file.open(fiche1, ios::out); file << "" << endl; file.close(); return 0; }
PC: XXX PcV:yyyy
PC: program code
PcV: program code value
XXX: 001 => 831
yyyy : la valeur
Partager