Programme ne répond pas mais fonctionne sans affichage.
-
- Messages : 6
- Inscription : jeu. 12/mai/2016 19:16
Programme ne répond pas mais fonctionne sans affichage.
Bonjour,
Je suis nouveau sur ce forum.
Je commence à programmer avec Purebasic avec les bases de Quick Basic.
Je viens de réaliser un programme qui permet d'extraire les lignes contenues dans une liste de fichier (liste 1) qui contiennent un des 100 critères définis dans un fichier (liste 2). Ces lignes sont rassemblées dans un fichier du même nom que le critère recherché. Ces lignes sont supprimées des fichiers de la liste 1.
Le programme démarre puis "ne répond pas" s'affiche dans le titre de la fenêtre. Le programme continue à fonctionner mais l'affichage de la progression et des résultats est figé jusqu'à la fin du programme.
J'aimerais être aidé sur ce projet. Une copie du code peut être fourni mais comment le faire ?
Merci d'avance
Georges.
Je suis nouveau sur ce forum.
Je commence à programmer avec Purebasic avec les bases de Quick Basic.
Je viens de réaliser un programme qui permet d'extraire les lignes contenues dans une liste de fichier (liste 1) qui contiennent un des 100 critères définis dans un fichier (liste 2). Ces lignes sont rassemblées dans un fichier du même nom que le critère recherché. Ces lignes sont supprimées des fichiers de la liste 1.
Le programme démarre puis "ne répond pas" s'affiche dans le titre de la fenêtre. Le programme continue à fonctionner mais l'affichage de la progression et des résultats est figé jusqu'à la fin du programme.
J'aimerais être aidé sur ce projet. Une copie du code peut être fourni mais comment le faire ?
Merci d'avance
Georges.
- microdevweb
- Messages : 1802
- Inscription : mer. 29/juin/2011 14:11
- Localisation : Belgique
Re: Programme ne répond pas mais fonctionne sans affichage.
Sans un code exemple difficile de répondre
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Work at Centre Spatial de Liège
-
- Messages : 6
- Inscription : jeu. 12/mai/2016 19:16
Re: Programme ne répond pas mais fonctionne sans affichage.
Quelle est la bonne procédure pour afficher le code de mon programme ?
-
- Messages : 6
- Inscription : jeu. 12/mai/2016 19:16
Re: Programme ne répond pas mais fonctionne sans affichage.
Code : Tout sélectionner
;
; ------------------------------------------------------------
;
; Extracteur pour max. 100 critères - V 1.0
;
; (c) 2016 - Georges (12/05/2016)
;
; ------------------------------------------------------------
;
Dim GG$(100)
Dim CPT(100)
Dim XA(100)
Dim YA(100)
Dim XB(100)
Dim YB(100)
XA(1)=10 : YA(1)=175 : XB(1)=80 : YB(1)=175
XA(2)=10 : YA(2)=200 : XB(2)=80 : YB(2)=200
XA(3)=10 : YA(3)=225 : XB(3)=80 : YB(3)=225
XA(4)=10 : YA(4)=250 : XB(4)=80 : YB(4)=250
XA(5)=10 : YA(5)=275 : XB(5)=80 : YB(5)=275
XA(6)=10 : YA(6)=300 : XB(6)=80 : YB(6)=300
XA(7)=10 : YA(7)=325 : XB(7)=80 : YB(7)=325
XA(8)=10 : YA(8)=350 : XB(8)=80 : YB(8)=350
XA(9)=10 : YA(9)=375 : XB(9)=80 : YB(9)=375
XA(10)=10 : YA(10)=400 : XB(10)=80 : YB(10)=400
XA(11)=10 : YA(11)=425 : XB(11)=80 : YB(11)=425
XA(12)=10 : YA(12)=450 : XB(12)=80 : YB(12)=450
XA(13)=10 : YA(13)=475 : XB(13)=80 : YB(13)=475
XA(14)=10 : YA(14)=500 : XB(14)=80 : YB(14)=500
XA(15)=10 : YA(15)=525 : XB(15)=80 : YB(15)=525
XA(16)=10 : YA(16)=550 : XB(16)=80 : YB(16)=550
XA(17)=10 : YA(17)=575 : XB(17)=80 : YB(17)=575
XA(18)=10 : YA(18)=600 : XB(18)=80 : YB(18)=600
XA(19)=10 : YA(19)=625 : XB(19)=80 : YB(19)=625
XA(20)=10 : YA(20)=650 : XB(20)=80 : YB(20)=650
XA(21)=144 : YA(21)=175 : XB(21)=214 : YB(21)=175
XA(22)=144 : YA(22)=200 : XB(22)=214 : YB(22)=200
XA(23)=144 : YA(23)=225 : XB(23)=214 : YB(23)=225
XA(24)=144 : YA(24)=250 : XB(24)=214 : YB(24)=250
XA(25)=144 : YA(25)=275 : XB(25)=214 : YB(25)=275
XA(26)=144 : YA(26)=300 : XB(26)=214 : YB(26)=300
XA(27)=144 : YA(27)=325 : XB(27)=214 : YB(27)=325
XA(28)=144 : YA(28)=350 : XB(28)=214 : YB(28)=350
XA(29)=144 : YA(29)=375 : XB(29)=214 : YB(29)=375
XA(30)=144 : YA(30)=400 : XB(30)=214 : YB(30)=400
XA(31)=144 : YA(31)=425 : XB(31)=214 : YB(31)=425
XA(32)=144 : YA(32)=450 : XB(32)=214 : YB(32)=450
XA(33)=144 : YA(33)=475 : XB(33)=214 : YB(33)=475
XA(34)=144 : YA(34)=500 : XB(34)=214 : YB(34)=500
XA(35)=144 : YA(35)=525 : XB(35)=214 : YB(35)=525
XA(36)=144 : YA(36)=550 : XB(36)=214 : YB(36)=550
XA(37)=144 : YA(37)=575 : XB(37)=214 : YB(37)=575
XA(38)=144 : YA(38)=600 : XB(38)=214 : YB(38)=600
XA(39)=144 : YA(39)=625 : XB(39)=214 : YB(39)=625
XA(40)=144 : YA(40)=650 : XB(40)=214 : YB(40)=650
XA(41)=278 : YA(41)=175 : XB(41)=348 : YB(41)=175
XA(42)=278 : YA(42)=200 : XB(42)=348 : YB(42)=200
XA(43)=278 : YA(43)=225 : XB(43)=348 : YB(43)=225
XA(44)=278 : YA(44)=250 : XB(44)=348 : YB(44)=250
XA(45)=278 : YA(45)=275 : XB(45)=348 : YB(45)=275
XA(46)=278 : YA(46)=300 : XB(46)=348 : YB(46)=300
XA(47)=278 : YA(47)=325 : XB(47)=348 : YB(47)=325
XA(48)=278 : YA(48)=350 : XB(48)=348 : YB(48)=350
XA(49)=278 : YA(49)=375 : XB(49)=348 : YB(49)=375
XA(50)=278 : YA(50)=400 : XB(50)=348 : YB(50)=400
XA(51)=278 : YA(51)=425 : XB(51)=348 : YB(51)=425
XA(52)=278 : YA(52)=450 : XB(52)=348 : YB(52)=450
XA(53)=278 : YA(53)=475 : XB(53)=348 : YB(53)=475
XA(54)=278 : YA(54)=500 : XB(54)=348 : YB(54)=500
XA(55)=278 : YA(55)=525 : XB(55)=348 : YB(55)=525
XA(56)=278 : YA(56)=550 : XB(56)=348 : YB(56)=550
XA(57)=278 : YA(57)=575 : XB(57)=348 : YB(57)=575
XA(58)=278 : YA(58)=600 : XB(58)=348 : YB(58)=600
XA(59)=278 : YA(59)=625 : XB(59)=348 : YB(59)=625
XA(60)=278 : YA(60)=650 : XB(60)=348 : YB(60)=650
XA(61)=412 : YA(61)=175 : XB(61)=482 : YB(61)=175
XA(62)=412 : YA(62)=200 : XB(62)=482 : YB(62)=200
XA(63)=412 : YA(63)=225 : XB(63)=482 : YB(63)=225
XA(64)=412 : YA(64)=250 : XB(64)=482 : YB(64)=250
XA(65)=412 : YA(65)=275 : XB(65)=482 : YB(65)=275
XA(66)=412 : YA(66)=300 : XB(66)=482 : YB(66)=300
XA(67)=412 : YA(67)=325 : XB(67)=482 : YB(67)=325
XA(68)=412 : YA(68)=350 : XB(68)=482 : YB(68)=350
XA(69)=412 : YA(69)=375 : XB(69)=482 : YB(69)=375
XA(70)=412 : YA(70)=400 : XB(70)=482 : YB(70)=400
XA(71)=412 : YA(71)=425 : XB(71)=482 : YB(71)=425
XA(72)=412 : YA(72)=450 : XB(72)=482 : YB(72)=450
XA(73)=412 : YA(73)=475 : XB(73)=482 : YB(73)=475
XA(74)=412 : YA(74)=500 : XB(74)=482 : YB(74)=500
XA(75)=412 : YA(75)=525 : XB(75)=482 : YB(75)=525
XA(76)=412 : YA(76)=550 : XB(76)=482 : YB(76)=550
XA(77)=412 : YA(77)=575 : XB(77)=482 : YB(77)=575
XA(78)=412 : YA(78)=600 : XB(78)=482 : YB(78)=600
XA(79)=412 : YA(79)=625 : XB(79)=482 : YB(79)=625
XA(80)=412 : YA(80)=650 : XB(80)=482 : YB(80)=650
XA(81)=546 : YA(81)=175 : XB(81)=616 : YB(81)=175
XA(82)=546 : YA(82)=200 : XB(82)=616 : YB(82)=200
XA(83)=546 : YA(83)=225 : XB(83)=616 : YB(83)=225
XA(84)=546 : YA(84)=250 : XB(84)=616 : YB(84)=250
XA(85)=546 : YA(85)=275 : XB(85)=616 : YB(85)=275
XA(86)=546 : YA(86)=300 : XB(86)=616 : YB(86)=300
XA(87)=546 : YA(87)=325 : XB(87)=616 : YB(87)=325
XA(88)=546 : YA(88)=350 : XB(88)=616 : YB(88)=350
XA(89)=546 : YA(89)=375 : XB(89)=616 : YB(89)=375
XA(90)=546 : YA(90)=400 : XB(90)=616 : YB(90)=400
XA(91)=546 : YA(91)=425 : XB(91)=616 : YB(91)=425
XA(92)=546 : YA(92)=450 : XB(92)=616 : YB(92)=450
XA(93)=546 : YA(93)=475 : XB(93)=616 : YB(93)=475
XA(94)=546 : YA(94)=500 : XB(94)=616 : YB(94)=500
XA(95)=546 : YA(95)=525 : XB(95)=616 : YB(95)=525
XA(96)=546 : YA(96)=550 : XB(96)=616 : YB(96)=550
XA(97)=546 : YA(97)=575 : XB(97)=616 : YB(97)=575
XA(98)=546 : YA(98)=600 : XB(98)=616 : YB(98)=600
XA(99)=546 : YA(99)=625 : XB(99)=616 : YB(99)=625
XA(100)=546 : YA(100)=650 : XB(100)=616 : YB(100)=650
If ReadFile(0, "D:\QB64\LIFICH02.TXT")
;VERIFICATION SI FICHIER EXISTE
Goto PROCED01
Else
MessageRequester("Erreur à la lecture.","Le fichier : D:\QB64\LIFICH02.TXT n'existe pas",0)
Goto FIN01
EndIf
PROCED01:
LR = 0
While Eof(0) = 0 ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
LIGNE1$ = Trim(ReadString(0))
;MessageRequester("Attention", "Ligne en cours : "+LIGNE1$, 0)
LR = LR + 1
GG$(LR) = LIGNE1$
Wend
CloseFile(0) ; Ferme le fichier précédemment ouvert
; ***** LE FICHIER LIFICH02 CONTIENT LES CRITERES DE RECHERCHE **************
If ReadFile(0, "D:\QB64\LIFICH01.TXT")
;VERIFICATION SI FICHIER EXISTE
Goto PROCED02
Else
MessageRequester("Erreur à la lecture.","Le fichier : D:\QB64\LIFICH01.TXT n'existe pas",0)
Goto FIN01
EndIf
PROCED02:
S = 0
While Eof(0) = 0 ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
LIGNE2$ = Trim(ReadString(0))
;MessageRequester("Attention", "Ligne en cours : "+LIGNE2$, 0)
S =S + 1
Wend
CloseFile(0) ; Ferme le fichier précédemment ouvert
; ***** LE FICHIER LIFICH01 CONTIENT LES NOMS DES FICHIERS A CONSULTER **************
; Chargement des images.
;
LoadImage(0, "cigle2.bmp")
OpenWindow(0, 100, 200, 700, 750, "Extracteur pour max. 100 critères V1.0", #PB_Window_ScreenCentered )
ImageGadget(0, 555, 20, 0, 0, ImageID(0))
ProgressBarGadget(203, 20, 710, 660, 20, Y, S)
TextGadget(206, 20,70,250,20,"Lignes supprimées : ")
For P = 1 To LR
TextGadget(P, XA(P), YA(P), 60, 20, GG$(P),#PB_Text_Border)
Next P
For NS=1 To LR
TextGadget(NS+100, XB(NS), YB(NS), 50, 20, CPT$,#PB_Text_Border)
Next NS
TextGadget(204, 20, 20, 200, 20, "Fichier : "+Y+" / "+S)
TextGadget(205, 20, 45, 200, 20, "Taille du fichier : "+TTF01+" octets")
ProgressBarGadget(203, 20, 710, 660, 20, Y, S)
If ReadFile(0, "D:\QB64\LIFICH01.TXT")
;VERIFICATION SI FICHIER EXISTE
Goto PROCED03
Else
MessageRequester("Erreur à la lecture.","Le fichier : D:\QB64\LIFICH01.TXT n'existe pas",0)
Goto FIN01
EndIf
PROCED03:
CT = 0
Y = 0
TTF01 = 0
While Eof(0) = 0 ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
A$ = Trim(ReadString(0))
;MessageRequester("Attention", "Ligne en cours : "+A$, 0)
H$ = "F:\8DSN\" + A$
Y = Y + 1
If ReadFile(1, H$)
;VERIFICATION SI FICHIER EXISTE
TTF01 = Lof(1)
TTF02 = TTF02 + TTF01
SetGadgetState(203, Y)
JJD.f=(Y)/S
JJD=JJD*100
TextGadget(207, 340,690,150,20," "+JJD+" %")
SetGadgetText(204, "Fichier : "+Y+" / "+S)
SetGadgetText(205, "Taille du fichier : "+TTF01+" octets")
;Delay(100)
Goto PROCED04
Else
MessageRequester("Erreur à la lecture.","Le fichier : "+H$+" n'existe pas",0)
Goto FIN01
EndIf
PROCED04:
JV = 0
If OpenFile(2, "F:\1\TEMPO33.TXV")
; Ligne vide
Goto PROCED05
Else
MessageRequester("Erreur", "Le fichier TEMPO33 ne peut etre créé", 0)
Goto FIN01
EndIf
PROCED05:
Z = 0
SA = 0
While Eof(1) = 0 ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
B$ = Trim(ReadString(1))
;MessageRequester("PureBasic", "Ligne en cours : "+A$, 0)
SA = SA + 1
If Len(B$) < 1
Goto PAS02
Else
EndIf
STE03:
B$ = UCase(B$)
PAS44:
For LT = 1 To LR
Position = FindString(B$, GG$(LT))
If Position > 0
HT = 1
Z = Z + 1
X = X + 1
FL$ = GG$(LT)
CPT(LT) = CPT(LT) + 1
CPT$ = Str(CPT(LT))
CPTT = CPTT+1
SetGadgetText(LT+100, CPT$)
;SetGadgetColor(LT+100, #PB_Gadget_BackColor, $0000FF)
;Delay(100)
;TextGadget(LT+100, XB(LT), YB(LT), 50, 20, CPT$,#PB_Text_Border ,#PB_Text_Right)
Goto PAS57
Else
EndIf
Next LT
PAS57:
HT = 0
PAS60:
QR$ = "F:\MEENS\BILANF09\" + FL$ + ".TRA"
If Z > 0
If OpenFile(3, QR$)
FileSeek(3, Lof(3)) ; Place le pointeur à la fin du fichier en utilisant le résultat de Lof()
; Ligne vide
Else
MessageRequester("Erreur fichier 3", "Le fichier ne peut etre créé", 0)
Goto Fin01
EndIf
Else
EndIf
If Z > 0
WriteStringN(3, B$)
CloseFile(3)
Else
EndIf
If Z = 0
WriteStringN(2, B$)
Else
EndIf
PAS02:
Z = 0
Wend
PAS58:
CloseFile(1)
CloseFile(2)
DeleteFile(H$)
RenameFile("F:\1\TEMPO33.TXV", H$)
;YT$ = "F:\1\TEMPO33.TXV"
;DeleteFile(YT$)
PAS01:
SetGadgetText(206,"Lignes supprimées : "+CPTT)
;Delay(100)
Wend
CloseFile(0)
PAS56:
PAS55:
Goto PAS7
PAS5:
;Input()
FIN01:
End
PAS7:
MessageRequester("Fin du programme", "Tout s'est exécuté sans problème.", 0)
End
-
- Messages : 6
- Inscription : jeu. 12/mai/2016 19:16
Re: Programme ne répond pas mais fonctionne sans affichage.
Petite précision, je recherche maximum 100 critères contenus dans un fichier texte nommé "LIFICH02.TXT".
Je recherche ces critères dans ± 243.000 fichiers texte dont la liste est dans le fichier texte nommé "LIFICH01.TXT"
L'ensemble de ces 243.000 fichiers correspond à un volume de 40Gb et le plus gros fichier fait environ 700Mb.
Georges.
Je recherche ces critères dans ± 243.000 fichiers texte dont la liste est dans le fichier texte nommé "LIFICH01.TXT"
L'ensemble de ces 243.000 fichiers correspond à un volume de 40Gb et le plus gros fichier fait environ 700Mb.
Georges.
Re: Programme ne répond pas mais fonctionne sans affichage.
Bonjour et bienvenue.
Essais l'instruction "debug" (elle affiche une valeur ou un message hors de ton programme, ca te permet de suivre son déroulement à la trace)
Place là un peu partout dans ton listing et regarde à quel moment ça bloque... Ca t'aidera déjà à cerner d'où vient le problème.
Ensuite en ce qui concerne la manière de programmer... Ca évoluera ne t'inquiète pas. On n'utilise quasiment plus de Goto ou alors de manière extrêmement rare. Regarde l'instruction "procedure" qui se rapproche d'un call/gosub pour te donner une analogie.
Idem au début du programme tu peux utiliser les instructions "datasection" et "data" pour initialiser ton tableau plus facilement...
Essais l'instruction "debug" (elle affiche une valeur ou un message hors de ton programme, ca te permet de suivre son déroulement à la trace)
Place là un peu partout dans ton listing et regarde à quel moment ça bloque... Ca t'aidera déjà à cerner d'où vient le problème.
Ensuite en ce qui concerne la manière de programmer... Ca évoluera ne t'inquiète pas. On n'utilise quasiment plus de Goto ou alors de manière extrêmement rare. Regarde l'instruction "procedure" qui se rapproche d'un call/gosub pour te donner une analogie.
Idem au début du programme tu peux utiliser les instructions "datasection" et "data" pour initialiser ton tableau plus facilement...
Dernière modification par Fig le jeu. 12/mai/2016 22:31, modifié 1 fois.
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Version de PB : 6.00LTS - 64 bits
Re: Programme ne répond pas mais fonctionne sans affichage.
Petite remarque vite fait en passant, oublie le goto !
Apprends à utiliser les procédures , ça va grandement te faciliter la vie, et ça sera plus simple pour t'aider.
Commence doucement pour apprivoiser PureBasic, et ensuite quand tu seras plus à l'aise tu pourras songer à faire ton prog avec tes critères.
Apprends à utiliser les procédures , ça va grandement te faciliter la vie, et ça sera plus simple pour t'aider.
Commence doucement pour apprivoiser PureBasic, et ensuite quand tu seras plus à l'aise tu pourras songer à faire ton prog avec tes critères.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Programme ne répond pas mais fonctionne sans affichage.
Bonjour et bienvenu Georges.
- Deux ProgressBarGadget avec le même identifiant 203
- Une succession de TextGadget qui auront les même identifiants entres eux.
- Pas de gestion d’événements de fenêtre (Dans ce cas je pense que ce n'est pas obligatoire)
- Pas de thread (dans ton cas) pour mettre à jour la barre de progression.
Tout comme Comtois, revoir les bases de Purebasic avant de t'engager dans ce type de code.
Je me suis arrêté sur cette partie du codeLe programme continue à fonctionner mais l'affichage de la progression et des résultats est figé jusqu'à la fin du programme.
Code : Tout sélectionner
OpenWindow(0, 100, 200, 700, 750, "Extracteur pour max. 100 critères V1.0", #PB_Window_ScreenCentered )
ImageGadget(0, 555, 20, 0, 0, ImageID(0))
ProgressBarGadget(203, 20, 710, 660, 20, Y, S)
TextGadget(206, 20,70,250,20,"Lignes supprimées : ")
For P = 1 To LR
TextGadget(P, XA(P), YA(P), 60, 20, GG$(P),#PB_Text_Border)
Next P
For NS=1 To LR
TextGadget(NS+100, XB(NS), YB(NS), 50, 20, CPT$,#PB_Text_Border)
Next NS
TextGadget(204, 20, 20, 200, 20, "Fichier : "+Y+" / "+S)
TextGadget(205, 20, 45, 200, 20, "Taille du fichier : "+TTF01+" octets")
ProgressBarGadget(203, 20, 710, 660, 20, Y, S))
- Une succession de TextGadget qui auront les même identifiants entres eux.
- Pas de gestion d’événements de fenêtre (Dans ce cas je pense que ce n'est pas obligatoire)
- Pas de thread (dans ton cas) pour mettre à jour la barre de progression.
Tout comme Comtois, revoir les bases de Purebasic avant de t'engager dans ce type de code.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Programme ne répond pas mais fonctionne sans affichage.
On sent que tu sais programmer la structure de ton programme ressemble à de l'assembleur en fait...
Ceci:
Peut être avantageusement remplacé par cela:
Ceci:
Code : Tout sélectionner
If OpenFile(2, "F:\1\TEMPO33.TXV")
; Ligne vide
Goto PROCED05
Else
MessageRequester("Erreur", "Le fichier TEMPO33 ne peut etre créé", 0)
Goto FIN01
EndIf
PROCED05:
Code : Tout sélectionner
If OpenFile(2, "F:\1\TEMPO33.TXV")=0
MessageRequester("Erreur", "Le fichier TEMPO33 ne peut etre créé", 0)
end
EndIf
PROCED05:
Il y a deux méthodes pour écrire des programmes sans erreurs. Mais il n’y a que la troisième qui marche.
Version de PB : 6.00LTS - 64 bits
Version de PB : 6.00LTS - 64 bits
Re: Programme ne répond pas mais fonctionne sans affichage.
et un exemple de procédure pour lire tes critères
Code : Tout sélectionner
Global Dim GG$(100)
Procedure LectureCritere()
Protected LR
If ReadFile(0, "D:\QB64\LIFICH02.TXT")
While Eof(0) = 0 And LR <100 ; Boucle tant que la fin du fichier n'est pas atteinte. (Eof = 'End Of File')
LIGNE1$ = Trim(ReadString(0))
;MessageRequester("Attention", "Ligne en cours : "+LIGNE1$, 0)
LR = LR + 1
GG$(LR) = LIGNE1$
Wend
CloseFile(0)
Else
MessageRequester("Erreur à la lecture.","Le fichier : D:\QB64\LIFICH02.TXT n'existe pas",0)
End
EndIf
EndProcedure
LectureCritere()
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Re: Programme ne répond pas mais fonctionne sans affichage.
Oui sans aucun doute.Fig a écrit :On sent que tu sais programmer
Il faut juste qu'il s'adapte à un autre langage qui permet de faire tellement plus de choses que les anciens basic. ça viendra vite, je n'en doute pas.
http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Re: Programme ne répond pas mais fonctionne sans affichage.
Autre chose, n'hésite pas à choisir des noms de variables explicites.
Dim Critere$(100) c'est quand même plus compréhensible que Dim GG$(100)
Et petite astuce,
LR = LR + 1 peut aussi s'écrire LR + 1 (tu verras beaucoup de codes PureBasic qui utilise ce raccourci)
Idem avec -, *, /
LR = LR / 4 peut s'écrire LR / 4
Mais là, ce n'est pas indispensable d'utiliser ce truc là
Dim Critere$(100) c'est quand même plus compréhensible que Dim GG$(100)
Et petite astuce,
LR = LR + 1 peut aussi s'écrire LR + 1 (tu verras beaucoup de codes PureBasic qui utilise ce raccourci)
Idem avec -, *, /
LR = LR / 4 peut s'écrire LR / 4
Mais là, ce n'est pas indispensable d'utiliser ce truc là

http://purebasic.developpez.com/
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
Je ne réponds à aucune question technique en PV, utilisez le forum, il est fait pour ça, et la réponse peut profiter à tous.
-
- Messages : 6
- Inscription : jeu. 12/mai/2016 19:16
Re: Programme ne répond pas mais fonctionne sans affichage.
Que veut dire "Protected LR" ?
Lorsque l'on crée une procédure, elle doit etre appelée pour etre exécutée ?
Merci pour vos réponses, je me sens un peu moins seul.
Georges.
Lorsque l'on crée une procédure, elle doit etre appelée pour etre exécutée ?
Merci pour vos réponses, je me sens un peu moins seul.
Georges.
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Programme ne répond pas mais fonctionne sans affichage.
ça veut dire que la variable est uniquement valable dans la procédure ou elle figure.Georges38rmb a écrit :Que veut dire "Protected LR" ?
oui.Georges38rmb a écrit :Lorsque l'on crée une procédure, elle doit etre appelée pour etre exécutée ?
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
- falsam
- Messages : 7324
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Programme ne répond pas mais fonctionne sans affichage.
Un code récapitulatif de ce qu'on vient de dire.
■ Objectif
- Créer un fichier bidon contenant 1000 enregistrement et le lire tout en mettant la barre de progression à jour.
- Utilisation des procédures.
- Utilisation des évenements.
- Utilisation de variable locales à une procédure (Variables Protected)
■ Objectif
- Créer un fichier bidon contenant 1000 enregistrement et le lire tout en mettant la barre de progression à jour.
- Utilisation des procédures.
- Utilisation des évenements.
- Utilisation de variable locales à une procédure (Variables Protected)
Code : Tout sélectionner
Enumeration Window
#MainForm
EndEnumeration
Enumeration Gadget
#Go ;Pour l'icone qui permet de lancer le traitement
#Exit ;Pour la sortie de l'application
#PBar ;La barre de progression
EndEnumeration
;Déclaration des procédures
Declare FileCreate()
Declare ProgressBarUpdate()
Declare Exit()
;Affichage de la fenetre
If OpenWindow(#MainForm, 0, 0, 800, 600, "New Project", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ButtonGadget(#Go, 700, 20, 80, 22, "Click ME")
ButtonGadget(#Exit, 700, 50, 80, 22, "Exit")
ProgressBarGadget(#PBar, 10, 550, 780, 22, 0, 1000)
;Boucle evenementielle
Repeat
Select WaitWindowEvent() ;Il y a t'il un evenement ?
Case #PB_Event_CloseWindow ;La fenetre est fermée
Exit()
Case #PB_Event_Gadget ;Un evenement gadget vient de se produire
Select EventGadget();Quel est ce gadget qui produit l'évenement
Case #Go
FileCreate() ;Appel de la procédure pour créer un fichier de test
ProgressBarUpdate() ;Appel de la procedure poour mettre à jour la barre de progression.
Case #Exit
Exit() ;Appel de la procédure de sortie
EndSelect
EndSelect
ForEver
EndIf
;Création d'un fichier de test
Procedure FileCreate()
Protected a ;Cette variable est uniquement visible dans la procédure FileCreate
If CreateFile(0, "Text.txt") ; we create a new text file...
For a=1 To 1000
WriteStringN(0, "Line "+Str(a)) ; we write 10 lines (each with 'end of line' character)
Next
CloseFile(0) ; close the previously opened file and store the written data this way
Else
MessageRequester("Information","may not create the file!")
EndIf
EndProcedure
;Procedure de mise à jour de la barre de progression
;C'est ici que par example qu'il faut traiter les fichiers
Procedure ProgressBarUpdate()
Protected n
If ReadFile(0, "Text.txt") ; if the file could be read, we continue...
While Eof(0) = 0 ; loop as long the 'end of file' isn't reached
ReadString(0)
n+1
SetGadgetState(#PBar, n)
Wend
CloseFile(0) ; close the previously opened file
Else
MessageRequester("Information","Couldn't open the file!")
EndIf
EndProcedure
;Procedure de fin d'application
Procedure Exit()
End
EndProcedure
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%