Le 10 mars 08 à 14:54, Jean-francois Toracca a écrit :
Bonjours Stéphane,
Pour répondre à vos question, les deux fonctions contenaient (au
départ) le même code. par la suite, la fonction sur les variants est
devenue inutile.
Comme le projet sur lequel je travail est gros (près de 300
objets...) je n'ai pas voulu supprimer la fonction.
pour préciser ma question initiale:
- pourquoi la fonction sur le variant me fait une exception alors
que la fonction sur le DataBaseField non ???
Parce que la fonction sur le DatabaseField est "typée", c'est-à-dire
qu'elle ne concerne qu'une seule classe. Le variant, lui, est une
classe fourre-tout. Cela signifie que la fonction sur le variant peut
être utilisée par n'importe quel objet. Le compilateur ne verra aucune
erreur mais cela ne signifie pas qu'il n'y aura pas d'erreur à
l'exécution si tu passes un objet qui ne peut pas être converti en ce
que tu veux (ici, en string).
- Pourquoi cela fonctionne en Rb2007 et pas en Rb2008 ?
1. Cette fonction EXISTE déjà dans rb2008. Rajouter la même fonction
ne peut que rendre les choses confuses pour le runtime. Tu peux donc
la supprimer sans (aucun?) problème.
2. Si cela ne fonctionne plus dans RB2008, c'est soit un nouveau bug,
soit au contraire une correction de bug (peut-être que RB2007 était
trop permissif vis à vis des variants).
3. Dans tous les cas, ce n'est (très probablement) pas dans cette
fonction qu'il y a une erreur, mais dans son utilisation. Peut-être
que tu utilises cette fonction pour transformer en string un objet qui
ne peut pas l'être, d'où le TypeMismatchException. Mets un breakpoint
dans cette fonction et regarde de quelle méthode vient l'appel qui
crée une erreur.
Stéphane
merci encore,
Jean-François
Le 10 mars 08 à 14:25, Stéphane Mons a écrit :
Le 10 mars 08 à 14:02, Jean-francois Toracca a écrit :
Bonjours a tous,
j'ai un petit problème. j'ai écrit les méthodes suivant en RB
2007r4 il y a quelque mois et elle fonctionnent parfaitement. je
viens de tester la version 2008r1 et j'obtiens une exception
TypeMismatchException sur la fonction utilisant le Variant.
est-ce que quelqu'un pourrait me dire pourquoi s'il vous
plait ??????
Function CStringValue(Extends v as variant) As string
Return v.StringValue
End Function
Houla ! Tu implémentes une fonction qui existe déjà et qui,
finalement, ne fait rien d'intéressant. AMHA tu devrais l'effacer.
Function CStringValue(Extends DBF As databasefield) As string
dim vls_Retour As String
dim vltc_Convert as TextConverter
vltc_Convert=GetTextConverter(Mod_SQL.propE_Encod, Encodings.UTF8)
vls_Retour = vltc_Convert.convert(DBF.StringValue)
vls_Retour = vls_Retour.ReplaceAllB("##EndOfLine##", EndOfLine)
Return vls_Retour
End Function
Quel rapport avec la fonction précédente ?
Stéphane
|