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

 Delphi Discussion :

Techniques mémorisation pointeurs ?


Sujet :

Delphi

  1. #21
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par Aka Guymelef Voir le message
    Ben techniquement pour moi ce serait un [grand] champ texte (ien fait il vaudrait mieux un BLOB mais ici je ne vais pas te polluer avec les histoires de Stream pour y accéder/enregistrer ) et donc tu fais une requête standard qui va te ramener ton champ, tu récupère le string et tu désérialises.
    Dans les F1 relatifs à tout ce qui est stream, writeComponent and co, j'ai vu à un moment qu'on parlait des prop published... la serial se limiterait elle aux champs publiés ?

  2. #22
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Un point qu'il semble que tu n'es pas assimilé c'est qu'il n'y a pas UNE sérialisation mais autant de forme de sérialisation possible que tu inventes de format.

    En Delphi le mécanisme de sérialisation utilisé pour les composants s'appuie les propriétés publiées car elles génère des RTTI, des informations qui permettent de faire de la réflexion sur n'importe quel objet.

    Ainsi pour n'importe quel objet et sans que la variable qui contient l'objet soit d'un type particulier je peux savoir les noms, types et valeurs, exhaustivement, de chacune des propriétés publiées de cet objet.

    Avec un mécanisme générique je peux donc extraire toutes les informations (publiées) d'un objet quel qu'il soit.

    C'est pratique mais ce n'est pas une obligation de l'utiliser, c'est au choix.

  3. #23
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par Aka Guymelef Voir le message
    Un point qu'il semble que tu n'es pas assimilé c'est qu'il n'y a pas UNE sérialisation mais autant de forme de sérialisation possible que tu inventes de format.

    En Delphi le mécanisme de sérialisation utilisé pour les composants s'appuie les propriétés publiées car elles génère des RTTI, des informations qui permettent de faire de la réflexion sur n'importe quel objet.

    Ainsi pour n'importe quel objet et sans que la variable qui contient l'objet soit d'un type particulier je peux savoir les noms, types et valeurs, exhaustivement, de chacune des propriétés publiées de cet objet.

    Avec un mécanisme générique je peux donc extraire toutes les informations (publiées) d'un objet quel qu'il soit.

    C'est pratique mais ce n'est pas une obligation de l'utiliser, c'est au choix.


    Mais comment fait on pour sauver/récupérer les attributs privés alors ?

    Désolé si ma question est d'un stupidité affligeante... y'a encore pas mal de taf avant que je pige toutes les subtilités de Delphi.

  4. #24
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    C'est pour ça que je dis qu'il n'y a pas qu'une seule façon de faire de la sérialisation, tu as mis le doigt sur l'un des inconvénients des RTTI c'est qu'il ne marche qu'avec les champs publiés, impossibles d'avoir les champs privés, protégés ou même public.

    Une façon de voir les choses est de déclarer une classe de base avec une méthode (abstraite ou au moins virtuelle) qui ne sert qu'à faire la sérialisation sous format XML par exemple. Puis chaque classe fille doit redéfinir son traitement de sérialisation propre.

  5. #25
    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 448
    Points
    28 448
    Par défaut
    Citation Envoyé par Aka Guymelef Voir le message
    C'est pour ça que je dis qu'il n'y a pas qu'une seule façon de faire de la sérialisation, tu as mis le doigt sur l'un des inconvénients des RTTI c'est qu'il ne marche qu'avec les champs publiés, impossibles d'avoir les champs privés, protégés ou même public.

    Une façon de voir les choses est de déclarer une classe de base avec une méthode (abstraite ou au moins virtuelle) qui ne sert qu'à faire la sérialisation sous format XML par exemple. Puis chaque classe fille doit redéfinir son traitement de sérialisation propre.
    en fait si c'est possible ! c'est l'objet de DefineProperties

    mais il me semble plus simple d'implémenter les LoadFromStream et SaveToStream pour chaque instance à sérialiser

    Surtout que ça évite d'éventuelles surprises si CodeGear décide de changer le comportement de TReader/TWriter dans les futures versions de Delphi

  6. #26
    Membre chevronné

    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    1 519
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 519
    Points : 2 153
    Points
    2 153
    Billets dans le blog
    1
    Par défaut
    Ok en fait c'est la méthode proposé par CodeGear pour implémenter mon idée de méthode abstraite qui fait la sérialisation pour chaque objet .

    Néanmoins il ne faut pas perdre de vue que ce n'est pas fait "implicitement" chaque classe doit redéfinir DefineProperties et lui implanter son comportement particulier de sérialisation.

  7. #27
    Membre éclairé Avatar de peter27x
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 029
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 029
    Points : 757
    Points
    757
    Par défaut
    Citation Envoyé par Aka Guymelef Voir le message
    Ok en fait c'est la méthode proposé par CodeGear pour implémenter mon idée de méthode abstraite qui fait la sérialisation pour chaque objet .

    Néanmoins il ne faut pas perdre de vue que ce n'est pas fait "implicitement" chaque classe doit redéfinir DefineProperties et lui implanter son comportement particulier de sérialisation.
    Bon ben c'est bien joli tout ça mais plus ça va plus je sens que pour assurer le coup je vais faire des insert into façon néanderthal moi hein...

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Mémorisation d'un pointeur
    Par mulfycrowh dans le forum Débuter
    Réponses: 10
    Dernier message: 21/11/2012, 21h57
  2. Réponses: 2
    Dernier message: 20/04/2010, 11h05
  3. Réponses: 7
    Dernier message: 02/01/2008, 14h32
  4. Réponses: 11
    Dernier message: 03/11/2007, 18h33
  5. Pointeur ou autre technique
    Par superomrom dans le forum MATLAB
    Réponses: 13
    Dernier message: 19/07/2007, 17h35

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