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…
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 dans une interface graphique tu met une textbox de type « IP address » et basta
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 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.
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
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
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!).
[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…
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 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
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.
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.