Duke49
Messages postés552Date d'inscriptionjeudi 12 octobre 2006StatutNon membreDernière intervention24 janvier 2023
-
24 déc. 2010 à 15:06
Duke49
Messages postés552Date d'inscriptionjeudi 12 octobre 2006StatutNon membreDernière intervention24 janvier 2023
-
25 déc. 2010 à 13:46
Salut à tous;
Je me mélange les pinceaux avec les portées !
Mon soucis:
Je n'arrive pas a voir mes fonctions dans clsFindInfos tout en voulant
garder hors de portées ma structure HexArray et ma déclaration myHex().
Mon souhait:
(exemple dans un bouton)
Dim myFind As New clsHexa.FindInfos.HexArray
myFind.OpenAdd("0F","FIRST")
myFind.OpenAdd("B8","LAST")
'procédures diverses
'...
'Test
Debug.Print("NB ELEMENT: " & myFind.Count())
'Liberation du tableau
myFind.Close()
Mon code:
Public Class FindInfos
Structure HexArray
Dim ChaineHexa As String
Dim FindMethod As String
End Structure
Shared myHex() As HexArray = Nothing
Public Shared Sub OpenAdd(ByVal ChaineHexa As String, ByVal FindMethod As String)
If myHex Is Nothing Then
ReDim myHex(0)
Else
ReDim Preserve myHex(myHex.Length)
End If
myHex(myHex.Length).ChaineHexa = ChaineHexa
myHex(myHex.Length).FindMethod = FindMethod
End Sub
Public Shared Function Count() As Integer
If myHex Is Nothing Then
Return Nothing
Else
Return myHex.Length
End If
End Function
Public Shared Sub Close()
myHex = Nothing
End Sub
End Class
NHenry
Messages postés15114Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention 4 mai 2024159 24 déc. 2010 à 22:08
Bonjour,
Si tes fonction prennent en paramètre ou retourne un type (structure, enum, classe, ...), il faut que l'éventuel appelant y ait accès (minimum), pour faire simple :
- Fonction publique, type publique
- Fonction Friend, Type Friend
- Fonction Private, Type Private (là, personne ne voit rien sauf le conteneur)
- Fonction Protected, Type Protected
Rappel simplifié :
Private < Protected < Friend < Public
Attention, Si tu déclare un élément public dans une classe Friend,, l'élément sera Friend.
L'élément est automatiquement <= en visibilité rapport à son conteneur.
Petite subtilité :
Classe/Structure Private/Protected dans une Classe/Structure, quelque soit la visibilité du conteneur, le contenu sera au plus visible seulement (Public/Friend) dans le conteneur.
PCPT
Messages postés13272Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201847 25 déc. 2010 à 10:08
salut,
Public Class FindInfos
Structure HexArray
Dim myFind As New clsHexa.FindInfos.HexArray
myFind.OpenAdd("0F","FIRST")
normal que tu ne puisses pas "voir" OpenAdd, c'est une méthode de FindInfos et non de HexArray : rien à voir avec la portée
Dim myFind As New (clsHexa.)FindInfos.HexArray
maintenant tu ne veux pas "partager" ta structure donc :
*déclare-la private *utilise une list OF plutôt qu'un tableau à redimensionner
*profite alors du constructeur qu'offre une classe au lieu d'une structure
Public Class FindInfos
Private Class HexItem
Public ChaineHexa As String
Public FindMethod As String
Public Sub New(ByVal sChaineHexa As String, ByVal sFindMethod As String)
Me.ChaineHexa = sChaineHexa
Me.FindMethod = sFindMethod
End Sub
End Class
Private myHex As New List(Of HexItem)
Public Sub OpenAdd(ByVal ChaineHexa As String, ByVal FindMethod As String)
myHex.Add(New HexItem(ChaineHexa, FindMethod))
End Sub
Public Function Count() As Integer
Return myHex.Count
End Function
Public Sub Close()
myHex.Clear()
myHex = Nothing
End Sub
End Class
et enfin :
Dim myFind As New clsHexa.FindInfos.HexArray Dim myFind As New FindInfos