giboudin
Messages postés17Date d'inscriptiondimanche 13 juin 2010StatutMembreDernière intervention14 novembre 2010
-
14 nov. 2010 à 01:40
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 2019
-
14 nov. 2010 à 19:53
Bonjour à tous,
Je m'arrache les cheveux sur un problème certainement tout simple mais que je ne parviens pas à résoudre. Je pose le décor :
deux TextBox et un bouton.
Je souhaite que le clic sur le bouton entraîne une comparaison entre deux caractères ayant la même position dans les deux TextBox (premier caractère dans l'exemple)et que dans le cas où ils sont différents, celui de la deuxième chaîne prenne la valeur du caractère de la première.
La partie comparaison ne me pose pas de problème. En revanche dès lors qu'il s'agit de remplacer, ça ne passe pas, je me retrouve avec l'erreur suivante : "la propriété 'Chars' est 'ReadOnly' ".
Je vous transmets ci-dessous mon code :
If TextBox1.Text(0) <> TextBox2.Text(0) Then
TextBox2.Text(0) = TextBox1.Text(0)
Else
End If
Je sais que la comparaison fonctionne car si je remplace la partie "remplacement" par une MsgBox m'indiquant si les caractères sont = ou <> j'ai bien la bonne indication qui m'est donnée. Je précise avoir tenté de coder avec "replace" j'ai les mêmes problèmes !
Je vous remercie par avance pour votre aide.
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201957 14 nov. 2010 à 03:17
Salut
Attention tu vas devenir chauve
c'est readonly il va falloir que tu codes autrement
Dim str1() As String
Dim str2() As String
ReDim str1(TextBox1.Text.Length - 1)
For iter = 0 To TextBox1.Text.Length - 1
str1(iter) = TextBox1.Text.Substring(iter, 1)
Next
ReDim str2(TextBox2.Text.Length - 1)
For iter = 0 To TextBox2.Text.Length - 1
str2(iter) = TextBox2.Text.Substring(iter, 1)
Next
tu peux comparer str1 et str2 et remplacer
If str1(0) <> str2(0) Then
str1(2) = str2(2)
End If
giboudin
Messages postés17Date d'inscriptiondimanche 13 juin 2010StatutMembreDernière intervention14 novembre 2010 14 nov. 2010 à 13:27
Salut, ShayW et merci pour ton message. Je ne l'ai pas précisé mais je suis débutant et par conséquent, je ne maîtrise pas tout. Pourrais-tu, dans la mesure du possible, me dire en français (je veux dire en expliquant, je ne remets pas en cause tes compétences linguistiques, loin de moi cette idée) et non pas en code ce qui "bloque" dans ce que j'ai fait et notamment à quoi fait référence ce "ReadOnly".
Pour ce qui est de ton code, je ne l'ai pas encore décortiqué (pas eu le temps), mais au delà d'un code qui fonctionne, je souhaite vraiment comprendre ! et passer ce blocage car je vais probablement y être confronté dans le futur !
En tout cas, merci beaucoup dès à présent pour les infos transmises.
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201957 14 nov. 2010 à 18:03
Salut
Moi aussi je suis débutant
alors pour expliquer
je vais essayer c'est bien pour moi aussi
j'ai testé avant de dire des conneries
on ne peut pas changer le caractère d'un string
(chaine) c'est readonly seulement pour lecture
par ex
dim str1 as string
dim str2 as string
if str1(0) <> str2(0) then
'c'est correcte parce que je lis seulement
str2(0) = str1(0) 'la non tu essayes de modifier
le caractère 0 de str2
j'espère avoir expliqué
cs_ShayW
Messages postés3253Date d'inscriptionjeudi 26 novembre 2009StatutMembreDernière intervention 3 décembre 201957 14 nov. 2010 à 19:53
Je me complique vraiment la vie
voila
on peut faire comme çà
Dim ch As Char
If TextBox1.Text(0) <> TextBox2.Text(0) Then
'gardes le caractère 0 d
ch = TextBox1.Text(0)
TextBox2.Text = ch & TextBox2.Text.Substring(1)
End If
ce que j'ai fait j'ai formé de nouveau le string
du textbox2
le 1er caractère de texbox1.text
ch = TextBox1.Text(0)
TextBox2.Text.Substring(1)
toute la chaine à partir du 2 ème caractère de
textbox2.text
ensuite je fais une concaténation TextBox2.Text = ch & TextBox2.Text.Substring(1)