Caractere compris entre des entiers??

[Résolu]
Signaler
Messages postés
216
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
17 septembre 2008
-
Messages postés
216
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
17 septembre 2008
-
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

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
57
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
Messages postés
216
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
17 septembre 2008

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é..."
Messages postés
216
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
17 septembre 2008

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é..."
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
57
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
Messages postés
216
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
17 septembre 2008

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é..."