realbasic-nug.fr
[Top] [All Lists]

Re: Probleme Avec RB 2008r1

To: REALbasic NUG French <realbasic-nug dot fr at lists dot realsoftware dot com>
Subject: Re: Probleme Avec RB 2008r1
From: Jean-francois Toracca <jftoracca at elp-info dot fr>
Date: Tue, 11 Mar 2008 09:10:06 +0100
Delivered-to: listarchive at realsoftware dot com
Delivered-to: realbasic-nug dot fr at lists dot realsoftware dot com
References: <66D71AD5-A82B-49A0-A2D5-670AC7B8853B at elp-info dot fr> <B82845B3-7983-4DE9-856A-12AE1F8CC1A2 at free dot fr> <6DB05897-DDF2-4202-BA94-0D83A65A5936 at elp-info dot fr> <203F7BD3-F9CB-4460-B5A9-CDA4671DF260 at free dot fr>
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









<Prev in Thread] Current Thread [Next in Thread>