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 :

Conversion de type


Sujet :

Langage Delphi

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 488
    Points : 397
    Points
    397
    Par défaut Conversion de type
    Je ne maitrise pas encore trop delphi, alors je soumets à votre sagacité un problème qui me semble simple, mais pour lquel je n'arrive pas à trouver de solution.

    J'ai déclaré un type

    TArrayOfMonType = array of MonType;

    et j'ai des variables de type array of MonType que je voudrais passer à une fonction qui prend en argument une variable de type TArrayOfMonType. Est ce possible sans faire une bête, mais couteuse, copie ?

  2. #2
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Type 
         TArrayOfMonType = Array of MonType;
     
    Var 
        MonTab = Array of MonType;
    Si tu as ecrit qque chose comme ca c'est pas tres logique. Remplace plutot par ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Var
       MonTab := TArrayOfMonType
    Si tu as des problemes de portabilité d'une unite a l'autre, pense a creer une unite a part (MesTypes.pas) qui contient toutes les declaration des types (et uniquement ca) et tu insert cette unite dans chaques unite qui utilise un de ces types.

    Sinon tu as bien ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Maprocedure(TArrayofMonType(MonTab));
    Mais bon .... c'est plus propre de redefinir lestypes de tes variables.

    Ce qui m'etonnes c'est que le passage d'un "Array of MonType" en parametre ne marche pas directement .... (ou alors j'ai mal compris la question)
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 488
    Points : 397
    Points
    397
    Par défaut
    Merci pour la résponse, je crois que tu as bien compris la question. Le problème c'est que Delphi refuse même les conversions explicites comme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Maprocedure(TArrayofMonType(MonTab));
     
    ou
     
    Maprocedure(MonTab as TArrayofMonType);
    En fait toute l'application a été codée en utilisant des "array of MonType" mais pour une fonction particulière j'ai besoin de retourner une variable de ce type, ce que delphi refuse, j'ai donc du déclarer le type TArrayOfMonType.

    La solution propre serait bien sûr d'utiliser des TArrayOfMonType partout. Le problème c'est qu'on est plusieurs sur le projet et que je ne peux modifier unilatéralement des unités sur lesquels d'autres travaillent.

  4. #4
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 49
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Points : 4 846
    Points
    4 846
    Par défaut
    Il me semble que lorsque l'on écrit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Var
      A, B : Array Of MyType ;
    Delphi reconnaît que les deux variables sont de même type.

    Par contre, écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Var
      A : Array Of MyType ;
      B : Array Of MyType ;
    implique que les deux variables sont de types différents et ne peuvent être assignées l'une à l'autre ou qu'il y a je ne sais plus quelle limitation sur leur usage...

    A vérifier, cependant => éplucher l'aide Delphi, chapitres "Dynamic array" et "Open array parameters" au minimum.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  5. #5
    Membre chevronné
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Points : 2 158
    Points
    2 158
    Par défaut
    Sinon ya ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Type
       TArrayOfMonType = Array Of MonType;
       PArrayofMonType = ^TArrayOfMonType;
    Un pointeur reste un pointeur .... quelque soit le type vers lequel il pointe ... (enfin je crois ... mais vu que j'etait pas au courrant des limitations des array of .. j'ai un doute ;pp)

    Comme ca ca devrais regler certains pbs ... mais faudra passer l'adresse de ta var "Array of MonType" (avec @) et non directement la variable ..... puis utiliser tous les trucs du genre "^" ....
    Bref Gestion de pointeurs classique.
    On passe du temps a vous repondre, alors soyez sympas, passez du temps ..... a vous relire !
    --
    Pourquoi tant de haine pour cette pauvre aide Delphi ????
    Aiiimezzz laaaaa .... Si-Non-Cham-Pi-Gnon !!!
    --
    Pour plus de Renseignements : Venez me rejoindre sur Msn .... Promis je mords pas

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    488
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 488
    Points : 397
    Points
    397
    Par défaut
    Bon j'ai fini par récupérer toutes les parties de code dont j'avais besoin et mis des TArrayOfMonType partout.

    Merci de votre aide. 8)

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

Discussions similaires

  1. Conversion string -> type procedure
    Par ludovic tambour dans le forum Langage
    Réponses: 5
    Dernier message: 11/05/2005, 19h53
  2. [DATE][CONVERSION] du type numerique au type date
    Par hamed dans le forum MS SQL Server
    Réponses: 6
    Dernier message: 06/04/2005, 16h16
  3. Conversion de type
    Par poirier dans le forum ASP
    Réponses: 2
    Dernier message: 06/07/2004, 10h30
  4. [MYSQL] conversion de type sur import de script
    Par sebos63 dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 27/08/2003, 10h00
  5. Réponses: 2
    Dernier message: 05/06/2002, 12h29

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