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

Lazarus Pascal Discussion :

Erreur à l'exécution "Invalid variant type cast"


Sujet :

Lazarus Pascal

  1. #1
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2019
    Messages : 219
    Par défaut Erreur à l'exécution "Invalid variant type cast"
    Bonjour à tous,
    Mon appli de base de données (mais peu importe en fait) fonctionne mais quand je lance une certaine commande (créer un fichier ADIF à partir d'une multi-sélection du DBGrid) j'ai une erreur "Invalid variant type cast". Je sais dans quelle procédure cela se passe mais je n'identifie pas le problème. Le code est trop long pour l'afficher dans le message. Ma question est juste : dans quels cas généraux ce genre d'erreur se produit ? En fonction de vos réponses je chercherai ensuite à résoudre cette erreur.
    Le même code sous Delphi fonctionne parfaitement. Vous me direz "Restez sous Delphi !" Certes mais je voudrais tout de même savoir par curiosité intellectuelle...
    Merci.
    Cordialement

  2. #2
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 253
    Par défaut
    hello,
    cela dépend du contexte. Par exemple cela peut être dû à une valeur "Null" (on ne peut pas déterminer le type). Il faut alors tester si la valeur est nulle avant de l'utiliser. Si ce n'est pas ton cas mets nous au moins la ligne de code où cela plante.
    Ami calmant, J.P

  3. #3
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2019
    Messages : 219
    Par défaut
    Le problème est que je n'arrive pas à déterminer la ligne qui plante. Comme il n'y a aucun secret, je joins le PDF du code dans sa totalité. Il pourra servir pour d'autres réponses éventuelles.
    PS : mon 1er ordinateur était aussi un ZX81 en kit en 1982 !
    Merci. Cordialement
    uMainform.pdf

  4. #4
    Membre Expert
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Billets dans le blog
    2
    Par défaut
    Salut dur de te répondre, sans code (ton pdf ne s'affiche pas chez moi) donnes nous plutôt le .pas) Tu n'as pas le numero de ligne qui s'affiche dans le message d'erreur ?

    A+
    Jérôme
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  5. #5
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 164
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 164
    Par défaut
    Bonjour,
    Citation Envoyé par f5jcg_Lulu
    Je sais dans quelle procédure cela se passe
    Citation Envoyé par f5jcg_Lulu Voir le message
    Le problème est que je n'arrive pas à déterminer la ligne qui plante.
    Essaye en pas-à-pas, avec un point d'arrêt au début de la procédure concernée.

    Citation Envoyé par f5jcg_Lulu Voir le message
    Comme il n'y a aucun secret, je joins le PDF du code dans sa totalité. Il pourra servir pour d'autres réponses éventuelles.]
    Ennuyeux, ça, car si on veut faire un copier/coller d'un bout de code, il faut donc d'abord enregistrer le pdf puis récupérer par sélection le code qu'on veut voir de près, en espérant qu'il n'est pas sur deux pages, ce qui est parfois délicat pour la sélection.
    Le .pas serait directement exploitable.

  6. #6
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2019
    Messages : 219
    Par défaut
    Bonjour à tous,
    J'ai essayé un pas-à-pas. D'abord je n'ai pas le n° de ligne où se produit le problème, juste la fenêtre de débogage. Pour moi c'est un mélange d'hébreu et de sanscrit ! Je joins cette capture et le fichier .pas. La procédure TButtonClick est un copier-coller de la procédure correspondante sous Delphi, qui fonctionne parfaitement. Problème de compilateur ?
    Merci pour vos efforts.
    Cordialement

    umainunit.pas

    Nom : screenshot.jpg
Affichages : 207
Taille : 32,1 Ko

  7. #7
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 164
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 164
    Par défaut
    Citation Envoyé par f5jcg_Lulu Voir le message
    J'ai essayé un pas-à-pas. D'abord je n'ai pas le n° de ligne où se produit le problème, juste la fenêtre de débogage.
    et pourtant :
    Citation Envoyé par Jipété Voir le message
    Essaye en pas-à-pas, avec un point d'arrêt au début de la procédure concernée.
    J'ai écrit ça car tu as dit dans ton premier post que tu connaissais la procédure concernée -- sinon, je me serais abstenu.

    Pour mettre le point d'arrêt, tu te places au tout début de la procédure concernée, tu cliques et tu fais F5, la ligne passe en rouge.
    Puis tu lances le prog avec F9, normalement il va s'arrêter sur cette ligne et là tu avances avec F8.

    Citation Envoyé par f5jcg_Lulu Voir le message
    Pour moi c'est un mélange d'hébreu et de sanscrit !
    Pour moi aussi, et pour beaucoup d'entre nous, si ça peut te rassurer.

    Hé oui, quand on soulève le capot, on tombe sur des trucs horribles et incompréhensibles, c'est la vie…

  8. #8
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2019
    Messages : 219
    Par défaut
    Alors, après F5, F9, F8, résultat : ça bloque à la ligne ExportToAdif etc... de la procédure ATButtonClick. Si je mets cette ligne en commentaire, évidemment le traitement ne se fait pas mais il n'y a plus de blocage. Ce qui voudrait dire (selon moi, bien sûr !) que le problème se situerais dans la procédure ExportToAdif.
    Donc F5 sur la procédure ExportToAdif, F9, F8. Et là ça bloque sur la 19e ligne "HeadTable := HeadTable + DBGrid1.Columns[I].Field.Value;" Serait-ce un problème avec Columns[I].Field.Value. Je sais, pour être allé sur des forums, que cette forme est dépréciée, mais je n'en sais pas plus.
    Cordialement

  9. #9
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 945
    Billets dans le blog
    6
    Par défaut
    Bonjour,
    Entourer cet accès d'un try except permettrait pê de déboguer.
    Ou tester si nul, comme le suggérait jurassic pork.
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  10. #10
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2019
    Messages : 219
    Par défaut
    J'ai toujours le même message d'erreur. Je vais laisser décanter quelques jours, essayer d'autres solutions et peut-être tenter le même code avec CodeTyphon que j'ai également installé. Il n'y a pas de raison pour que l'erreur ne se reproduise pas.
    Vous avez assez donné de votre temps, je vous en remercie. Je reviendrai dans quelques jours. Je mets tout de même en résolu.
    Cordialement et merci encore.

  11. #11
    Expert confirmé
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    11 164
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 11 164
    Par défaut
    Bonsoir,

    Citation Envoyé par f5jcg_Lulu Voir le message
    Je mets tout de même en résolu.
    Alors que ce n'est pas résolu ?


    Imagine quelqu'un faisant des recherches (comme nous tous) pour le même problème que toi dans 6 mois ou 2 ans ou plus, et qui voit , va se dire Chouette ! et paf, , non, il n'y a rien de résolu
    Alors reclique sur le bouton pour enlever le tag, et tu recliqueras quand ça sera vraiment résolu, merci pour nous tous.

    Oui je sais, il manque, ici comme dans tous les autres forums, les tags Clôturé, Abandonné, En suspens et plein d'autres, ah !, la vie est mal faite,

  12. #12
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2019
    Messages : 219
    Par défaut
    Et pan sur le bec... Merci et à bientôt, je viendrai d'un pas résolu !

  13. #13
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 945
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 945
    Billets dans le blog
    6
    Par défaut
    Que donne le remplacement par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if VarIsNull(DBGrid1.Columns[I].Field) then  
      HeadTable := HeadTable + '' // ou 'NULL' ou ' '
    else
      HeadTable := HeadTable + DBGrid1.Columns[I].Field.Value;
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  14. #14
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2019
    Messages : 219
    Par défaut
    Tout d'abord je suis obligé d'écrire Field.Value après le if et j'ai ensuite toujours le message à la même ligne, après le Else. C'est rageant... Et comme il fallait s'y attendre, même erreur avec CodeTyphon.

  15. #15
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 253
    Par défaut
    hello,
    tu peux aussi essayer au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HeadTable := HeadTable + DBGrid1.Columns[I].Field.Value;
    mettre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    HeadTable := HeadTable + DBGrid1.Columns[I].Field.AsString;
    sinon de quel type de champ est la colonne qui plante ?

    Ami calmant, J.P

  16. #16
    Membre confirmé
    Homme Profil pro
    Retraité
    Inscrit en
    Janvier 2019
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Janvier 2019
    Messages : 219
    Par défaut
    Bonjour à tous,
    Bingo Jurassic Pork, c'est la solution de remplacer Value par AsString. Tout fonctionne et j'obtiens mon fichier conforme au format ADIF. Je vais pouvoir avancer maintenant.
    Merci Jurassic et merci à tous. Je peux mettre en résolu cette fois
    Bonne journée
    Cordialement

Discussions similaires

  1. Erreur d'exécution incompatibilité de type erreur 13
    Par chilo27390 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/04/2018, 11h00
  2. [DBTREEVIEW] Invalid variant type conversion
    Par freud dans le forum Bases de données
    Réponses: 2
    Dernier message: 04/10/2017, 16h09
  3. Invalid variant type conversion
    Par Sephiroth Lune dans le forum Langage
    Réponses: 4
    Dernier message: 29/06/2011, 16h46
  4. invalid variant type convertion
    Par rec82 dans le forum Bases de données
    Réponses: 6
    Dernier message: 24/12/2008, 15h26
  5. Erreur d'exécution de type java.lang.NoClassDefFoundError
    Par lelorf1983 dans le forum JDeveloper
    Réponses: 3
    Dernier message: 01/06/2007, 16h20

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