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 :

Enregistrement / relecture de record : compatibilité delphi4 - 7


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Par défaut Enregistrement / relecture de record : compatibilité delphi4 - 7
    Bonjour,

    J'ai un logiciel qui mémorise ses paramètres dans un 'record' composé de variables de plusieurs types, en tout 167champs. On à du String[de 3 à 250] du Real48, Byte, Integer, Boolean, Double, Real et même des array[1..6] of real

    Ce logiciel est developpé en Delphi4 et le Record est enregistré et lu avec des Read / write.

    Je voudrais le lire avec la même technique avec un programme developpé en delphi7 qui à pour but de venir optionnellement se greffer sur l'ancien logiciel. Manque de bol lorsque je lis le record (avec le même code que sous delphi4) les éléments sont chamboulés, je suppose que la taille de certaines variables à changé ?

    Y à t'il moyen de forcer la compatibilité ?

    Merci,

    Harry

  2. #2
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 932
    Par défaut
    Les integers changent de format....(au moins ça)

    Quant à renforcer la compatibilité...tu sous-entends sans changer le code, je suppose ?

    Peut-être avec des IFDEF basés sur la version du compilo ? permettant d'utiliser alternativement une description dédiée de ton record.

    Charge à toi de redécrire ce record avec les types qui vont bien (integer->byte)

  3. #3
    Membre éprouvé
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Par défaut
    Citation Envoyé par qi130
    Les integers changent de format....(au moins ça)

    Quant à renforcer la compatibilité...tu sous-entends sans changer le code, je suppose ?

    Peut-être avec des IFDEF basés sur la version du compilo ? permettant d'utiliser alternativement une description dédiée de ton record.

    Charge à toi de redécrire ce record avec les types qui vont bien (integer->byte)
    Oui, c'est bien quelquechose comme une condition de compilation qu'il me faut. Je ne crois pas que ce soit IFDEF ? (Compile le texte source Delphi qui suit si nom est défini.)

    Reécrire ce record ce n'est pas possible sinon le logiciel originel va voir ses 167 paramètres chamboulés justement ! Il faudrais plustôt que j'adapte le nouveau logiciel pour fonctionner avec l'ancien que l'inverse.

  4. #4
    Membre Expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 568
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 568
    Par défaut
    Salut

    Une idée me vient : vérifie l'alignement des champs d'enregistrement et aussi l'utilisation éventuelle des directives de compilation {$A-}, {$A1}, {$A2}, {$A4} et {$A8} ou {$A+}, fais une recherche dans le code du projet sous D4.

    Ces directives permettent de jouer sur la taille des records sans passer par la directive packed (compulse l'aide en ligne pour le détail).

    Ces options pourraient expliquer le chamboulement observé si tes deux Delphi ne sont pas configurés de la même façon.

    cdlt

    e-ric

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  5. #5
    Expert confirmé
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 932
    Par défaut
    Je viens de "chopper" ça dans la jvcl:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    {$IFDEF DELPHI6}
     {$I jvcld6.inc}
     {$DEFINE JVCL_CONFIGURED}
    {$ENDIF DELPIH6}
    {-----------------------------------------------------------------------------}
    {$IFDEF DELPHI7}
     {$I jvcld7.inc}
    Il "suffit" d'avoir une description pour chaque version de compilo...

  6. #6
    Membre éprouvé
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Par défaut
    Citation Envoyé par qi130
    Je viens de "chopper" ça dans la jvcl:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    {$IFDEF DELPHI6}
     {$I jvcld6.inc}
     {$DEFINE JVCL_CONFIGURED}
    {$ENDIF DELPIH6}
    {-----------------------------------------------------------------------------}
    {$IFDEF DELPHI7}
     {$I jvcld7.inc}
    Il "suffit" d'avoir une description pour chaque version de compilo...

    le IFDEF permet de dire si tu compile ou non un morceau de code.

    dans ton exemple ca permet de dire que si tu est dans delphi6 tu utilise jvcld6.inc et si tu est dans Delphi7 jvcld7.inc.

  7. #7
    Membre éprouvé
    Avatar de Harry
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2002
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2002
    Messages : 1 224
    Par défaut
    Citation Envoyé par e-ric
    Salut

    Une idée me vient : vérifie l'alignement des champs d'enregistrement et aussi l'utilisation éventuelle des directives de compilation {$A-}, {$A1}, {$A2}, {$A4} et {$A8} ou {$A+}, fais une recherche dans le code du projet sous D4.

    Ces directives permettent de jouer sur la taille des records sans passer par la directive packed (compulse l'aide en ligne pour le détail).

    Ces options pourraient expliquer le chamboulement observé si tes deux Delphi ne sont pas configurés de la même façon.

    cdlt

    e-ric
    Merci E-ric, je n'ai pas trouvé de directives de compilation particulières dans le logiciel Delphi4.

    Il doit sagir de différences entre delphi4 et 7.
    Je continue mes recherches.

  8. #8
    Membre Expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 568
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 568
    Par défaut
    Citation Envoyé par Harry
    Merci E-ric, je n'ai pas trouvé de directives de compilation particulières dans le logiciel Delphi4.

    Il doit sagir de différences entre delphi4 et 7.
    Je continue mes recherches.
    As-tu vérifié les options du projet sous D4 ?
    Je suis très étonné d'apprendre que les types de données aient pu changer entre deux versions de Delphi Win 32. La plupart des types dépendent directement du matériel, donc les révolutions sont assez rares en ce domaine.

    Peux-tu déterminer la taille (en nombre d'octets) de ton enregistrement sous D4 et celle sous D7 ?

    Tu as bien repris rigoureusement le record du projet sous D4 ?

    Montre la description du record.

    cdlt

    e-ric

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

Discussions similaires

  1. Apple enregistre une chute record du nombre d'iPad écoulés
    Par Cedric Chevalier dans le forum Actualités
    Réponses: 20
    Dernier message: 02/08/2013, 11h12
  2. Réponses: 3
    Dernier message: 07/10/2009, 19h29
  3. Réponses: 3
    Dernier message: 18/11/2006, 20h21
  4. Type enregistrement ou "record"
    Par SurfingJeff dans le forum Delphi
    Réponses: 8
    Dernier message: 08/11/2006, 16h02
  5. compatibilité des réels avec pascal (pour fichier de record)
    Par jacquesberger dans le forum Langage
    Réponses: 2
    Dernier message: 12/08/2005, 19h58

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