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 Java Discussion :

Cast et extends


Sujet :

Langage Java

  1. #1
    Membre éprouvé Avatar de BlackWood
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Par défaut Cast et extends
    Bonjour,

    Alors j'ai souci avec les cast.
    C'est pas trop compliqué à comprendre mais à expliquer, c'est autre chose...
    Voici donc un exemple, qui sera plus parlant :

    - J'ai une classe de base, MyClass, qui définit des méthodes de base pour un objet quelconque.
    - Une autre classe MyClassExtended extends MyClass est définie pour y ajouter d'autre méthodes, qui seront utilisées pour une application bien précise.
    - J'ai aussi une classe "outil" MyClassTools qui permet, par exemple, de gérer des tableau de MyClass, etc.
    Dans cette classe justement, il existe une méthode retournant un tableau de MyClass, qu'on appelera simplement myMethod(). Mon problème est le suivant :
    J'utilise un tableau de MyClassExtended.
    Si je veux utiliser myMethod() pour ce tableau, comment doit-je m'y prendre ?
    J'ai essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MyClassExtended []tab = (MyClass) myMethod();
    et forcément, ça ne marche pas.

    En fait je voudrai surtout que myMethod() retourne n'importe quelle classe extends MyClass, si vous voyez ce que je veux dire. Un peu comme ArrayList<? extends MyClass>, mais en tableau...

    Note : dans myMethod(), j'utilise bien sûr qu'uniquement les méthodes de MyClass...

    J'espère m'avoir fais comprendre.
    Merci !

  2. #2
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Bah, utilise le type MyClass[], tu pourras y mettre des objets de type MyClassExtended...

  3. #3
    Membre éprouvé Avatar de BlackWood
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Par défaut
    C'est bien là, le hic.
    myMethod() retourne MyClass[],
    A la compilation, c'est ok,
    A l'exécution, j'ai un ClassCastException...

    ???

    Edit : Autant pour moi. Je viens de piger ce que tu voulais dire. En fait, t'as tout a fait raison. Trop de Java fait s'embrouiller... Pfff... "Mais c'est bien sûr ! Où avais-je la tête".

    Repos pour moi.
    Merci !

  4. #4
    Membre éprouvé Avatar de BlackWood
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Par défaut
    Par contre, tant que j'y suis :
    Y a t-il d'autres possibilités que celle-ci ?
    Je veux dire, y a t-il un moyen d'éviter le cast à chaque fois que je veux accéder à ma MyClassExtended ?

    J'ai par exemple un souci pour le parcours du tableau :
    Avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MyClass[] tab = [tableau de MyClassExtended];
    for(MyClass c : tab)
    c ne peut pas être casté à MyClassExtended,
    et avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MyClass[] tab = [tableau de MyClassExtended];
    for(MyClassExtended c : (MyClassExtended[]) tab)
    de même, j'ai toujours un ClassCastException.

  5. #5
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par BlackWood
    Par contre, tant que j'y suis :
    Y a t-il d'autres possibilités que celle-ci ?
    Je veux dire, y a t-il un moyen d'éviter le cast à chaque fois que je veux accéder à ma MyClassExtended ?

    J'ai par exemple un souci pour le parcours du tableau :
    Avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MyClass[] tab = [tableau de MyClassExtended];
    for(MyClass c : tab)
    c ne peut pas être casté à MyClassExtended,
    et avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MyClass[] tab = [tableau de MyClassExtended];
    for(MyClassExtended c : (MyClassExtended[]) tab)
    de même, j'ai toujours un ClassCastException.
    Non, mais tu peux faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(MyClass mc : tab) {
        //Ne marche que si le tableau ne contient que des MyClassExtended
        MyClassExtended mce = (MyClassExtended) mc;
        ...
    }
    Quand tu réfléchis, c normal...
    Mais si tu veux absolument ne mettre que des MyClassExtended dans ton tableau, pourquoi tu n'utiliserais pas qu'un tableau de MyClassExtended (sans te préoccuper de MyClass)?

  6. #6
    Membre éprouvé Avatar de BlackWood
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Par défaut
    Citation Envoyé par ®om
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for(MyClass mc : tab) {
        //Ne marche que si le tableau ne contient que des MyClassExtended
        MyClassExtended mce = (MyClassExtended) mc;
        ...
    }
    Non justement ! Ceci lance une ClassCastException ! C'est d'ailleurs étonnant, mais peut-être est-ce ce nouveau for(...) et qu'avec un bon vieux for(int i=0;i....), ça marchera. Je vais essayer.

    Citation Envoyé par ®om
    Mais si tu veux absolument ne mettre que des MyClassExtended dans ton tableau, pourquoi tu n'utiliserais pas qu'un tableau de MyClassExtended (sans te préoccuper de MyClass)?
    On en reviendrai à mon premier problème !

    Note : Mon tableau ne contient bien QUE des MyClassExtended.

  7. #7
    Membre éprouvé Avatar de BlackWood
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Par défaut
    (PARENTHESE)
    Je dois y aller,
    Un grand merci pour tout, déjà, et je suis là demain pour reprendre ce problème.
    Bonne soirée.

  8. #8
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par BlackWood
    Non justement ! Ceci lance une ClassCastException ! C'est d'ailleurs étonnant, mais peut-être est-ce ce nouveau for(...) et qu'avec un bon vieux for(int i=0;i....), ça marchera. Je vais essayer.


    On en reviendrai à mon premier problème !

    Note : Mon tableau ne contient bien QUE des MyClassExtended.
    Si tab est de type MyClass, et qu'il ne contient que des MyClassExtended, ça n'est pas possible que ça lance une ClassCastException...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    MyClass[] tab = { new MyClassExtended(1), new MyClassExtended(2) };
    for(MyClass mc : tab) {
        assert mc instanceof MyClassExtended;
        MyClassExtended mce = (MyClassExtended) mc;
    }

  9. #9
    Membre éprouvé Avatar de BlackWood
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Par défaut
    Bon, j'ai trouvé à moitié ce qui clochait. Ce nouveau for y est bien pour quelque chose, mais pour l'initialisation.
    En fait, ceci n'est déjà pas correct
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for(MyClass mc : tab)
    [INDENTmc = new MyClassExtended();][/INDENT]
    Ce que tu dis est tout à fait juste, mais j'ai toujours le même problème : impossible de caster ma variable mais je dois avoir une erreur quelque part. Je vais continuer à chercher, je suis en meilleur forme qu'hier...

  10. #10
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par BlackWood
    Bon, j'ai trouvé à moitié ce qui clochait. Ce nouveau for y est bien pour quelque chose, mais pour l'initialisation.
    En fait, ceci n'est déjà pas correct
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for(MyClass mc : tab)
    [INDENTmc = new MyClassExtended();][/INDENT]
    Ce que tu dis est tout à fait juste, mais j'ai toujours le même problème : impossible de caster ma variable mais je dois avoir une erreur quelque part. Je vais continuer à chercher, je suis en meilleur forme qu'hier...
    Ca n'est pas comme ça qu'on cast une variable, mais comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(MyClass mc : tab) {
        MyExtendedClass mce = (MyExtendedClass) mc;
        ...
    }
    Ce que tu essaies de faire, ça n'est pas du tout un cast...
    Et en plus, si MyClassExtended étend MyClass, ça ne lance pas d'exception...
    C'est quelle ligne qui te lance une exception...

  11. #11
    Membre éprouvé Avatar de BlackWood
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Par défaut
    Arf ! On s'est pas compris.

    BlackWood a écrit :
    Bon, j'ai trouvé à moitié ce qui clochait. Ce nouveau for y est bien pour quelque chose, mais pour l'initialisation.

    Je sais ce qu'est un cast, bien sûr. Mais en testant, j'ai trouvé déjà un autre problème (rien à voir avec les casts en fait) que j'ai signalé, voilà ! Je ne savais pas qu'il était impossible d'initialiser une variable dans un for each, c'est tout...

    Bref. Bon, par contre, j'ai bien avancé dans le problème, et effectivement, hier j'étais crevé. Voilà le truc :
    Tout venait de ma Class MyClassTool et plus particulièrement de myMethod (qui, je le rappelle retournait un tableau de MyClass). Le truc en fait; c'est que j'utilisais un MyClass[] initialisé dans le constructeur de MyClassTool, et qui était modifié à chaque fois dans myMethod (sans être recréé ! C'est pour cette raison que cette erreur était plutot transparente).
    En gros, j'avais beau instancier mon tableau de MyClassExtended, myMethod me retournait de toute façon un tableau de MyClass !

    Je suis donc obligé de passer ce tableau en paramètre de myMethod() qui retourne à présent void. Cela me donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public void myMethod(MyClass[] tab);
    Et là, ça marche.
    Le dernier problème est que j'aurai aimé justement ne pas à avoir à le passer en paramètre. Du genre :
    tab = (MyClassExtended) myMethod();
    Et ce, quelque soit le tableau d'Object extends MyClass. On en revient à ma toute première question. Je ne pense pas que ce soit possible, en fait...

    En tout cas, merci pour ton soutien !

  12. #12
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par BlackWood
    Arf ! On s'est pas compris.

    BlackWood a écrit :
    Bon, j'ai trouvé à moitié ce qui clochait. Ce nouveau for y est bien pour quelque chose, mais pour l'initialisation.

    Je sais ce qu'est un cast, bien sûr. Mais en testant, j'ai trouvé déjà un autre problème (rien à voir avec les casts en fait) que j'ai signalé, voilà ! Je ne savais pas qu'il était impossible d'initialiser une variable dans un for each, c'est tout...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Number[] tab = { 5, 2 };
    for(Number n : tab)
        n = new Integer(5);
    Ceci marche très bien (enfin, ça ne lève pas d'exception).

    Sinon, pour ton problème, je pense que c'est un problème de conception...

    Peux-tu donner les cas concrets?

  13. #13
    Membre éprouvé Avatar de BlackWood
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Par défaut
    Bah ceci ne marche pas :
    (J'ai réellement testé sur des MyClass tellement j'étais désespéré )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    public class MyClass {
     
    	private int att1;
    	private int att2;
     
    	public MyClass() {}
    	public MyClass(int att1, int att2) {
    		this.att1 = att1;
    		this.att2 = att2;
    	}
     
    	public int getAtt1()		{ return att1;}
    	public void setAtt1(int att1)	{ this.att1 = att1;}
     
    	public int getAtt2()		{ return att2;}
    	public void setAtt2(int att2)	{ this.att2 = att2;}
    }
     
    public class MyClassExtended extends MyClass {
     
    	private int att3;
     
    	public MyClassExtended() {}
    	public MyClassExtended(int att1, int att2) {
    		super(att1, att2);
    		this.att3 = -1;
    	}
    	public MyClassExtended(int att1, int att2, int att3) {
    		super(att1, att2);
    		this.att3 = att3;
    	}
     
    	public int getAtt3()		{ return att3;}
    	public void setAtt3(int att3)	{ this.att3 = att3;}
    }
     
    public class TestMyClass {
    	public static void main(String[] args) {
    		MyClass[] tab = new MyClass[2];
     
    		for (MyClass mc : tab)
    			mc = new MyClassExtended(1, 2, 3);
     
    // (Ceci		tab[0] = new MyClassExtended(1, 2, 3);
    // est correct)	tab[1] = new MyClassExtended(4, 5, 6);
     
    		for (MyClass mc : tab) {
    			assert mc instanceof MyClassExtended;
    			MyClassExtended mce = (MyClassExtended) mc;
    			System.out.println("att3 = " + mce.getAtt3());
    		}
    	}
    }
    J'ai volontairement simplifier la chose à des MyClass, etc. car c'est un bordel monstre ! Ce serait plus compliquer d'expliquer mon cas précis, je pense... Je vais tout de même essayer d'être plus concret :
    - MyClass est une classe "générique" contenant quelques méthodes de base, et prête à être étendue. Une sorte d'Abstract class mais qui ne l'est pas.
    - Je souhaiterai que ma classe-outil MyClassTool contienne une méthode (static, même) qui renvoie un tableau "formatté" de MyClass, selon ses paramètres et grâce aux différentes méthodes de MyClass.
    - Le tableau retourné pourrait être casté ou quoi, bref, que n'importe quel tableau de * extends MyClass puisse utiliser cette méthode pour être "formatté".

    Mais plus je m'explique (plus je réfléchis ) et plus j'ai l'impression que ce ne soit pas possible, en fait...

  14. #14
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Le code que tu as donné, il fonctionne...
    Avec ce que tu as mis en commentaires, bien sûr il faut mettre ces lignes de codes, pas les laisser en commentaires, car sinon tu as un NullPointerException, mais rien à voir avec un ClassCastException...

    Faut regarder la stack trace!!!

    Sinon au niveau de la conception, c'est pas ça, car ton tableau de MyClass doit forcément contenir que des MyClassExtended (d'ailleurs en anglais, MyExtendedClass ), ce qui n'est pas très bon...

  15. #15
    Membre éprouvé Avatar de BlackWood
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Par défaut
    Le code que tu as donné, il fonctionne...
    Avec ce que tu as mis en commentaires, bien sûr il faut mettre ces lignes de codes, pas les laisser en commentaires, car sinon tu as un NullPointerException, mais rien à voir avec un ClassCastException
    Je lis les stackTrace.
    J'ai oublié de (re)mentionner qu'il me renvoie effectivement une NullPointerException quand j'ai retappé TOUT le message précédent (plus complet à l'origine) à cause d'un bug IExplorer au moment de cliquer sur "Envoyer la réponse"
    Encore une fois, oui, je sais, ça n'a rien à voir avec les cast...
    C'est juste qu'on ne peut pas INITIALISER la variable d'un for each...

    Enfin voilà. Merci pour tout. Bien qu'on ait eu parfois du mal à se comprendre, tu m'as bien aidé.

    Ca devrait aller pour la suite, tant pis pour ma méthode...

  16. #16
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par BlackWood
    C'est juste qu'on ne peut pas INITIALISER la variable d'un for each...
    Excuse-moi, mais je ne comprends toujours pas ce que tu veux dire par cette phrase...

  17. #17
    Membre éprouvé Avatar de BlackWood
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Par défaut
    Ben comment dire...
    On a un tableau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MyClass []tab = new MyClass[10];
    Maintenant, il faut créer (initialiser) chaque objet du tableau, t'es d'accord avec moi ?
    Habituellement, on fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for(int i=0;i<tab.length;i++)
    <div style="margin-left:40px">tab[i] = new MyClass();</div>
    Ceci est correct, et il y d'autres façons de le faire, toutes aussi correctes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    tab[0] = new MyClass();
    tab[1] = new MyClass();
    (...)
    ou encore directement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    MyClass []tab = { new MyClass(), new MyClass(), ...}
    On pourrait donc s'imaginer qu'avec le nouveau for de Java 1.5, ce soit encore plus facile, on pourrait faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for(MyClass mc : tab)
    <div style="margin-left:40px">mc = new MyClass();</div>
    Ca parait super pratique, mais non. Cela lance une NullPointerException. Pourquoi ? Surement, pasque mc est en lecture uniquement, et placée en quelque sorte en mémoire "tampon", le temps de la boucle. Je n'en sais rien. Ce qui est curieux, c'est que l'on peut effectuer toute sorte d'opération sur ce mc, mais pas le créer...

    Tu vois ce que je veux dire ?

  18. #18
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Citation Envoyé par BlackWood
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    for(MyClass mc : tab)
    <div style="margin-left:40px">mc = new MyClass();</div>
    Ca parait super pratique, mais non. Cela lance une NullPointerException. Pourquoi ? Surement, pasque mc est en lecture uniquement, et placée en quelque sorte en mémoire "tampon", le temps de la boucle. Je n'en sais rien. Ce qui est curieux, c'est que l'on peut effectuer toute sorte d'opération sur ce mc, mais pas le créer...

    Tu vois ce que je veux dire ?
    Ah mais oui, mais ça c'est normal...
    mc n'est qu'une copie de la référence de tab[i], donc tu peux faire tout ce que tu veux dessus, ça ne modifieras pas la référence tab[i]. En revanche, si tu appliques une méthode setMachin(...) par exemple, ça modifiera bien l'"intérieur" de l'objet...

    La boucle for each n'est qu'un itérateur...

  19. #19
    Membre éprouvé Avatar de BlackWood
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 167
    Par défaut
    OK !
    Ha ben merci pour tes lumières. C'est bien ce qui me semblait en fait...

    a+

  20. #20
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    C'est exactement comme si tu faisais:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    mc = tab[0];
    mc = new MyExtendedClass();
    Forcément, tab[0] ne vaut pas le nouvel objet de type MyExtendedClass...

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

Discussions similaires

  1. Probleme CAST
    Par cedric31 dans le forum SQL
    Réponses: 2
    Dernier message: 16/02/2004, 11h46
  2. Problème lors du EXTEND d'un tableau
    Par banana31 dans le forum Oracle
    Réponses: 14
    Dernier message: 10/02/2004, 11h58
  3. CAST ou autre ?
    Par 74160 dans le forum Requêtes
    Réponses: 2
    Dernier message: 10/07/2003, 16h00
  4. CAST DATETIME ----> SMALLDATETIME
    Par Guizz dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 26/06/2003, 13h07
  5. traduction en delphi "reinterpreted cast"
    Par Chupakabra dans le forum Langage
    Réponses: 3
    Dernier message: 13/02/2003, 16h49

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