Mid ? Replace? Comment placer un caractère ç un endroit précis dans une zone de

Résolu
cs_PeD Messages postés 63 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 13 avril 2013 - 19 juin 2011 à 17:23
mdevaux62 Messages postés 111 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 17 novembre 2012 - 19 juin 2011 à 19:53
désolé, sans doute élémentaire.

( je simplifie mon exemple ). Pour écrire un enregistrement dans un fichier TXT, j'ai besoin de mettre un caractère en position 11, un autre en position 21, etc.

En VB 6, j'utilisais la fonction mid$ ainsi :
mid$(Zout,11,1) = "A"
mid$(Zout,21,1) = "B"
Tout allait bien.

Maintenant en .NET ( avec mid(... ), j'ai une erreur argument exception, avec l'argument start n'est pas une valeur valable.
Je peux m'en tirer avec Replace, mais j'aurais voulu éviter de devoir donner le caractère d'origine à remplacer ( il pourrait être indéterminé ! ).
C'est donc aussi une question de curiosité.

Idée?

Merci Pierre




Pierre

8 réponses

cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 55
19 juin 2011 à 18:06
ah ! et pourquoi ?
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 234
19 juin 2011 à 17:33
Bonjour,

As-tu vu ce qu'était l'instruction (pas la fonction) Mid ?
voici ce qu'en dit MSDN !


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
cs_ShayW Messages postés 3258 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 55
19 juin 2011 à 17:44
0
cs_PeD Messages postés 63 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 13 avril 2013
19 juin 2011 à 18:04
Merci des réponses.

D'abord : je ne suis pas certain que "substring" fonctionne !!


Ensuite, ucfoutu, effectivement quelques remarques.
Ok pour le vocabulaire : statement et non fonction. Mon excuse : je viens du monde mainframe et je n'ai pas encore digéré cette terminologie.
Cette instruction fonctionne bien mais voici comment je l'ai utilisée.
Zout = " "
Zout = "T5001"
( et non mid(Zout,1,5) = "T5001" )
ensuite mid(Zout,6,2) = "04"

Je suppose que VB a (re?)défini implicitement ma zone Zout avec une longueur de 5 et refuse donc le premier "mid" que je lui applique avec un Start de 6.

Je vais donc définir au préalable ma zone Zout à une longueur de 200 ( qui est la longueur du record en output ) avec ??? space ?? je vais voir comment.

Bonne fin de week end
Pierre
0

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

Posez votre question
cs_PeD Messages postés 63 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 13 avril 2013
19 juin 2011 à 18:07
Note en VB 6, je définissais mes zones ainsi
PublicZout as string * 200

Mais ce facteur multiplicateur ne semble plus exister en .NET

Pierre
0
cs_PeD Messages postés 63 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 13 avril 2013
19 juin 2011 à 18:10
euh ! parce que si j'écris
substring(Zout,1) = "B"
ce mot est souligné "bleu-petites vagues"
et semble donc être refusé.

Mais sans doute que je l'utilise mal, c'est très possible

Pierre
0
cs_PeD Messages postés 63 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 13 avril 2013
19 juin 2011 à 18:28
Code final :

Zout = StrDup(200, " ")
mid(zout,1) = 'T5001"
......
mid(Zout,22) = "B"
mid(Zout,23,2) = "04"

etc, ...


Merci

Pierre
0
mdevaux62 Messages postés 111 Date d'inscription dimanche 24 décembre 2000 Statut Membre Dernière intervention 17 novembre 2012 7
19 juin 2011 à 19:53
A tester (l'instruction VB6 MID est remplacée par deux fonctions .NET) :
        Dim chaine As String = "J'aime les petites fleurs"
        chaine = chaine.Remove(5, 1)
        chaine = chaine.Insert(5, "A")
        MessageBox.Show(chaine)
0