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

Langage Delphi Discussion :

Compatibilité entre Windows11 et Windows 10 ou Delphi RIO (delphi 10.3.3) et Alexandria (delphi 11.3)


Sujet :

Langage Delphi

  1. #1
    Membre éclairé

    Inscrit en
    Novembre 2002
    Messages
    815
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 815
    Par défaut Compatibilité entre Windows11 et Windows 10 ou Delphi RIO (delphi 10.3.3) et Alexandria (delphi 11.3)
    Bonjour à tous,

    J'ai un programme qui se construit (compile) sans problème dans les configurations suivantes :
    Windows 7 + Delphi XE
    Windows 10 + Delphi Rio (version de Delphi 10.3.3)

    J'essaye de reconstruire (compiler) ce programme sous Windows 11 et Delphi Alexandria (version de Delphi 11.3) , mais j'ai une erreur dans un composant tierce, il semblerait que cela tienne
    à des déclarations. mais je ne comprends pas vraiment.
    Je sollicite votre aide essayer de me sortir de cette impasse.

    Je vous joint les bouts de code qui me semble important et qui j'espère devrait vous permettre de m'aider.

    La déclaration de "TcalcArray" et de "TclacItem" , qui sont en cause.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     TFormulaDataType = (fdtnumber, fdtstring);
    
     TCalcItem = record
       data : double;
       str : string;
       typ : TFormulaDataType;
     end;
    
     TCalcArray = array of TCalcItem;
     PCalcItem = ^TCalcItem;
     PCalcArray = ^TCalcArray


    La déclaration de "data"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     TFormulaCalc = class
     protected
      max,pos : integer;
      data : TCalcArray;
      fParent : TArtFormula;
     public
    La destruction de l'enregistrement "data"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    destructor TFormulaCalc.Free;
    var i : integer;
    begin
     for i := 0 to high(data) do freeandnil(data[i]);
     data := nil;
    end;
    L'erreur se déclenche quand on exécute, libère la structure "Data", sur l'instruction " Freeandnil(data[i]) "
    avec le message d'erreur suivant: E2010 Types incompatibles : " Tobject" et "TclacItem "

    je suis preneur de toutes aides !!

    merci a vous.

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 933
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 933
    Par défaut
    Un enregistrement n'est pas un objet, ça libération est implicite, il n'a pas destructeur (enfin si il pourrait sur un Delphi récent mais ce n'est pas un véritable destructeur, plutôt une méthode appelée à la libération implicite de l'élément, à l'instar d'un OnDestroy).

    Mettre Data à nil ou fixer sa longueur à 0 suffit à libérer la mémoire associée.

    Si l'enregistrement lui-même contenait un objet, là oui il faudrait libérer cet objet mais ici il n'en contient aucun.

  3. #3
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 086
    Par défaut
    En plus un Free redefini, tu peux jeter cette lib (composant tierce), c'est totalement non conforme, c'est le Destroy qu'il faut redéfinir.
    Si tout est dans ce genre, je ne lui ferais aucune confiance.
    Tu devrais au pire mettre à jour, la version en cours de ArtFormula a été corrigé, aussi bien sur le Destroy que sur le FreeAndNil
    Au moins le développeur a progressé avec le temps mais on y voit une tonne de code pouvant être refactoré.

    Et comme AndNotOr le fait remarquer, le tableau sera libéré avec l'objet donc pas besoin de ce code.



    Sinon, il semble que la déclaration procedure FreeAndNil(var Obj); soit enfin corrigé en procedure FreeAndNil(const [ref] Obj: TObject); ce qui est une bonne chose car cela permet de détecter ce genre de code erroné.

    Je me demande bien d'ailleurs comment cela pouvait ne pas provoquer une erreur l'exécution avant
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  4. #4
    Membre éclairé

    Inscrit en
    Novembre 2002
    Messages
    815
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 815
    Par défaut
    Merci a vous deux.

    Je vais voir la mise a jour de "ArtFormula", mon composant date d'au moins 20 ans !!

Discussions similaires

  1. Réponses: 4
    Dernier message: 17/12/2015, 18h57
  2. Compatibilité entre Delphi 7 et Windows 7
    Par GoustiFruit dans le forum EDI
    Réponses: 26
    Dernier message: 02/12/2014, 17h48
  3. Compatibilité entre LabVIEW Linux et Windows
    Par balgrim86 dans le forum LabVIEW
    Réponses: 2
    Dernier message: 04/01/2009, 11h46
  4. [Wamp] La compatibilité entre wamp5_1.7.0 et jdk-1_5_0_02-windows-i586-p
    Par sonia5 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 22/12/2008, 15h05
  5. Réponses: 5
    Dernier message: 16/03/2006, 00h09

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