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 :

Passage de delphi 5 à 7


Sujet :

Langage Delphi

  1. #1
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut Passage de delphi 5 à 7
    Bonjour à tous,

    Je suis passé il n'y a pas longtemps de Delphi 5 à 7. Mon application marche bien à l'exécution, mais accompagné de nombreux warning que voici.
    Etat_encaissement.pas(610): Unsafe typecast of 'TDBGrid' to 'TDrawGrid'
    Ligne incriminée 
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ColS := format('%2d',[TdrawGrid(DbGrid2).col]);
     Menu_Gle.pas(437): Unsafe type 'PChar'
    Ligne incriminée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    ARect.Left := X; 
     DrawText(ACanvas.Handle,
             PChar(Text),
             -1,
             ARect,
             DT_SINGLELINE or DT_LEFT or DT_VCENTER);
     Menu_Gle.pas(488): Unsafe code 'GetMem'
    Ligne incrimée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GetMem(VerInfo, VerInfoSize);
     Menu_Gle.pas(488): Unsafe type 'VerInfo: Pointer'
    Ligne incriminée:
     Menu_Gle.pas(502): Unsafe code 'FreeMem'
    Ligne incriminée:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FreeMem(VerInfo, VerInfoSize);
    Pouvez-vous m'aider à faire les changements qui s'impose? Merci pour toute aide.

  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 448
    Points
    28 448
    Par défaut
    la première est normale, DBGrid n'est pas un DrawGrid

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    type
      TOpenDbGrid = class(TDBGrid)
      end;
     
    ...  
      ColS := format('%2d',[TOpenDBGrid(DbGrid2).col]);
    mais il serait plus judicieux de prendre le nombre de colonne de la datasource

    pour les autres ce sont juste des warning liés au Delphi 8.Net qui était à venir, il y a un flag pour les supprimer {$WARNING OFF} ou quelque chose comme ça

  3. #3
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    Salut,

    Elle marchait pourtant bien sous Delphi 5.
    En utilisant TOpenDBGrid, voici l'erreur:
    [Error] Etat_encaissement.pas(609): Undeclared identifier: 'TOpenDBGrid'

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    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 : 13 563
    Points : 25 165
    Points
    25 165
    Par défaut
    Le code de Paul Toth, c'est juste une précaution lors d'un Hack des propriétés et méthodes protégés dont on obtient l'accès parce que toutes classes déclarées dans une même unité ignore la visibilité des variables

    Voir la Comment accéder aux méthodes "Protected" d'une classe ?

    En plus, on te l'a déjà expliqué dans ton sujet Unsafe typecast of 'TDBGrid' to 'TDrawGrid' aussi bien pour le Hack que pour les Warnings !
    Mais je pense qu'à l'époque tu n'avais tout simplement même pas vu et encore moins lu ma réponse qui t'indiquait de retirer les warnings dans les options de projet

    En Delphi, va dans le menu Projet - Options - Message du Compilateur, tu vas tout en bas, et tu décoche les trois rubrique "... non protégé"

    Toutes utilisations des pointeurs (@, CopyMemory, PChar, ...) ou références objets castés sauvagement sont accompagnées d'un Warning du genre

    C'est à cause de la logique .NET qui émergeait à l'époque de D7 et qui règne aujourd'hui chez Microsoft, heureusement Embarcadero a fait le bon choix, en s'ouvrant aux OS avec un grand avenir comme MacOS, iOS et Android

    En .NET, il y a un framework portable sur différentes plate-formewindows ... donc mieux vaut ne pas trop toucher directement à la mémoire et les trucs trop bas niveaux

    Donc en Delphi, trois nouveaux warnings ont été ajouté pour prévenir que ce qu'il écrit est "mal" selon Microsoft, et heureusement, on peut retirer ces warnings, qui à savoir en .NET deviennent des Erreurs de compilation (il faut ajouter des trucs pour le Garbage Collector, unsafe, fixed, ...)

    Sous MacOs, FMX utilise des compteurs de références à la place d'un Garbage Collector mais tu n'as que 11 versions de retard pour en profiter !

    Car aujourd'hui, on parle plutôt de Delphi 18 plus connu sous le nom Delphi XE4

  5. #5
    Membre habitué Avatar de sondo
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Août 2004
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Burkina Faso

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Service public

    Informations forums :
    Inscription : Août 2004
    Messages : 540
    Points : 162
    Points
    162
    Par défaut
    Salut,

    Merci ShaiLeTroll de m'avoir rafraîchi la mémoire par ce poste de 2012.
    Je serai plus attentionné la prochaine fois.
    A bientôt.

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

Discussions similaires

  1. [Lazarus] Passage de Delphi 7 à Lazarus
    Par Propre dans le forum Lazarus
    Réponses: 2
    Dernier message: 17/12/2009, 12h12
  2. Passage de Delphi 5 à Delphi 2007 win32
    Par fonkoufobar dans le forum Delphi
    Réponses: 4
    Dernier message: 24/05/2007, 20h10
  3. Réponses: 3
    Dernier message: 18/12/2006, 15h16
  4. Passage de Delphi WIN32 au .NET
    Par aityahia dans le forum EDI
    Réponses: 9
    Dernier message: 04/04/2006, 02h54
  5. Passage de Delphi 7 à Delphi 2005
    Par Yepazix dans le forum EDI
    Réponses: 2
    Dernier message: 24/10/2005, 11h44

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