salut j aimerai savoir si il est possible que des information provenant d un module perso soit affiche sur l interface fenetre d un script
salut j aimerai savoir si il est possible que des information provenant d un module perso soit affiche sur l interface fenetre d un script
Peux-tu être un peu plus précis ?
@++
GLDavid
Consultez la FAQ Perl ainsi que mes cours de Perl.
N'oubliez pas les balises code ni le tag
Je ne répond à aucune question technique par MP.
ben voila j ai ecrit un module qui met en forme un fichier de donne mais avant de le mettre en forme il verifie que se fichier soit complet et j aimerai que lorsqu il detecte une anomalie il renvoie l erreur a script qui la apele pour qu il l affiche dans une fenetre reserve a cette effet
Dans ce cas, il faut nous montrer ton code. Rien ne t'empêche d'écrire une fonction qui renverrait par exemple un nombre et dans ton script Perl, tu testes la valeur de retour de ce nombre.
@++
GLDavid
Consultez la FAQ Perl ainsi que mes cours de Perl.
N'oubliez pas les balises code ni le tag
Je ne répond à aucune question technique par MP.
Post nous le code
Vista powaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ::
voila je vous transmet le code de mon script et de mon module
voila le script
et voici le module les autre auquel je fais appel sont bati sur le meme modele
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199 #! C:\Perl\bin\perl -w use Tk ; use Tk::NoteBook ; use fiche_technique ; use fiche_annuaire ; use fiche_abonne ; $plaque = 'plaque' ; $site = 'site' ; $technique = 'listeabo.txt' ; $annuaire = 'annext.out' ; $abonne = 'fiche_abonne.txt' ; $sda = '' ; $choix1 = $choix2 = $choix3 = 0 ; # creation des routines sub fiche_technique { fiche_technique::fiche_technique ( $plaque,$site,$technique ); } sub fiche_annuaire { fiche_annuaire::fiche_annuaire ( $plaque,$site,$annuaire ); } sub fiche_abonne { fiche_abonne::fiche_abonne ( $plaque,$site,$abonne ); } sub totalite { if ( $choix1 == 0 ) { } else { fiche_technique::fiche_technique ( $plaque,$site,$technique ); } if ( $choix2 == 0 ) { } else { fiche_annuaire::fiche_annuaire ( $plaque,$site,$annuaire ); } if ( $choix3 == 0 ) { } else { fiche_abonne::fiche_abonne ( $plaque,$site,$abonne ); } } # Création de la fenêtre principale $fenetre = new MainWindow ( ) ; $fenetre -> title ( "traitement des informations telephoniques" ) ; # creation du cadre de menu de fichier $cadre_menu = $fenetre -> Frame ( -relief => 'groove' , -borderwidth => 2 ) ; # creation du menu de fichier $menu_fichier = $cadre_menu -> Menubutton ( -text => 'Fichier' , -tearoff => 0 , -menuitems => [ [ 'command' => 'Quitter' , - command => sub { exit ( 0 ) } ] ] ) ; $menu_conversion = $cadre_menu -> Menubutton ( -text => 'conversion' , -tearoff => 0 , -menuitems => [ [ 'command' => 'XLISTE -> AFFTEL' , - command => sub { exit ( 0 ) } ] ] ) ; $menu_apropos = $cadre_menu -> Menubutton ( -text => 'A propos...' , -tearoff => 0 , -menuitems => [ [ 'command' => 'A propos...' ] , ] ) ; # ceation du cadres $cadre_onglet = $fenetre -> Frame ( ) ; # Création du widget "Onglets" $nb_config = $cadre_onglet -> NoteBook ( -ipady => 4 ) ; # Création des cinq fiches $o_site = $nb_config -> add ( "site" , -label => "site mtgt" ) ; $o_technique = $nb_config -> add ( "technique" , -label => "Fiche Technique" ) ; $o_annuaire = $nb_config -> add ( "annuaire" , -label => "Fiche Annuaire" ) ; $o_abonne = $nb_config -> add ( "abonne" , -label => "Fiche Abonne" ) ; $o_start = $nb_config -> add ( " traitement " , -label => " traitement " ) ; #creation de la fiche "site" $o_site -> Label ( -text => 'Nom de la plaque a traite :' ) -> pack ( ) ; $o_site -> Entry ( -textvariable => \$plaque , -width => 15 , -font => '{Courier} 10 {normal}' ) -> pack ( ) ; $o_site -> Label ( -text => 'Nom du site a traite :' ) -> pack ( ) ; $o_site -> Entry ( -textvariable => \$site , -width => 15 , -font => '{Courier} 10 {normal}' ) -> pack ( ) ; # Configuration de la fiche "technique" $o_technique -> Label ( -text => 'Nom du fichier AFFTEL :' ) -> pack ( ) ; $o_technique -> Entry ( -textvariable => \$technique , -width => 15 , -font => '{Courier} 10 {normal}' ) -> pack ( ) ; $boutonft = $o_technique -> Button ( -text => ' traitement ' , -command => \&fiche_technique ) ; $boutonft -> pack ( -pady => 4 ) ; # Création de la fiche "annuaire" $o_annuaire -> Label ( -text => 'Nom du fichier ANNUAIRE :' ) -> pack ( ) ; $o_annuaire -> Entry ( -textvariable => \$annuaire , -width => 15 , -font => '{Courier} 10 {normal}' ) -> pack ( ) ; $boutonfa = $o_annuaire -> Button ( -text => ' traitement ' , -command => \&fiche_annuaire ) ; $boutonfa -> pack ( -pady => 4 ) ; # Création de la fiche "abonne" $o_abonne -> Label ( -text => 'Nom de sorti du fichier abonne :' ) -> pack ( ) ; $o_abonne -> Entry ( -textvariable => \$abonne , -width => 15 , -font => '{Courier} 10 {normal}' ) -> pack ( ) ; $boutonfabo = $o_abonne -> Button ( -text => ' traitement ' , -command => \&fiche_abonne ) ; $boutonfabo -> pack ( -pady => 4 ) ; # creation de la fiche "start" $c_choix1 = $o_start -> Checkbutton ( -text => 'fiche technique' , -variable => \$choix1 ) -> pack ( ) ; $c_choix2 = $o_start -> Checkbutton ( -text => 'fiche annuaire' , -variable => \$choix2 ) -> pack ( ) ; $c_choix3 = $o_start -> Checkbutton ( -text => 'fiche abonne' , -variable => \$choix3 ) -> pack ( ) ; $o_start -> Label ( -text => 'execution de tout les traitements :' ) -> pack ( ) ; $bouton = $o_start -> Button ( -text => ' traitement ' , -command => \&totalite ) ; $bouton -> pack ( ) ; # Affichage des cadre et autre widget $cadre_menu -> pack ( -side => 'top' , -anchor => 'n' , -expand => 1 , -fill => 'x' ) ; $cadre_onglet -> pack ( ) ; $menu_fichier -> pack ( -side => 'left' ) ; $menu_conversion -> pack ( -side => 'left' ) ; $menu_apropos -> pack ( -side => 'right' ) ; $nb_config -> pack ( ) ; MainLoop ( ) ;
la partie en italique et la fonction qui pour l instant quitte le prg si le fichier et incorrect mais j aimerai que l info remonte dans une fenetre du script principal
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
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152 #----- fiche_technique.pm ----- package fiche_technique ; sub fiche_technique { @information = @_ ; $plaque = $information[0] ; $site = $information[1] ; $fichierabo = $information[2] ; @fiche_technique = () ; @fichier = () ; @groupement = () ; #renseignement concernant le fichier a traite open ( FICHIER , "$plaque/$site/abonnes/$fichierabo" ) ; chomp ( @fichier = <FICHIER> ) ; close ( FICHIER ) ; #ouverture du fichier de donne propre au site traite open ( FICHIER , "$plaque/$site/donne_site.txt" ) ; chomp ( @donne_site = <FICHIER> ) ; close ( FICHIER ) ; [i] #verification de l integrite du fichier $integrite = grep /FINABO/ , @fichier ; if ( $integrite != 1 ) { print " ce fichier est corrompu " ; exit (0); } [/i] #detection du format de la capture $format1 = grep /Legende sur les Profils de Restrictions/ , @fichier ; $format2 = grep /Legende sur les Profils de Droits aux Facilites/ , @fichier ; @fiche_technique = grep /[NO]{8,24}/ , @fichier ; $format = ( $format1 + $format2 ) ; #traitement du tableau en fonction du format de la capture foreach ( @fiche_technique ) { if ( $format == 0 ) { if (/,[NO]{8},/) { $_ = $_ . "\n" ; } } elsif ( $format == 1 ) { #recherche groupement et type de groupement if (/,[NO]{8},/) { $type = substr ( $_ , 16 , 2 ) ; } if (/[NO]{24}/) { $gpt = substr ( $_ , 1 , 6 ) ; if ( $gpt =~ /\d{6}/ ) { $nb = grep /$gpt/ , @groupement ; if ( $nb < 1 ) { push ( @groupement , ( $gpt . "," . $type ) ) ; } } $_ = $_ . "\n" ; } } elsif ( $format == 2 ) { #recherche groupement et type de groupement if (/,[NO]{8},/) { $type = substr ( $_ , 16 , 2 ) ; } if (/[NO]{24}/) { $gpt = substr ( $_ , 1 , 6 ) ; if ( $gpt =~ /\d{6}/ ) { $nb = grep /$gpt/ , @groupement ; if ( $nb < 1 ) { push ( @groupement , ( $gpt . "," . $type ) ) ; } } } if (/\|[NO]{8}\|/) { s/;// ; $_ = $_ . "\n" ; } } } #insertion des groupement foreach ( @groupement ) { push ( @fiche_technique , $_ . ",gpt,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,-----,\n" ) ; } #subtitution des chaine de caractere pour une exportation vers excel avec une virgule comme separateur foreach ( @fiche_technique ) { s/CREABO\s,,|// ; s/\||;/,/g ; s/,\s{1,7},/,-----,/g ; s/,\s{1,7},/,-----,/g ; s/,\n/\n/g ; s/\d{6}/$donne_site[2]$&/; } #mise place d un entete en fonction du format if ( $format == 0 ) { $entete = "NA,TA,TY,NP,GG,LL,EQ,SO,SE,RJ,RN,LJ,LN,CF,RS,GI1,GI2,SS,GR1,GR2,NJ,NN,V,E,PLANS,CEL,PZ,L,POSSEC,CP,CD,CA,CC\n" ; unshift ( @fiche_technique , $entete ) ; } if ( $format == 1 ) { $entete = "NA,TA,TY,NP,GG,LL,EQ,SO,SE,RJ,RN,LJ,LN,CF,RS,GI1,GI2,SS,GR1,GR2,NJ,NN,V,E,PLANS,CEL,PZ,L,POSSEC,CP,CD,CA,CC,NG,LIA Jour,LIA Nuit,RST Jour,RST Nuit\n" ; unshift ( @fiche_technique , $entete ) ; } if ( $format == 2 ) { $entete = "NA,TA,TY,NP,GG,LL,EQ,SO,SE,RJ,RN,LJ,LN,CF,RS,GI1,GI2,SS,GR1,GR2,NJ,NN,V,E,PLANS,CEL,PZ,L,POSSEC,CP,CD,CA,CC,NG,LIA Jour,LIA Nuit,RST Jour,RST Nuit,FAC1,FAC2,FAC3,FAC4,FAC5,FAC6,FAC7,FAC8\n" ; unshift ( @fiche_technique , $entete ) ; } #sauvegarde du tableau resultat dans un fichier open ( FICHIER , "> $plaque/$site/abonnes/fiche_technique.txt" ) ; print FICHIER @fiche_technique ; close ( FICHIER ) ; } 1;
Euh ... ... ça fait beaucoup de code d'un coup.
Ca risque d'en décourager plus d'un pour t'aider à trouver
Pourrais-tu, s'il te plait, faire le ménage dans ton code pour ne garder que la partie strictement nécessaire à la démonstration du problème.
Cela nous aidera à le trouver, et nous évitera de tout ré-écrire à notre sauce, et cela peut même te permettre de le trouver tout seul (c'est plus facile dans 20 lignes que dans 200 )
Merci d'avance.
La FAQ Perl est par ici
: La fonction "Rechercher", on aurait dû la nommer "Retrouver" - essayez et vous verrez pourquoi !
ok voici le modle simplifie a l essentiel
et le script
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 #----- fiche_technique.pm ----- package fiche_technique ; sub fiche_technique { @information = @_ ; $plaque = $information[0] ; $site = $information[1] ; $fichierabo = $information[2] ; @fiche_technique = () ; @fichier = () ; @groupement = () ; #renseignement concernant le fichier a traite open ( FICHIER , "$plaque/$site/abonnes/$fichierabo" ) ; chomp ( @fichier = <FICHIER> ) ; close ( FICHIER ) ; #verification de l integrite du fichier $integrite = grep /FINABO/ , @fichier ; if ( $integrite != 1 ) { print " ce fichier est corrompu " ; exit (0); } } 1;
pour le module je pense que en faire un objet pourrai peut etre etre la solution
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 #! C:\Perl\bin\perl -w use Tk ; use Tk::NoteBook ; use fiche_technique ; $plaque = 'plaque' ; $site = 'site' ; $technique = 'listeabo.txt' ; # creation des routines sub fiche_technique { fiche_technique::fiche_technique ( $plaque,$site,$technique ); } # Création de la fenêtre principale $fenetre = new MainWindow ( ) ; $fenetre -> title ( "traitement des informations telephoniques" ) ; # Création du widget "Onglets" $nb_config = $fenetre -> NoteBook ( -ipady => 4 ) ; # Création des cinq fiches $o_site = $nb_config -> add ( "site" , -label => "site " ) ; $o_technique = $nb_config -> add ( "technique" , -label => "Fiche Technique" ) ; $o_affichage = $nb_config -> add ( " affichage " , -label => " affichage " ) ; #creation de la fiche "site" $o_site -> Label ( -text => 'Nom de la plaque a traite :' ) -> pack ( ) ; $o_site -> Entry ( -textvariable => \$plaque , -width => 15 , -font => '{Courier} 10 {normal}' ) -> pack ( ) ; $o_site -> Label ( -text => 'Nom du site a traite :' ) -> pack ( ) ; $o_site -> Entry ( -textvariable => \$site , -width => 15 , -font => '{Courier} 10 {normal}' ) -> pack ( ) ; # Configuration de la fiche "technique" $o_technique -> Label ( -text => 'Nom du fichier L :' ) -> pack ( ) ; $o_technique -> Entry ( -textvariable => \$technique , -width => 15 , -font => '{Courier} 10 {normal}' ) -> pack ( ) ; $boutonft = $o_technique -> Button ( -text => ' traitement ' , -command => \&fiche_technique ) ; $boutonft -> pack ( -pady => 4 ) ; # creation de la fiche "affichage" $texte = $o_affichage -> Text ( -width => 40 , -height => 10 ) ; $texte -> pack ( ) ; $nb_config -> pack ( -expand => 1 , -fill => 'both' ) ; MainLoop ( ) ;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager