Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Membre régulier Avatar de sondo
    Inscrit en
    août 2004
    Messages
    472
    Détails du profil
    Informations forums :
    Inscription : août 2004
    Messages : 472
    Points : 86
    Points
    86

    Par défaut Unsafe typecast of 'TDBGrid' to 'TDrawGrid'

    Bonjour,

    Je rencontre des problème après le passage de Delphi5 je suis passé à Delphi7.
    Quand je compile mon programme écrit en Delphi5 dans l'EDI de Delphi7 j'ai cet erreur : Unsafe typecast of 'TDBGrid' to 'TDrawGrid', alors que mon programme s'exécutait bien dand Delphi5.
    Voici le code incriminé :
    Code :
    ColS := format('%2d',[TdrawGrid(DbGrid1).col]);
    Pouvez-vous m'aider à comprendre?

    Merci d'avance.

  2. #2
    Expert Confirmé Sénior
    Avatar de Paul TOTH
    Homme Profil pro Paul TOTH
    Freelance
    Inscrit en
    novembre 2002
    Messages
    5 523
    Détails du profil
    Informations personnelles :
    Nom : Homme Paul TOTH
    Âge : 45
    Localisation : Réunion

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

    Informations forums :
    Inscription : novembre 2002
    Messages : 5 523
    Points : 14 591
    Points
    14 591

    Par défaut

    ben c'est normal, TDBGrid n'est pas une TDrawGrid
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Produits : UPnP, RemoteOffice, FlashPascal
    Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%

  3. #3
    Expert Confirmé Sénior Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    juillet 2006
    Messages
    10 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : juillet 2006
    Messages : 10 037
    Points : 12 856
    Points
    12 856

    Par défaut

    Tu as 3 warnings du .NET a retiré en D7 Win32, normalement, cela ne devrait pas être une erreur

    utilise plutôt un TDBGridHack pour l'astuce du hack de propriété
    Code :
    1
    2
    3
    4
    5
    6
     
    type
      TDBGridHack = class(TDBGrid)
      public
        property Col;
      end;
    C'est vrai que TdrawGrid augmente la visibilité de Col, c'est une astuce souvent utilisée mais périlleuse

    Tu passe de Delphi 5 à 7, pense que le 17 (XE3) est sorti !
    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

    Halte à la ségrégation des Cinémas, VO sur Paris, VF en Banlieue, Abonnement résilié !

  4. #4
    Membre régulier Avatar de sondo
    Inscrit en
    août 2004
    Messages
    472
    Détails du profil
    Informations forums :
    Inscription : août 2004
    Messages : 472
    Points : 86
    Points
    86

    Par défaut

    Salut Paul TOTH,

    Merci pour ton aide. Mais je ne comprend pas du tout! En Delphi5 cela marchait très bien. Pourquoi en Delphi7 cela pose problème?
    Du coup mon application ne fonctionne plus. En plus je ne sais pas qu'est-ce qu'il faut mettre à la place pour satisfaire Delphi7. Voici tous les codes qui posent problème :
    Code :
    Dm_num := DbGrid1.Columns.Grid.Fields[TdrawGrid(DbGrid1).Col-1].AsString;
    Erreur : Unsafe typecast of 'TDBGrid' to 'TDrawGrid'
    Code :
    ShellExecute(Handle,'open',PChar('c:\Frais_medicaux_agent.htm'),nil,nil,SW_SHOW);
    Erreur : [Warning] Menu_Gle.pas(434): Unsafe type 'PChar'
    Erreur : [Warning] Menu_Gle.pas(476): Unsafe type 'Pointer'
    Code :
    GetMem(VerInfo, VerInfoSize);
    Erreur : [Warning] Menu_Gle.pas(485): Unsafe code 'GetMem'
    [Warning] Menu_Gle.pas(485): Unsafe type 'VerInfo: Pointer'
    [code]GetFileVersionInfo(PChar(ParamStr(0)), 0, VerInfoSize, VerInfo);/CODE]
    Erreur : [Warning] Menu_Gle.pas(487): Unsafe type 'PChar'
    Code :
    1
    2
    3
    if GetTimeZoneInformation(TimeZoneInfo) <> $FFFFFFFF then 
            Bias := TimeZoneInfo.Bias / 1440; // 60x24 
          GetFileTime(h, @Info1, @Info2, @Info3);
    Erreur : [Warning] Mise_jour.pas(44): Unsafe code '@ operator'

    Voici un récapitulatif des erreurs :
    Build
    [Warning] Liste_dm_four.pas(58): Unsafe typecast of 'TDBGrid' to 'TDrawGrid'
    [Warning] Liste_dm_four.pas(66): Unsafe typecast of 'TDBGrid' to 'TDrawGrid'
    [Warning] Liste_dm_four.pas(67): Unsafe typecast of 'TDBGrid' to 'TDrawGrid'
    [Warning] Liste_dm_four.pas(130): Unsafe typecast of 'TDBGrid' to 'TDrawGrid'
    [Warning] Liste_dm_four.pas(131): Unsafe typecast of 'TDBGrid' to 'TDrawGrid'
    [Warning] Liste_dm_four.pas(214): Unsafe typecast of 'TDBGrid' to 'TDrawGrid'
    [Warning] Liste_dm_four.pas(215): Unsafe typecast of 'TDBGrid' to 'TDrawGrid'
    [Warning] Liste_frs_piece_en_cours.pas(46): Unsafe typecast of 'TDBGrid' to 'TDrawGrid'
    [Warning] Liste_frs_piece_en_cours.pas(54): Unsafe typecast of 'TDBGrid' to 'TDrawGrid'
    [Warning] Liste_frs_piece_en_cours.pas(55): Unsafe typecast of 'TDBGrid' to 'TDrawGrid'
    [Warning] Liste_frs_piece_en_cours.pas(68): Unsafe typecast of 'TDBGrid' to 'TDrawGrid'
    [Warning] Liste_frs_piece_en_cours.pas(69): Unsafe typecast of 'TDBGrid' to 'TDrawGrid'
    [Warning] Liste_fournisseurs.pas(56): Unsafe typecast of 'TDBGrid' to 'TDrawGrid'
    [Warning] Liste_fournisseurs.pas(64): Unsafe typecast of 'TDBGrid' to 'TDrawGrid'
    [Warning] Liste_fournisseurs.pas(65): Unsafe typecast of 'TDBGrid' to 'TDrawGrid'
    [Warning] Liste_fournisseurs.pas(79): Unsafe typecast of 'TDBGrid' to 'TDrawGrid'
    [Warning] Liste_fournisseurs.pas(80): Unsafe typecast of 'TDBGrid' to 'TDrawGrid'
    [Warning] Liste_fournisseurs.pas(92): Unsafe typecast of 'TDBGrid' to 'TDrawGrid'
    [Warning] Liste_fournisseurs.pas(93): Unsafe typecast of 'TDBGrid' to 'TDrawGrid'
    [Warning] Liste_fournisseurs.pas(104): Unsafe typecast of 'TDBGrid' to 'TDrawGrid'
    [Warning] Liste_fournisseurs.pas(105): Unsafe typecast of 'TDBGrid' to 'TDrawGrid'
    [Warning] Situation_frais_agent.pas(137): Unsafe type 'PChar'
    [Warning] Situation_frais_agent.pas(173): Unsafe type 'PChar'
    [Warning] Situation_frais_agent.pas(209): Unsafe type 'PChar'
    [Warning] Situation_frais_agent.pas(244): Unsafe type 'PChar'
    [Warning] Boite_A_Propos.pas(32): Unsafe type 'Pointer'
    [Warning] Boite_A_Propos.pas(35): Unsafe type 'PChar'
    [Warning] Boite_A_Propos.pas(41): Unsafe code 'GetMem'
    [Warning] Boite_A_Propos.pas(41): Unsafe type 'VerInfo: Pointer'
    [Warning] Boite_A_Propos.pas(43): Unsafe type 'PChar'
    [Warning] Boite_A_Propos.pas(43): Unsafe type 'VerInfo: Pointer'
    [Warning] Boite_A_Propos.pas(44): Unsafe type 'VerInfo: Pointer'
    [Warning] Boite_A_Propos.pas(44): Unsafe type 'Pointer'
    [Warning] Boite_A_Propos.pas(55): Unsafe code 'FreeMem'
    [Warning] Boite_A_Propos.pas(55): Unsafe type 'VerInfo: Pointer'
    [Warning] Menu_Gle.pas(434): Unsafe type 'PChar'
    [Warning] Menu_Gle.pas(476): Unsafe type 'Pointer'
    [Warning] Menu_Gle.pas(479): Unsafe type 'PChar'
    [Warning] Menu_Gle.pas(485): Unsafe code 'GetMem'
    [Warning] Menu_Gle.pas(485): Unsafe type 'VerInfo: Pointer'
    [Warning] Menu_Gle.pas(487): Unsafe type 'PChar'
    [Warning] Menu_Gle.pas(487): Unsafe type 'VerInfo: Pointer'
    [Warning] Menu_Gle.pas(488): Unsafe type 'VerInfo: Pointer'
    [Warning] Menu_Gle.pas(488): Unsafe type 'Pointer'
    [Warning] Menu_Gle.pas(499): Unsafe code 'FreeMem'
    [Warning] Menu_Gle.pas(499): Unsafe type 'VerInfo: Pointer'
    [Warning] SplashScreen.pas(32): Unsafe type 'Pointer'
    [Warning] SplashScreen.pas(35): Unsafe type 'PChar'
    [Warning] SplashScreen.pas(41): Unsafe code 'GetMem'
    [Warning] SplashScreen.pas(41): Unsafe type 'VerInfo: Pointer'
    [Warning] SplashScreen.pas(43): Unsafe type 'PChar'
    [Warning] SplashScreen.pas(43): Unsafe type 'VerInfo: Pointer'
    [Warning] SplashScreen.pas(44): Unsafe type 'VerInfo: Pointer'
    [Warning] SplashScreen.pas(44): Unsafe type 'Pointer'
    [Warning] SplashScreen.pas(55): Unsafe code 'FreeMem'
    [Warning] SplashScreen.pas(55): Unsafe type 'VerInfo: Pointer'
    [Warning] Mise_jour.pas(44): Unsafe code '@ operator'
    [Warning] Mise_jour.pas(44): Unsafe code '@ operator'
    [Warning] Mise_jour.pas(44): Unsafe code '@ operator'

  5. #5
    Expert Confirmé Sénior
    Avatar de Paul TOTH
    Homme Profil pro Paul TOTH
    Freelance
    Inscrit en
    novembre 2002
    Messages
    5 523
    Détails du profil
    Informations personnelles :
    Nom : Homme Paul TOTH
    Âge : 45
    Localisation : Réunion

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

    Informations forums :
    Inscription : novembre 2002
    Messages : 5 523
    Points : 14 591
    Points
    14 591

    Par défaut

    alors ce ne sont pas des erreurs mais des warning, D7 en a introduit un paquet en prévision du passage à .Net, il alerte dès qu'un usage de pointeur est fait.

    si tu penses que ton code ne justifie ce warning tu peux les désactiver (F1 sur le message)
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Produits : UPnP, RemoteOffice, FlashPascal
    Embarcadero : Ile de la Réunion, Dephi, C++Builder, RADPHP...TVA à 8,5%

  6. #6
    Modérateur
    Avatar de Rayek
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mars 2005
    Messages
    5 195
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : mars 2005
    Messages : 5 195
    Points : 7 608
    Points
    7 608

    Par défaut

    Citation Envoyé par sondo Voir le message
    Code :
    Dm_num := DbGrid1.Columns.Grid.Fields[TdrawGrid(DbGrid1).Col-1].AsString;
    Voici un récapitulatif des erreurs :
    Ca tu pourrais le transformer en utilisant le dataset ...

    Genre

    Code :
    1
    2
     
    DM_NUM := LeComposantBaseDeDonnee.FieldByName('LE Nom Du champ').AsString;
    Modérateur Delphi Combattez la brute
    Aucune réponse aux sollicitations techniques par MP

    Le guide du bon forumeur :
    __________
    [Projet en cours] Des unités pour faciliter l'utilisation d'indy : EasyIndy 1.3

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •