PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 25 → TraceRT sous Windev ?
TraceRT sous Windev ?
Started by Serge LANTHIER, Jun., 29 2020 6:03 AM - 6 replies
Registered member
49 messages
Posted on June, 29 2020 - 6:03 AM
Bonjour,

Je dois avouer être embêté ici...
:(

J'aimerais lister le chemin (trace route par adresse IP) entre le poste client et le serveur HFSQL.
Je fouille l'aide en ligne sans trop de succès...

Existe-t-il l'équivalent de la commande DOS TraceRT sous Windev ?
L'un de vous a-t-il déjà réalisé une telle analyse ?

Toute aide sera appréciée.

Serge

--
-----
Parfois, la logique est implacable...
Registered member
1,489 messages
Posted on June, 29 2020 - 2:42 PM
Bonjour,
Regarde du côté de LanceAppli. Un truc du style :
sRes est chaine
sAdresse est chaine //Adresse IP à atteindre
sOption est chaine //Options de la commande
sCommande est chaine

sAdresse="11.1.0.1"
sCommande=ChaineConstruit("TraceRT %1 %2",sAdresse,sOption)

sRes=LanceAppli(sCommande,exeActif,exeValeurRetour)


--
Il y a peut être plus simple, mais, ça tourne
Registered member
756 messages
Popularité : +13 (13 votes)
Posted on June, 30 2020 - 7:10 AM
hello,
voici une solution en utilisant ma classe cconsole disponible ici :
https://www.developpez.net/forums/d1240420/environnements-developpement/windev/contribuez/wd-classe-cconsole-win32-console/…

Ajouter la classe cconsole au projet.
Dans le code d'initialisation du projet ajouter ceci :
MaConsole est un cConsole
TempSortie est une chaîne = ""


Voici le code pour tracer l'accès jusqu'à google.fr .
TracertCmd est une chaîne = "Tracert.exe "
AdresseDest est une chaîne = " pcsoft.fr "
MaConsole:SetCmd(TracertCmd + AdresseDest)
MaConsole:ProcReception = "ProcReception2"
MaConsole:ProcFinCmd = "ProcFin2"
Trace("Lancement Commande Tracert")
res est un entier = MaConsole.ExécuterCmdAsync()
// on affiche le résultat ou l'erreur dans une fenêtre Trace
SELON res
CAS 0: // cas nominal sans erreur
CAS -1: Trace("Erreur sur la commande")
CAS -2: Trace("Commande annulée")
AUTRE CAS : Trace("Code Retour : " + res)
FIN


La commande est lancée en mode asynchrone c'est à dire qu'on ne bloque pas l'IHM pendant toute la durée du tracert qui peut être longue.
Quand la commande est terminée la procédure globale ProcFin2 que voici se lance et le résultat du tracert est affiché dans une fenêtre de trace.
PROCEDURE ProcFin2()
Trace("La commande Tracert est terminée")
Trace("Résultat : " + MaConsole:SortieAnsi())

voici le résultat :





Si on veut voir la progression de la commande au fur et à mesure que les adresses intermédiaires sont déterminées on peut utiliser la procédure globale ProcReception2 que voici :
PROCEDURE ProcReception2(pSortie est une chaîne)
TempSortie = TempSortie + OemVersAnsi(pSortie)
SI ChaîneOccurrence(TempSortie,CRLF) ALORS
Trace(TempSortie)
TempSortie = ""
END


--
Ami calmant, J.P
Registered member
49 messages
Posted on June, 30 2020 - 7:00 PM
bonjour,

@Voroltinquo
J'avais noté la suggestion avec l'intention d'y revenir aujourd'hui.
Ceci étant.j'aurais eu à la travailler pour en arriver à du tout cuit...
Merci pour la note.

@Jurassic Pork
Du tout cuit prêt à consommer, exactement ce que je recherchais.
Plus encore puisque ça ouvre la porte à d'autres commandes de la console.

Puisque j'explorais le code je me suis permis de le commenter / raffiner.
Entre autres sur les valeurs de retours potentielles.

//--- Codes de retour potentiels:
//--- <-1> Commande à lancer non renseignée
//--- <-2> Commande annulée via ArrêterCmd()
//--- <-3> Erreur de création du "pipe"
//--- <-4> Erreur de création du "process"
//--- <-5> Une commande cConsole est déjà en cours d'exécution


Du coup j'ai commenté (//) les traces qui demeurent pour le débuggage.
Et j'ai découvert le forum Windev de Developpez.
;)

Un gros merci.

Serge

--
-----
Parfois, la logique est implacable...
Registered member
49 messages
Posted on July, 02 2020 - 7:19 PM
@Jurassic Pork

Ta classe cConsole est un plaisir.

J'y ai découvert une solution à mon besoin et l'utilisation des thread, que je n'avais pas exploré avec Windev.
Concept très intéressant.

Ici avec Google comme serveur de test.




Sinon avec PcSoft, qui ne daigne pas répondre à la trace. ;)



On ne le voit pas, mais cConsole est derrière.

Bref, en production l'utilisateur pourra voir ou ça bloque s'il y a lieu.

Merci encore.

Serge

--
-----
Parfois, la logique est implacable...
Registered member
84 messages
Popularité : +1 (1 vote)
Posted on July, 03 2020 - 9:17 AM
Bonjour,

Quelqu'un (un ancien !) aurait-il une version windev 5.5 de la classe cConsole dans ses archives svp ?
Posted on July, 03 2020 - 12:26 PM
BP a émis l'idée suivante :
Bonjour,

Quelqu'un (un ancien !) aurait-il une version windev 5.5 de la classe
cConsole dans ses archives svp ?


bonjour,

dans mes souvenirs il n'y avait pas de classe de ce genre en 5.5

la 1ère du nom était WDDos date de 2004 et était en 7.5 si je ne me
trompe pas

--
Cordialement JeAn-PhI