OVH Cloud OVH Cloud

fonction donnant le nb d'enregistrements

7 réponses
Avatar
Eric
Bonjour et bon d=E9but de semaine,

Je cr=E9e une petite application qui manipule plusieurs=20
fichiers ouverts en mode =E0 acc=E8s direct (Random).
Pour ce faire j'ai d=E9fini des variables-utilisateur avec=20
l'instruction Type...End Type
Jusqu'=E0 pr=E9sent pour connaitre le nb d'enregistrements=20
d'un fichier j'utilisais des instructions du genre :=20
NbPersonne=3D Lof(1)/Len(Personne)=20
NbObjet=3Dlof(2)/len(Objet)
...

Je souhaiterai cr=E9er une fonction g=E9n=E9rique =E0 laquelle je=20
passerai en argument le n=B0 de buffer et la variable-
utilisateur.
=20
Public Function RetourneNb(Numero as Integer, TypeVariable=20
as ???)
RetourneNb=3DLof(Numero)/Len(TypeVariable)
end Function

Est ce possible ?

Merci d'avance pour vos suggestions

Eric

7 réponses

Avatar
Jérôme VERITE
Bonjour

si tu ne déclares pas le type de ta variable TypeVariable, elle devrait être
considérée en Variant et le tout devrait fonctionner correctement

' entête de fonction
Public Function RetourneNb(Numero as Integer, TypeVariable)
' ou
Public Function RetourneNb(Numero as Integer, TypeVariable as Variant)

Jerôme

"Eric" a écrit dans le message de
news:45b601c3ff6c$0b862f40$
Bonjour et bon début de semaine,

Je crée une petite application qui manipule plusieurs
fichiers ouverts en mode à accès direct (Random).
Pour ce faire j'ai défini des variables-utilisateur avec
l'instruction Type...End Type
Jusqu'à présent pour connaitre le nb d'enregistrements
d'un fichier j'utilisais des instructions du genre :
NbPersonne= Lof(1)/Len(Personne)
NbObjet=lof(2)/len(Objet)
...

Je souhaiterai créer une fonction générique à laquelle je
passerai en argument le n° de buffer et la variable-
utilisateur.

Public Function RetourneNb(Numero as Integer, TypeVariable
as ???)
RetourneNb=Lof(Numero)/Len(TypeVariable)
end Function

Est ce possible ?

Merci d'avance pour vos suggestions

Eric
Avatar
Eric
Bonjour Jérôme

Merci pour ton aide.

Hélas, ça ne marche pas, j'ai une erreur de compilation
qui me donne le msg suivant :

Seuls les types définis par l'utilisateur et qui sont
définis dans les modèles d'objets publics peuvent être
convertis depuis ou vers un variant, ou passés à des
fonctions à liaisons tardives. (Un click sur le bouton
Aide n'apporte pas plus d'infos.)

Merci encore
Eric
-----Message d'origine-----
Bonjour

si tu ne déclares pas le type de ta variable


TypeVariable, elle devrait être
considérée en Variant et le tout devrait fonctionner


correctement

' entête de fonction
Public Function RetourneNb(Numero as Integer,


TypeVariable)
' ou
Public Function RetourneNb(Numero as Integer,


TypeVariable as Variant)

Jerôme



Avatar
ng
Salut,
Pour connaitre la place utilisée par une variable, regarde du coté de
LenB().

--
Nicolas G.
FAQ VB : http://faq.vb.free.fr
API Guide : http://www.allapi.net
Google Groups : http://groups.google.fr/
MZ-Tools : http://www.mztools.com/
"Eric" a écrit dans le message de
news: 1d0101c3ff79$25d1fbb0$
Bonjour Jérôme

Merci pour ton aide.

Hélas, ça ne marche pas, j'ai une erreur de compilation
qui me donne le msg suivant :

Seuls les types définis par l'utilisateur et qui sont
définis dans les modèles d'objets publics peuvent être
convertis depuis ou vers un variant, ou passés à des
fonctions à liaisons tardives. (Un click sur le bouton
Aide n'apporte pas plus d'infos.)

Merci encore
Eric
-----Message d'origine-----
Bonjour

si tu ne déclares pas le type de ta variable


TypeVariable, elle devrait être
considérée en Variant et le tout devrait fonctionner


correctement

' entête de fonction
Public Function RetourneNb(Numero as Integer,


TypeVariable)
' ou
Public Function RetourneNb(Numero as Integer,


TypeVariable as Variant)

Jerôme



Avatar
Eric Blin
Bonjour,

et pourquoi pas tout simplement

Public Function RetourneNb(Byval Numero as Integer, Byval LongueurUnit as
long) as long
RetourneNb=Lof(Numero)/LongueurUnit
end Function

Et en Appel cela donne

NbPersonne = RetourneNb(1, Len(Personne))

Voili voilou

@+

Eric
Avatar
Eric
Bonjour,

Effectivement pourquoi faire compliqué quand il y a plus
simple !!!

Je n'ai pas pensé une seconde à passer en argument la
longueur de ma variable-utilisateur au lieu de la variable
elle-même. Suis parti sur l'idée de faire qq chose de
général et donc je comptais faire calculer la longueur de
la variable dans la fonction.

Ta solution marche parfaitement.
Merci beaucoup

Eric

-----Message d'origine-----
Bonjour,

et pourquoi pas tout simplement

Public Function RetourneNb(Byval Numero as Integer, Byval


LongueurUnit as
long) as long
RetourneNb=Lof(Numero)/LongueurUnit
end Function

Et en Appel cela donne

NbPersonne = RetourneNb(1, Len(Personne))

Voili voilou

@+

Eric



.



Avatar
Eric
Merci à tous pour votre aide et à très prochainement.

Eric
Avatar
Eric Blin
Bonjour,

Le problème dans ce que tu voulais faire était d'introduire une notion de
variant ... déja je ne trouve pas cela élégant et de plus pour les traiter
ce n'est pas toujours simple même si au premier abord les "variant" semble
être des fourre tout...

Bon sympa de répondre que cela ta permis d'avancer ... c'est tellement rare
de nos jours

@+

Eric