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

[Résolu]
Signaler
Messages postés
63
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
13 avril 2013
-
Messages postés
111
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
17 novembre 2012
-
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

Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
52
ah ! et pourquoi ?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
239
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
Messages postés
3258
Date d'inscription
jeudi 26 novembre 2009
Statut
Membre
Dernière intervention
3 décembre 2019
52
Messages postés
63
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
13 avril 2013

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
Messages postés
63
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
13 avril 2013

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
Messages postés
63
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
13 avril 2013

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
Messages postés
63
Date d'inscription
vendredi 25 janvier 2002
Statut
Membre
Dernière intervention
13 avril 2013

Code final :

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

etc, ...


Merci

Pierre
Messages postés
111
Date d'inscription
dimanche 24 décembre 2000
Statut
Membre
Dernière intervention
17 novembre 2012
6
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)