Re: Gestion events problème
Publié : ven. 09/sept./2016 9:29
(mon dernier raisonnement était faux, désolé)
Pas besoin de ruser : Tu passes un pointeur de structure.dans l'absolu rien n'empeche le passage de plusieurs parametres a un Thread , mais faut alors ruser
on va pas jouer sur la sémantiquefalsam a écrit :Pas besoin de ruser : Tu passes un pointeur de structure.dans l'absolu rien n'empeche le passage de plusieurs parametres a un Thread , mais faut alors ruser
Code : Tout sélectionner
Global Prog
Procedure Start()
If Prog = 0
Prog = RunProgram("Ping", IPString(GetGadgetState(100) ) + " -n 100", "", #PB_Program_Hide | #PB_Program_Open | #PB_Program_Read)
EndIf
EndProcedure
Procedure Stop()
If Prog
KillProgram(Prog)
Prog = 0
EndIf
EndProcedure
Procedure Reset()
ClearGadgetItems(2)
EndProcedure
Macro Button(bn, bx, by, bw, bh, bproc, btext, bwind = 1)
ButtonGadget(bn, bx, by, bw, bh, btext)
BindEvent(#PB_Event_Gadget, bproc, bwind, bn)
EndMacro
OpenWindow(1, 128, 128, 640, 480, "Ping test")
IPAddressGadget(100, 20, 20, 160, 20)
SetGadgetState(100, MakeIPAddress(127, 0, 0, 1) )
EditorGadget(2, 20, 60, 600, 240, #PB_Editor_ReadOnly)
Button(3, 20, 400, 64, 24, @Start(), "Start")
Button(4, 120, 400, 64, 24, @Stop(), "Stop")
Button(5, 220, 400, 64, 24, @Reset(), "RàZ")
Repeat
If Prog
Size = AvailableProgramOutput(Prog)
If Size
*Buff = ReAllocateMemory(*Buff, Size + 1)
Size = ReadProgramData(Prog, *Buff, Size)
AddGadgetItem(2, -1, PeekS(*Buff, Size - 2, Mode) )
EndIf
EndIf
Until WaitWindowEvent(16) = #PB_Event_CloseWindow
Stop()
Code : Tout sélectionner
Attente du démarrage du programme...
Type d'exécutable: Windows - x64 (64bit, Unicode)
Exécutable démarré.
[ERREUR] Ligne: 5
[ERREUR] InitNetwork() doit être appelée avec succès avant l'utilisation des commandes Network.
Code : Tout sélectionner
Attente du démarrage du programme...
Type d'exécutable: Windows - x64 (64bit, Unicode)
Exécutable démarré.
[ERREUR] Ligne: 40
[ERREUR] PeekS(): valeur non valide pour le paramètre 'Flags'
Code : Tout sélectionner
CompilerIf #PB_Compiler_Version > 522
InitNetwork()
CompilerEndIf
Global Prog
Procedure Start()
If Prog = 0
Prog = RunProgram("Ping", IPString(GetGadgetState(100) ) + " -n 100", "", #PB_Program_Hide | #PB_Program_Open | #PB_Program_Read)
EndIf
EndProcedure
Procedure Stop()
If Prog
KillProgram(Prog)
Prog = 0
EndIf
EndProcedure
Procedure Reset()
ClearGadgetItems(2)
EndProcedure
Macro Button(bn, bx, by, bw, bh, bproc, btext, bwind = 1)
ButtonGadget(bn, bx, by, bw, bh, btext)
BindEvent(#PB_Event_Gadget, bproc, bwind, bn)
EndMacro
OpenWindow(1, 128, 128, 640, 480, "Ping test")
IPAddressGadget(100, 20, 20, 160, 20)
SetGadgetState(100, MakeIPAddress(127, 0, 0, 1) )
EditorGadget(2, 20, 60, 600, 240, #PB_Editor_ReadOnly)
Button(3, 20, 400, 64, 24, @Start(), "Start")
Button(4, 120, 400, 64, 24, @Stop(), "Stop")
Button(5, 220, 400, 64, 24, @Reset(), "RàZ")
Repeat
If Prog
Size = AvailableProgramOutput(Prog)
If Size
*Buff = ReAllocateMemory(*Buff, Size + 1)
Size = ReadProgramData(Prog, *Buff, Size)
AddGadgetItem(2, -1, PeekS(*Buff, Size - 2) )
EndIf
EndIf
Until WaitWindowEvent(16) = #PB_Event_CloseWindow
Stop()
NON (C'est bien pour ça que j'avais pris la peine de copier les messages d'erreur.)Ollivier a écrit : A part les discours hilarants, ça marche?!?
Mais quelle drôle d'idée ????Ollivier a écrit :Je voudrais bien t'y voir pondre un code comme à partir d'un SmartPhone!
Erreur: PB 5.50 est unicode par défaut et la commande ping retourne une chaine ansi.Ollivier a écrit :Pour le Stop(), il est très bien là où il est, ce serait une grave erreur de le sauter là.
Prière de m'indiquer ton nouveau problème et d'émettre éventuellement une suggestion.
Code : Tout sélectionner
AddGadgetItem(2, -1, PeekS(*Buff, Size - 2, #PB_Ascii))
Code : Tout sélectionner
Repeat
If Prog
Size = AvailableProgramOutput(Prog)
If Size
*Buff = ReAllocateMemory(*Buff, Size + 1)
Size = ReadProgramData(Prog, *Buff, Size)
PingString$ = PeekS(*Buff, Size - 2, #PB_Ascii)
Ping$ = StringField(PingString$, 4 , " ") + " - " +
StringField(PingString$, 5 , " ") + " - " +
StringField(PingString$, 6 , " ")
AddGadgetItem(2, -1, Ping$)
EndIf
EndIf
Until WaitWindowEvent(16) = #PB_Event_CloseWindow
(Je pense a fortiori que la problème 1er de jmg49 estMarc56 a écrit :Suggestion 2: Remplacer les accents ou n'afficher que la partie de la chaine sans accents (après tout on se fiche du "réponse de") seuls les
chiffres sont intéressants.
Configure ton téléphone en point d’accès Wifi et tu pourras accéder au forum depuis ton pc (Si Wifi disponible sur ton pc)Ollivier a écrit :Je voudrais bien t'y voir pondre un code comme à partir d'un SmartPhone! Ça ira malgré les accents?
Code : Tout sélectionner
EnableExplicit
CompilerIf #PB_Compiler_Version > 522
InitNetwork()
CompilerEndIf
Global Prog
Procedure Start()
If Prog = 0
Prog = RunProgram("Ping", IPString(GetGadgetState(100) ) + " -n 100", "",
#PB_Program_Hide | #PB_Program_Open | #PB_Program_Read)
EndIf
EndProcedure
Procedure Stop()
If Prog
KillProgram(Prog)
Prog = 0
EndIf
EndProcedure
Procedure Reset()
ClearGadgetItems(2)
EndProcedure
Macro Button(bn, bx, by, bw, bh, bproc, btext, bwind = 1)
ButtonGadget(bn, bx, by, bw, bh, btext)
BindEvent(#PB_Event_Gadget, bproc, bwind, bn)
EndMacro
OpenWindow(1, 128, 128, 640, 480, "Ping test")
IPAddressGadget(100, 20, 20, 160, 20)
SetGadgetState(100, MakeIPAddress(127, 0, 0, 1)) ; (test)
SetGadgetState(100, MakeIPAddress(IPAddressField(GetGadgetState(100), 0),
IPAddressField(GetGadgetState(100), 1),
IPAddressField(GetGadgetState(100), 2),
IPAddressField(GetGadgetState(100), 3)))
ListIconGadget(2, 20, 60, 600, 240, "Destination", 146)
AddGadgetColumn(2, 1, "Octets", 150)
AddGadgetColumn(2, 2, "Temps", 150)
AddGadgetColumn(2, 3, "TTL", 150)
Button(3, 20, 400, 64, 24, @Start(), "Start")
Button(4, 120, 400, 64, 24, @Stop(), "Stop")
Button(5, 220, 400, 64, 24, @Reset(), "RàZ")
Enumeration
#RegEx
EndEnumeration
If CreateRegularExpression(#RegEx, "((?:\d{1,3}\.){1,3}\d{1,3}).+s=(\d+).+(\d+)[ ]?ms.+TTL=(\d+)")
; Debug "RegEx OK"
Else
Debug "RegEx KO"
End
EndIf
Define Size
Define Ping$
Define *Buff
Define PingString$
Repeat
If Prog
Size = AvailableProgramOutput(Prog)
If Size
Ping$ = ""
*Buff = ReAllocateMemory(*Buff, Size + 1)
Size = ReadProgramData(Prog, *Buff, Size)
PingString$ = PeekS(*Buff, Size - 2, #PB_Ascii)
If MatchRegularExpression(#RegEx, PingString$)
ExamineRegularExpression(#RegEx, PingString$)
While NextRegularExpressionMatch(#RegEx)
AddGadgetItem(2, -1, RegularExpressionGroup(#RegEx, 1) + Chr(10) +
RegularExpressionGroup(#RegEx, 2) + Chr(10) +
RegularExpressionGroup(#RegEx, 3) + Chr(10) +
RegularExpressionGroup(#RegEx, 4) + Chr(10) )
Wend
Else
AddGadgetItem(2, -1, "-")
EndIf
EndIf
EndIf
Until WaitWindowEvent(16) = #PB_Event_CloseWindow
FreeRegularExpression(#RegEx)
End