Csharp saidlamerde? (appeau a GloP ;) ) [Resolu]

J’ai eu beau chercher, pas d’équivalent CSharp de sscanf… j’aimerais parser une chaine de type « xxx.xxx.xxx.xxx:xxxxx\n » (on peut rien vous cacher, c’est une IP, qui de plus est, cachée dans un TXT) facilement, pour en fabriquer un IPEndPoint. Me suis dit, alley on va bien trouver l’équivalent a sscanf.

Que nenni ma bonne mie! Point d’équivalence (MSDN n’a pas été mon ami sur ce coup la), mais seulement des traitement lourds a coups de ParseInt, Parse machin chose, etc… J’ai essayé de ruser avec les RegExp, mais point de RegExp non plus visiblement…

Dites moi qu’il ya moins lourd? :stuck_out_tongue:

Tu peux utiliser la fonction Split(); sur une string pour splitter ta chaîne sur un certain caractère.

Pour les regexp tu as System.Text.RegularExpressions.

Ohhhh le vilain appeau à Glop, ça a marché pour moi aussi tiens ( je viens de passer la journée sur du C#, faut dire )

/me retiens la technique de fourbe pour plus tard !

Ah , sinon pour ton probleme, je ne sais pas !

Je sais pas quelle est la meilleure technique… l’entree de donnee en ligne de commande je dois avouer que c’est vraiment pas mon truc :stuck_out_tongue: dans une interface graphique tu met une textbox de type « IP address » et basta :stuck_out_tongue:

Trois solutions, ou tu scanne char by char et tu empeche l’entree d’autre chose qu’une chiffre et qu’autre chose qu’un chiffre superieur a FF pour chaque « morceau » de l’ip.
Ou alors, tu scanes ta ligne, tu lui applique un regex et si ca matche pas tu degages et tu redemandes.
Ou derniere etape, tu fais un string.Split(’.’), ca decoupe ta ligne en morceaux, tu verifie que t’en as bien le bon nombre, et tu parse chacun d’entre eux en byte/int en verifiant le range. Ca marche aussi et c’est surement le moins prise de tete/habituel.

Au choix, mais bon comme j’ai dit l’entree de data en ligne de commande c’est pas genial :stuck_out_tongue: Sinon si tu utilise Monad (l’API pour developper des outils en ligne de commande, qui remplace le cmd.exe, de longhorn qui tournera aussi sous 2003/XP et qui est dispo en beta) tu as surement tout plein d’outils tout fait pour te faire ce genre de bordel.

Manifestement il ne fait pas de l’entrée de donnée en ligne de commande, il parle de sscanf et non scanf.

Par contre Monad ça risque d’être bien sympa!

Perso, j’aurais utilisé une regexp, dispo dans System.Text.RegExp
Mais je me demande s’il y’aurais pas direct un parseur d’Endpoint…
(nb: ton truc est pas compatible IPv6, c’est mal :P)

[quote name=‹ Zoomastigophore › date=’ 15 Jan 2005, 15:29’]Manifestement il ne fait pas de l’entrée de donnée en ligne de commande, il parle de sscanf et non scanf.

Par contre Monad ça risque d’être bien sympa!
[right][post=« 322806 »]<{POST_SNAPBACK}>[/post][/right][/quote]
Si c’est sur un stream, une ip ca se transmet comme un long et basta :stuck_out_tongue:
Sinon si c’est depuis un fichier texte ou depuis une ligne de commande c’est pareil. Tu lit la ligne et tu fais 2 ou 3 du post precedent :stuck_out_tongue:

C’était dans un fichier texte, mais effectivement les RegExp ont résolu mon problème, merci a tous :P.

Euh on peut jouer avec Monad, déjà? Pour l’instant, j’ai vu que des démos et présentations sur MSDN/Channel9… (et qui, soit dit en passant, m’avaient presque donné envie de faire de la ligne de commande!).

Oui c’est dispo je sais pas si c’est juste sur MSDN ou si c’est en download libre mais y a des alpha de dispo.

[quote name=‘lordabdul’ date=’ 17 Jan 2005, 23:26’]Euh on peut jouer avec Monad, déjà? Pour l’instant, j’ai vu que des démos et présentations sur MSDN/Channel9… (et qui, soit dit en passant, m’avaient presque donné envie de faire de la ligne de commande!).
[right][post=“323336”]<{POST_SNAPBACK}>[/post][/right][/quote]
Mmmh, je l’ai récupéré, faut s’inscrire chais plus où.
Te faut un passport, et je crois bien que le code d’inscription winbeta est donné a la fin l’épisode du .net show qui parle de monad…

Correction, c’est pas winbeta, mais betaplace, voir à la toute fin du transcript de l’ep “Longhorn fondamentals

Okay merci, en fait j’avais trouvé entre temps… c’est mentionné dans le Wiki channel9, dans la section sur MSH.
Ceci dit, je me demande pourquoi, d’un coté, y’a beta.microsoft.com, et de l’autre, lab.msdn.com… ils pourraient fusionner un peu tout ça passkeu ça m’a pas l’air encore très organisé tout ça!

Non ca a rien a voir :stuck_out_tongue: y en a un c’est un truc de gestion de beta fermees et l’autre c’est un truc public de pre release. Donc en gros lab=beta publiques, beta=beta fermees.

Ouais ben ils pourraient tout foutre sur beta.microsoft.com et faire une section ouverte et une section fermée, quoi :stuck_out_tongue:
Là j’ai plus l’impression que y’a les gens du batiment au fond à gauche qui ont leur site de previews, et les gens du batiment à droite en rentrant après le gros arbre qui ont leur site aussi à eux… un jour les 2 groupes se croiseront peut etre à la cantine?
Bon, et ceci dit, Monad ça déchire grave.

Mon réflexe aurait effectivement été la RegEx mais je ne connais pas C# donc ça aurait pu être une erreur de principe.

Pas possible d’utiliser le composant indiqué par Glop et de le charger (depuis le fichier) au travers d’un serialize ? C’est très Windows ça :stuck_out_tongue: .

En même temps je m’expose à la grosse bévue puisque je ne connais pas le langage, mais sur le principe je trouve ça plus élégant. :stuck_out_tongue:

bump :stuck_out_tongue:

La regexp ca marchait bien, merci :P. Et pour le unserialize, bof c’est un fichier editable par l’utilisateur… alors je préfères utiliser un truc plus malléable.