Classes et Boucle

Résolu
cs_lacomm
Messages postés
298
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2013
- 27 févr. 2007 à 14:46
cs_lacomm
Messages postés
298
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2013
- 27 févr. 2007 à 15:20
Hello

Comment faire pour que ca marche ? J'ai un texte que je découpe en mots, j'ai une classe ClsMot qui contient des propriétés sMot (le mot lui-même) et longmot, la longueur du mot. Si j'obtiens bien le mot suivant à chaque coupure, par contre, je n'ai toujours que la longueur du premier mot.

texte = salut albert

sMot = salut puis albert
longmot = 5 puis 5

FORM:

Private Sub cmd_click()
Dim iLmot as integer:Dim texte as string:Dim mot () as string
texte =Text1.text
mot ()= Split(texte," ")
for i = 0 to Ubound (mot)
    Set oMot = New ClsMot
    oMot.sMot=mot(i)
    iLmot=oMot.longmot
next i
end sub

CLSMOT
Private mvarmot As String 'local copy
Private mvarlongmot As Integer 'local copy

Public Property Let longmot(ByVal vData As Integer)
    mvarlongmot = vData
End Property
Public Property Get longmot() As Integer
'reste toujours sur le premier mot
    longmot = Len(mot(i))
End Property

Public Property Let sMot(ByVal vData As String)
    mvarmot = vData
End Property
Public Property Get sMot() As String
    sMot = mvarmot
End Property

Finalement en ajoutant une fonction dans la classe ca marche:
Public Function fLongmot(sMot As String) As Integer
fLongmot = Len(sMot)
End Function

Mais je comprends pas pourquoi ca marche avec une fonction et pas une propriété

Merci à vous

3 réponses

jrivet
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
59
27 févr. 2007 à 15:03
Re,
je viens d'essayer ceci et ca ne me pose pas de problème =)> ou alors je n'ai rien compris.

CLS MOTS
Option Explicit

Private mvarmot As String 'local copy
Private mvarlongmot As Integer 'local copy

Public Property Let longmot(ByVal vData As Integer)
   mvarlongmot = vData
End Property
Public Property Get longmot() As Integer
'reste toujours sur le premier mot
   longmot = mvarlongmot
End Property

Public Property Let sMot(ByVal vData As String)
   mvarmot = vData
End Property
Public Property Get sMot() As String
   sMot = mvarmot
End Property

Public Function fLongmot(sMot As String) As Integer
fLongmot = Len(sMot)
End Function
, ----
[code.aspx?ID=41455 By Renfield]

cmd_click
Dim iLmot As Integer
Dim texte As String
Dim mot() As String
Dim i As Integer
texte = Text1.Text
mot() = Split(texte, " ")
For i = 0 To UBound(mot)
   Set oMot = New CLSMOT
   oMot.sMot = mot(i)
   oMot.longmot = Len(mot(i))
Next i
, ----
[code.aspx?ID=41455 By Renfield]

@+: Ju£i?n
Pensez: Réponse acceptée
3
jrivet
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
59
27 févr. 2007 à 15:01
Salut,
avant d'essayer de comprendre, j'aimerais savoir pourquoi dans le property get longmot tu mets longmot = Len(mot(i)) et non pas
mvarlongmot
@+: Ju£i?n
Pensez: Réponse acceptée
0
cs_lacomm
Messages postés
298
Date d'inscription
lundi 14 juin 2004
Statut
Membre
Dernière intervention
5 juillet 2013
1
27 févr. 2007 à 15:20
oui, oui, merci, ce code marche, mais je viens de comprendre le principe des propriétés:
 le LET lit la propriété, et le GET écrit la modification mais n'exécute pas la modification.
Je croyais qu'il était possible de mettre du code dans la propriété, en fait ce qui serait possible en terme de code, c'est de modifier la propriété dans la propriété elle-même dans le genre if longmot >10 then longmot = 10, mais pas avec des variables publiques ?
merci de ton aide en tout cas
0