merci Stéphane,
en effet la fonction CStringValue a été rajoutée dans RB2008r1... il
va falloir que je trouve un moyen pour remplacer ma fonction dans
tout mon projet... galère mais bon.
merci encore.
Jean-Francois
Le 10 mars 08 à 16:39, Stéphane Mons a écrit :
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
|