Caractere compris entre des entiers??

Résolu
sphaxslayer Messages postés 216 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 17 septembre 2008 - 18 mai 2005 à 12:00
sphaxslayer Messages postés 216 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 17 septembre 2008 - 18 mai 2005 à 12:42
Salut la compagnie, voilà j'ai repris un code existant fait par mon prédécesseur qui devait être très fâché avec la touche / de son clavier...j'ai des instructions que je ne comprends pas, si quelqu'un pouvait m'expliquer svp...voilà le bout de code:

public void ScanHL7(string mess)
{
int numSegment = 1;
char c; string segment "", suite mess;//.Substring(4, mess.Length - 4);

char separateur;
if ( mess.Substring(0,3).Equals("MSH") )
separateur = mess[3];
else
separateur = mess[1];


while (!suite.Equals(""))
{
c = suite[0];
if (0<c && c<32)
{
numSegment++;
try
{
if (0<suite[1] && suite[1]<32)
{
suite = suite.Substring(2, suite.Length-2);
}
else
{
suite = suite.Substring(1, suite.Length-1);
}
this.treeView1.Nodes.Add(ScanSegmentHL7(segment, separateur));
segment = "";
}
catch (Exception) {
suite = "";
}
}
else
{
segment = segment+c;
suite = suite.Substring(1, suite.Length-1);
}
....
}

Je sais c'est un peu brut de demander ça...mais franchement j'comprends pas les tests de ses ifs, ni meme ses histoires de segment + séparateur...

pour l'info, les messages à aller chercher son au format HL7 ou HPRIM, cad commencant soit par "MSH" soit pas "M", chaque message étant composé de segments eux-meme séparés par des | ....voilà voilà merci de votre aide !

"Un seul Être vous manque, et tout est dépeuplé..."

5 réponses

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
18 mai 2005 à 12:10
Hola,

suite[x] retourne un caractère.
Donc if (0<suite[1] && suite[1]<32) compare en fait un caractère avec un entier.
Mais un caractère peut être transformer en entier (via son code ASCII).

Ca permet de s'assurer qu'un certain caractère de la chaine 'suite' soit comprise dans une certaine plage du code ASCII, en l'occurance que la valeur soit entre 0 et 32.
Pour la valeur des caractères, voire http://www.asciitable.com/

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
3
sphaxslayer Messages postés 216 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 17 septembre 2008
18 mai 2005 à 12:04
en fait j'comprends pas a partir du while....le test de séparateur ça va:
si les 3 premiers caracteres sont MSH alors le séparater est le 4eme, cad le |
sinon caveut dire que le premier caractere est H et donc le séparateur est le 2eme, cad le |

CORRECTION: je me suis trompé dans le poste précédent: le HPRIM commence par H| et non M|....pardon

"Un seul Être vous manque, et tout est dépeuplé..."
0
sphaxslayer Messages postés 216 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 17 septembre 2008
18 mai 2005 à 12:18
merci pour le lien
Donc là son test c'est de voir si le caractere est un truc spécial vu qu'apparement jusqu'à 32 c des trucs particuliers, sauf le 32 ki est l'espace, et si c'est le cas il coupe sa string en disant qu'elle commence au caractere suivant..?

"Un seul Être vous manque, et tout est dépeuplé..."
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
18 mai 2005 à 12:40
Oui c'est ça.
(Apparement, entre 0 et 32, c'est des trucs un peu spéciaux, entre parenthèse tu trouves la définition à chaque fois).

[Pub] http://www.csharpfr.com/auteurdetail.aspx?ID=13319 [\Pub]
C# forever
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
sphaxslayer Messages postés 216 Date d'inscription mardi 5 avril 2005 Statut Membre Dernière intervention 17 septembre 2008
18 mai 2005 à 12:42
OK ben merci beaucoup c'est sympa, j'crois que j'ai compris, j'vais essayer de décortiquer et si ca brouille encore j'repasse ;)
merci en tous cas !

"Un seul Être vous manque, et tout est dépeuplé..."
0
Rejoignez-nous