IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API, COM et SDKs Delphi Discussion :

E2437 - Constant object cannot be passed as var parameter


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre habitué
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Points : 187
    Points
    187
    Par défaut E2437 - Constant object cannot be passed as var parameter
    Bonjour,

    J'ai un petit soucis sur la gestion des blobs dans ECO dans une appli VCL.NET sous BDS.
    Dans le modèle UML, quand un attribut d'une classe à une propriété de type blob, ECO génére une propriété de type Array of Byte.

    J'ai un problème pour copier un stream dans ce type de champ.


    setlength(MonObj.BinBlob, flux.Size);

    => Erreur de compilation
    [Pascal Error] E2197 Constant object cannot be passed as var parameter

    L'explication de l'erreur est simple, BinBlob est une propriété et les propriétés ne peuvent être utilisé comme des paramètres.

    Properties can't be accessed as var parameters . The compiler has no way of knowing (because it may not have compiled that code yet - it only makes one pass, remember?) whether that property is a simple type (integer, string, etc.) that is simply being set, or if it's actually a setter method that has side effects.

    Par contre, je ne sais pas comment contourner cette limitation.

    Existe t'elle aussi en C# ?

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    tu dois allouer un Array of Byte que tu viens ensuite assigner à la propriété.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre habitué
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Points : 187
    Points
    187
    Par défaut
    Il me semblait avoir essayer.

    C'est effectivement la solution,

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 19/08/2010, 17h17
  2. Réponses: 3
    Dernier message: 04/01/2010, 19h32
  3. Réponses: 10
    Dernier message: 04/07/2006, 20h57
  4. Réponses: 5
    Dernier message: 24/03/2006, 14h38
  5. Réponses: 6
    Dernier message: 03/09/2003, 10h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo