Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Type de donnée Utilisateur

3 réponses
Avatar
Jean Saint Jalmes
Bonjour,

Sous VB6.0, est'il possible de parcourir =E0 l'aide d'une=20
boucle,tous les champs d'une donn=E9e utilisateur d=E9finie=20
par Type ... End Type et de conna=EEtre le type de chacun=20
d'eux ?

Private Type Test
Data1 as Long
Data2 as Integer
....
End Type

public sub List_Data(RefData as Test)
do=20
msgbox (contenu et type du champ) ????
while .....
end sub=20

Merci d'avance.

Jean

3 réponses

Avatar
François Picalausa
Hello,

ce n'est possible que pour les propriétés d'une classe qui contiendrait une
typelib.
Sinon, il est possible de demander une entrée Descripteur dans le type qui
permettrait de décrire entièrement un type (et qui devrait être initialisée
avant de passer le type à la fonction)

--
François Picalausa (MVP VB)
http://faq.vb.free.fr --- http://msdn.microsoft.com
http://apisvb.europe.webmatrixhosting.net

"Jean Saint Jalmes" a écrit dans
le message de news:9f1201c43452$765ee670$
Bonjour,

Sous VB6.0, est'il possible de parcourir à l'aide d'une
boucle,tous les champs d'une donnée utilisateur définie
par Type ... End Type et de connaître le type de chacun
d'eux ?

Private Type Test
Data1 as Long
Data2 as Integer
....
End Type

public sub List_Data(RefData as Test)
do
msgbox (contenu et type du champ) ????
while .....
end sub

Merci d'avance.

Jean


Avatar
Zoury
Salut Jean! :O)

C'est possible, mais la librairie contenant l'enumération doit être compilé.

exemple énumérant les valeur des Enums de DAO 3.6:
'***
' Ajouter la référence TypeLib Information
' Module1
Option Explicit

Private Sub Main()

Dim f As CFile
Dim tl As tli.TypeLibInfo

Dim i As Long
Dim j As Long

Set f = New CFile
Set tl = New tli.TypeLibInfo
Set tl = tli.TypeLibInfoFromFile("C:program filesCommon
FilesMicrosoft SharedDAOdao360.dll")

Debug.Print "Library Name : " & tl.Name
Debug.Print "Library Path : " & "C:program filesCommon FilesMicrosoft
SharedDAOdao360.dll"

f.AppendLine "Constants (" & tl.Constants.Count & ")"
For i = 1 To tl.Constants.Count
Debug.Print vbTab & tl.Constants(i).Name
If (tl.Constants(i).Members.Count > 0) Then
For j = 1 To tl.Constants(i).Members.Count
Debug.Print vbTab & vbTab &
PadLeft(tl.Constants(i).Members(j).Name, 30) & " = " &
tl.Constants(i).Members(j).Value
Next j
End If
Next i

End Sub
'***

--
Cordialement
Yanick Lefebvre - MVP pour Visual Basic
http://faq.vb.free.fr/?rubrique=0 - http://www.mvps.org/vbnet/
http://www.mentalis.org/agnet/apiguide.shtml - http://www.mztools.com/
Avatar
Zoury
j'ai oublié de posté la fonction PafLeft()

'***
Private Function PadLeft(ByRef sText As String, ByRef lLenght As Long) As
String
PadLeft = Left$(sText & Space$(lLenght), lLenght)
End Function
'***