none
FileGet et Option strict ON RRS feed

  • Question

  • Bonjour,

    J'utilise la fonction FileGet pour lire un fichier binaire sauvegardé par le bias d'une structure.

    Dim Toto as new NomStructure

    Avec l'option Strict Off la fonction FileGet(Nf, Toto) se comporte correctement et je lis bien le contenu de la structure.

    Avec Option Strict ON il me faut corriger l'écriture précédente et mettre :

    FileGet(Nf, CType((Toto,NomStructure))

    Dans ce cas, il impossible de récupérer le contenu de la structure.

    Que faut'il corriger pour lire correctement une structure avec l'option Strict ON ?

    Cordialement,

    lundi 21 février 2011 10:16

Réponses

Toutes les réponses

  • Bonjour marcel46fr

     

    L’option Strict n'accepte pas les liaisons tardive et les appels anonyme, vous avez sur le lien toute les règles a adaptés pour son utilisation Options Strict

     


    Cordialement,
    Xavier
    Alias Troxsa My M@iL
    lundi 21 février 2011 10:32
    Auteur de réponse
  • Bonjour Xavier,

    Il doit bien y avoir une solution pour utiliser la fonction FileGet avec Option Strict On et lire une structure.

    Toto reste à nothing dans le second cas.

    Cordialemnent,

     

    lundi 21 février 2011 11:49
  • Bonjour,

    Essayez avec le Type ValueType : Dim Toto As ValueType = New NomStructure

    Puis, pour accéder aux éléments, notez : CType(Toto, NomStructure).element1


    N'hésitez pas à poser des questions si un problème subsiste ou quelque chose n'est pas clair. Dans l'autre cas, veuillez indiquer que le problème est résolu. Cordialement.
    lundi 21 février 2011 12:49
  • Merci,

    Dim TampToto As ValueType = New NomStructure

    FileGet(NF,TampToto)

    Toto=CType(TampToto,NomStructure)

    Cordialement,

    • Marqué comme réponse Alex Petrescu mardi 22 février 2011 15:03
    lundi 21 février 2011 17:26
  • Bonjour,

    Juste pour ajouter quelques précisions.

    Après des tests, les types créés en VBNet sont relisibles en VB6. Cela permet donc de conserver la compatibilité avec les nouveaux fichiers créés en VBNet dans les anciennes applis VB6.0.

    Il faut juste maintenant gérer les index des tableaux. La sauvegarde de la structure en VB.net conserve l'indexation à 0.

    Ce type, (maintenant structure) était composé de tableaux de doubles, de chaines de longueur non fixe, d'entiers (remplacés par des shorts en VB.net) et d'une valeur de type date.

    Il m'a fallu modifier les anciens programmes vb6.0 pour détecter l'indexation à 0 crée avec VB.net. Ceci est nécessaire jusqu'à la migration totale des applis VB6.0 vers VB.net.

    Je n'ai pas encore testé la relecture des types créés en VB6 avec VBnet, mais je pense que cela ne doit pas poser de problèmes.

    En lisant aussi, avec VB.net il faudra plutôt remplacer la structure par la classe pour bénéficier de méthodes et fonctions sur les objets. En particulier clone permet de réaliser une copie par valeur. En VB.net, une égalité de structure est faite par référence à partir du moment où elle contient des types références (Tableaux) : ceci m'a causé quelques problèmes.

    La sauvegarde d'une classe en binaire par sérialisation est très intéressante et semble correspondre à la méthode "put" en VB6 pour les structures (types).

    Cordialement,

    mercredi 2 mars 2011 08:59