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

Python Discussion :

Débutant - Appel de variable tableau/list dans différente instance [Python 3.X]


Sujet :

Python

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 14
    Points : 9
    Points
    9
    Par défaut Débutant - Appel de variable tableau/list dans différente instance
    Bonjour à tous,

    Je ne sais pas si je pose dans le bon forum, j'espère que ca ira.

    Je vous explique le contexte : j'ai eu en décembre un petit robot Adeept "Darkpaw" qui fonctionne très bien sur son programme d'origine. Après montage et un peu balade dans l'appartement, j'ai souhaitais ajouter quelques capteurs et voulais étudier d'autres marches (pas latéral, passage d'obstacles, escalier,...).

    Après lecture du code d'origine, j'ai tout refait les fonctions simples, allumage de projecteur, jeux de leds, récupération de valeur des capteurs (MPU6050, auquel j'ai ajouté, une boussole GY271, un capteur de niveau de batterie INA260, je vais aussi regarder pour des capteurs ultrason SR04 pour le positionnement).

    Si pour le moment tout a été "facile", j'ai quelques difficultés dans le programme de marche de mon robot. Au début, je faisais appel au programme d'origine mais pour créer des mouvements spécifiques, ce n'est pas adapté.

    Ma grosse difficulté est la gestion des instances et des variables locales pouvant être appelé à différent moment du code dont je n'ai pas compris les rouages dans python.

    Je vous met ci-dessous mon code maison. Dans l'idée, si le script est appelé directement, il initialise les servomoteurs, créer des variables d'état de chacun des servo, ouvre un menu en shell et exécute en fonction des paramètres utilisateurs.

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
     
    import Adafruit_PCA9685
    import time
    import threading #je ne sais pas encore si je vais m'en servir et comment ?
    import sys
    import RPi.GPIO as GPIO
    import socket
     
    def menuDemandeMouve(): #petit menu en shell pour tester le programme
      print ("1.Mouvement complet")
      print ("2.Mouvement détaillé d'une jambe")
      print ("3.Mouvement détaillé d'un servo")
      commandeA = input("Quel type de mouvement ?")
      if commandeA == "1" :
          print ("z.Avance")
          print ("s.Recul")
          print ("q.Pas Lateral Gauche")
          print ("d.Pas Lateral Droit")
          print ("a.Tourne sur la Gauche")
          print ("e.Tourne sur la Droite")
          print ("w.Pattes Haute")
          print ("x.Pattes Basse")
          print ("c.Donne la patte")
          commandeB = input("Quel mouvement ?")
          if self.mouveDemande == 1:
            zAvance()
          elif self.mouveDemande == 2:
            sRecul()
          elif self.mouveDemande == 3:
            qPasLateralGauche()
          elif self.mouveDemande == 4:
            dPasLateralDroit()
          elif self.mouveDemande == 5:
            aTourneGauche()
          elif self.mouveDemande == 6:
            eTourneDroite()
          elif self.mouveDemande == 7:
            wPatteHaute()
          elif self.mouveDemande == 8:
            xPatteBasse()
          elif self.mouveDemande == 9:
            cLevePatte()
          os.system('clear')
          menuDemandeMouve()
      elif commandeA == "2":
          print ("1.Jambe I")
          print ("2.Jambe II")
          print ("3.Jambe III")
          print ("4.Jambe IV")
          self.numJambe = int(input("Quel jambe choisi ?"))
          #rotation de la jambe avec affichage des infos
          os.system('clear')
          menuDemandeMouve()
      elif commandeA == "3":
          numServo = int(input ("Port du servo ? (de 0 à 11)"))
          servoPositObjectif = int(input ("Choix du pas ? (de 100 à 560)"))
          print (servoCtrl.servoPositActu[numServo])
          vitesseServo = vitesseServo
          mouveServo(numServo,servoPositActu, servoPositObjectif, vitesseServo)
          servoPositActu[numServo] = servoPositObjectif
          #pwm.set_pwm(numPort,0,numPas) 
          os.system('clear')
          menuDemandeMouve()
     
     
    class servoCtrl():
      #initialisation des servos
      def initAllServo():
        pwm = Adafruit_PCA9685.PCA9685()
        pwm.set_pwm_freq(50)  #frequenceServo
        nombreServo = 11 #en comptant à partir de 0
        servoPort = [0,1,2,3,4,5,6,7,8,9,10,11]
        servoDirection = [1,-1,-1,-1,1,1,-1,1,1,1,-1,-1]
        servoPositIni = [312,305,312,312,287,260,325,281,301,305,195,340]
        servoPositActu = [312,305,312,312,287,260,325,281,301,305,195,340]
        servoMinRange = [100,100,100,100,100,100,100,100,100,100,100,100]
        servoMaxRange = [560,560,560,560,560,560,560,560,560,560,560,560]
        vitesseServo = 100
        for i in range(0, nombreServo):
          pwm.set_pwm(i, 0, servoPositIni[i]) #(numéro du port, déviation mais non utilisé avec ces servos, position voulu)
     
     
      #cette méthode permet de définir/identifier les 3 servos de chacunes des jambes
      def servoJambe(self, numJambe):
        j=(numJambe-1)*3
        self.servoA = self.servoPort[j]   #servoA pour gérer l'avant/arrière des pattes
        self.servoB = self.servoPort[j+1] #servoB pour gérer la hauteur des pattes
        self.servoC = self.servoPort[j+2] #servoC pour gérer l'écartement des pattes
        return self.servoA, self.servoB, self.servoC ;
     
     
      #cette méthode permet de calculer le pas attendu sur un servo en fonction de son sens de rotation/montage sur la jambe
      def directionServo(self, numServo, servoPositObjectif):  #numServo = n°du servo = port de connexion
        if servoDirection [numServo] == -1 :
          self.servoPositObjectif = 560-(servoPositObjectif-100)
        else:
          self.servoPositObjectif = self.servoPositObjectif
        return servoPositObjectif
     
     
      #cette méthode "élémentaire" créer la rotation d'un servo en fonction : de son port, de sa position actuelle, la position à atteindre et à une vitesse demander par défaut
      #qui est instancié autant de fois qu'il y a de servo à mettre en mouvement 
      def mouveServo(self, numServo, servoPositActu, servoPositObjectif, vitesseServo):
        for k in range (servoPositActu, servoPositObjectif,vitesseServo):
          pwm.set_pwm(numServo, 0, 2) #le servo tourne par pas de 2 mais puis fait une pause de 1/100 de seconde
          time.sleep(1/vitesseServo)
        self.servoPositActu = self.servoPositObjectif
        return servoPositActu
     
     
      #méthode principale qui appel les autres
      #qui est à instancier 4 fois lors d'un déplacement pour les 4 jambes sauf cas exceptionnel (cas donne une patte)
      def mouveJambe (self, numJambe):
        servoJambe(self,numJambe)                                      #donne les numéros des servos
     
        self.numServo = self.servoA                                    #numéro du servo à faire bouger
        self.servoPositActu = self.servoPositActu                      #position du servo issu du dernier mouvement ou de l'initialisation 
        #self.servoPositObjectif                                       #donne la position à obtenir pour un servo, doit être donnée par l'instance maitre
        #self.mouveServoA[i]                                           #qu'est ce que i et quel et sa valeur ?
        self.directionServo(self.numServo, self.servPositObjectif)     #vérifie la position à obtenir en fonction du sens de montage du servo
        self.vitesseServo = self.vitesseServo                          #définit la vitesse de déplacement
        mouveServo(self.numServo, self.servoPositActu, self.servoPositObjectif, self.vitesseServo) #lance le mouvement
     
        self.numServo = self.servoB                                    #numéro du servo à faire bouger
        self.servoPositActu = self.servoPositActu                      #position du servo issu du dernier mouvement ou de l'initialisation 
        #self.servoPositObjectif                                       #donne la position à obtenir pour un servo, doit être donnée par l'instance maitre
        #self.mouveServoA[i]                                           #qu'est ce que i et quel et sa valeur ?
        self.directionServo(self.numServo, self.servPositObjectif)     #vérifie la position à obtenir en fonction du sens de montage du servo
        self.vitesseServo = self.vitesseServo                          #définit la vitesse de déplacement
        mouveServo(self.numServo, self.servoPositActu, self.servoPositObjectif, self.vitesseServo) #lance le mouvement
     
        self.numServo = self.servoC                                    #numéro du servo à faire bouger
        self.servoPositActu = self.servoPositActu                      #position du servo issu du dernier mouvement ou de l'initialisation 
        #self.servoPositObjectif                                       #donne la position à obtenir pour un servo, doit être donnée par l'instance maitre
        #self.mouveServoA[i]                                           #qu'est ce que i et quel et sa valeur ?
        self.directionServo(self.numServo, self.servPositObjectif)     #vérifie la position à obtenir en fonction du sens de montage du servo
        self.vitesseServo = self.vitesseServo                          #définit la vitesse de déplacement
        mouveServo(self.numServo, self.servoPositActu, self.servoPositObjectif, self.vitesseServo) #lance le mouvement
     
     
      def positObjectif (self):             #Etat de jambe
              #pas des servos
        positABC1=300,560,300          #1 = jambe à mi chemin, en position haute, 
        positABC2=560,300,300          #2 = jambe à mi hauteur, posé au sol sur l'avant
        positABC3=300,300,300          #3 = jambe à mi hauteur, posé au sol sur le milieu/à l'axe de la jambe
        positABC4=100,300,300          #4 = jambe à mi hauteur, posé au sol à l'arrière
        positABC5=300,100,300          #5 = jambe basse, posé au sol sur le milieu/à l'axe de la jambe
        positABC6=300,560,300          #6 = jambe haute, posé au sol sur le milieu/à l'axe de la jambe
        positABC7=560,560,100          #7 = jambe haute en l'aire, sur l'avant
        positABC8=300,300,400          #8 = jambe proche
        positABC9=300,300,100          #9 = jambe éloigné
        return positABC1,positABC2,positABC3,positABC4,positABC5,positABC6,positABC7,positABC8,positABC9
     
     
    #  def zAvance()
    #    #va chercher les valeurs objectives
    #    positABC1,positABC2,positABC3,positABC4 = positObjectif(positABC1,positABC2,positABC3,positABC4)
    #    #lance le mouvement sur chaque jambe
    #    mouveJambe(self,1,positABC1)
    #    mouveJambe(self,2,positABC2)
    #    mouveJambe(self,3,positABC3)
    #    mouveJambe(self,4,positABC4)
    #      mouveJambe1 = 1,2,3,4 
    #      mouveJambe2 = 2,3,4,1 
    #      mouveJambe3 = 3,4,1,2 
    #      mouveJambe4 = 4,1,2,3 
     
     
    if __name__ == "__main__":
      servoCtrl.initAllServo()
      while True:
        menuDemandeMouve()
    else:
      print ("Initialisation subServoMouve.py"+"\t\t\t[Ok]")
    Aujourd'hui, j’essaie d'utiliser le script avec sa fonction "élémentaire" qui fait bouger uniquement un servo et donc ainsi :
    - initialisation et lancement du menu,
    - je choisi le programme 3, (qui sur un module simple de test devait faire bouger un servo d'un point A à un point B)
    - j'indique le numéro du servo ou son port,
    - j'indique la position attendu,
    - et le servo doit bouger d'autant.
    Pour tester, j'ai ajouter dans le menu un print pour avoir l'affichage de la position initiale du servo. Ici il y a arrêt du script car la variable n'est pas connu dans cette instance, pourtant elle a été initialisé mais je n'arrive pas a l'appeler.

    Merci d'avance pour votre aide.

    Bonne fin de journée,

    Ritchy76

  2. #2
    jmv
    jmv est déconnecté
    Membre confirmé Avatar de jmv
    Profil pro
    Enseignant
    Inscrit en
    Mai 2004
    Messages
    395
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Mai 2004
    Messages : 395
    Points : 603
    Points
    603
    Par défaut
    Bonjour,

    Personne n'a envie de se farcir tes 174 lignes de codes. Pourrais-tu préciser de quelle variable tu parles ? dans quelle fonction ? Quelle ligne où survient l'erreur ?

    a+
    jmv

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Effectivement, je ne savais pas comment m'y prendre, désolé.

    En ligne 75, la variable servoPositActu est initialisé (créer dans une méthode de la classe "servoCtrl")

    Mais quand elle est appelé en ligne 57, le script s’arrête car variable non définie.

    Merci d'avance,

    Ritchy76

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 273
    Points : 36 757
    Points
    36 757
    Par défaut
    Salut,

    self.machin n'est pas une variable mais l'attribut "machin" de l'objet "self"... qui par convention ne doit être utilisé que dans une méthode de la classe qui définit cet objet.

    Vous faites ce qu'on appelle de la programmation héroïque: du quoi qu'il en coute pourvu que çà marche tant que vous ne vous preniez pas trop le chou à comprendre pourquoi (je dis çà parce que si vous aviez ouvert un tuto vous n'auriez pas écrit cela).

    Ici, nous ne sommes pas des héros juste des tacherons qui galèrent à apprendre à programmer correctement (avec Python) en essayant de comprendre pourquoi faire comme çà plutôt qu'autrement...

    Ce qui suppose avoir un peu potassé les bases en ouvrant un tuto. et un peu de pratique pour réaliser qu'exposer un problème suppose pouvoir le reproduire, histoire de pouvoir tester les solutions qu'on pourrait vous proposer.

    Poster un code de 200 lignes alors que pas grand monde n'aura le matériel qui va bien pour le faire tourner, c'est juste penser que coder, c'est magique et que des bons programmeurs pourront vous dépatouiller en moins de 2...

    Hélas, si vous aviez ouvert un tuto. vous sauriez que c'est plus compliqué que çà.

    Ceci dit bon courage!

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Merci pour vos conseils...

    Vous juger sans savoir, je n'ai résolu pas mon problème certes mais je n'ai jamais dit que je n'avais pas potassé avant de poster. Je me doutais de vos réponses et cela fait 1 mois que j'hésitais à poster de peur de me ridiculiser car je n'ai compris la gestion des instances sous python ! Merci, grâce à vous cela confirme mon ignorance et mon ridicule, et bien entendu votre supériorité !

    Peut être auriez vous pu conseiller un lien d'explication plus clair que ceux que j'ai lu.

    Je suis le site developpez.com depuis longtemps pour mes programmes en VBA (certes ce n'est que du vba) et ne poste jamais car je trouve en générale les réponses à mes questions grâces aux postes de novices qui osent poser des questions.

    Pour python, j'ai lu aussi "python pour les nuls" la 1ere édition mais je n'ai pas compris la partie instance que j'ai eu beau relire.

    Bref, pour revenir au sujet,
    self.machin n'est pas une variable mais l'attribut "machin" de l'objet "self"... qui par convention ne doit être utilisé que dans une méthode de la classe qui définit cet objet.
    attribut d'un objet = "Les attributs sont des variables accessibles depuis toute méthode de la classe où elles sont définies. En python, les classes sont des types modifiables. Le corps d'une classe peut être vide, inclure des variables ou attributs, des fonctions ou méthodes."
    Définition en cherchant "python définition attribut" sous google

    La partie du code étudié n'utilise pas self car j'ai peur de mal l'employer. Je vais tous les supprimer et tester, il n'y aura pas d’ambiguïté.

    J'ai aussi essayé d'intégrer mon menu dans la classe mais rien n'y fait, même erreur. Pourtant c'était bien dans le même objet. Je ferais une version light et corriger de ses propositions pour tester.

    Pouvez vous m'aider ou le forum developpez est trop professionnel pour aider un amateur "héroic" ? Et limite, ne me donnez pas la solution (car je n’apprendrais rien) mais guidez moi...

    Vous remerciant d'avance et bonne soirée à tous

    Ritchy76

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Au faite merci pour ta signature @wiztricks, je vais lire la FAQ et les différents cours et tuto pour voir si ca explique mes problèmes.

    Bonne soirée

  7. #7
    Membre émérite

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Points : 2 328
    Points
    2 328
    Par défaut
    Citation Envoyé par ritchy76 Voir le message
    La partie du code étudié n'utilise pas self car j'ai peur de mal l'employer. Je vais tous les supprimer et tester, il n'y aura pas d’ambiguïté.
    Bah justement c'est pour ca que vous n'obtenez pas le comportement souhaité !

    Testez, observez et comprenez ce petit code, c'est la racine de votre problème :
    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
    class Machin1():
      def set_truc(self,t):
         self.truc=t
     
      def print_truc(self):
         print(self.truc)
     
    class Machin2():
      def set_truc(self,t):
         #### Methode qui ne fait absolument rien puisque la seule variable définie est truc, et elle n'est n'y retournée, ni sauvegarder dans l'objet (pas de self)
         truc=t
     
      def print_truc(self):
         print(self.truc)
     
    m1=Machin1()
    m1.set_truc("toto")
    m1.print_truc() ### Fonctionne
    print(m1.truc)  ###Fonctionne, truc est bien un attribut de m1
     
     
    m2=Machin2()
    m2.set_truc("toto")  ### Ne produit pas d'erreur, car le code de set_truc est un code valide, mais ne fait juste absolument rien
    m2.print_truc() ### Produit une erreur car truc n'est pas un attribut de m2
    print(m2.truc)  ### Produit une erreur car truc n'est pas un attribut de m2
    NB : pour voir la liste de tout ce que contient un objet vous pouvez tout simplement faire
    , et là vous voyez le nom de toutes les méthodes et attributs. Il y a des trucs, vous allez vous demandez ce que c'est mais ça c'est pas grave. L'important c'est que si vous définissez qqch, et bien vous devez le voir là dedans.

    Faites print(dir(m1)) et print(dir(m2)), juste après la création de m1 et m2, et aussi juste après l'appel de set_truc, et observer que truc n'apparait pas dans l'objet m2.

  8. #8
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 677
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 677
    Points : 30 965
    Points
    30 965
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par ritchy76 Voir le message
    Pour python, j'ai lu aussi "python pour les nuls" la 1ere édition mais je n'ai pas compris la partie instance que j'ai eu beau relire.
    "instance" est juste un mot savant pour dire "variable de type objet". La POO fait la distinction entre "types de base" style int/short/float/strings, et "instances", éléments qui contiennent des objets.
    Si j'écris a=5 alors "a" est une variable de type "int", mais si j'écris b=toto() et que "toto" est une classe alors "b" est une variable de type "toto" ou plus simplement une "instance de toto". Pas plus compliqué que ça.

    Citation Envoyé par ritchy76 Voir le message
    La partie du code étudié n'utilise pas self car j'ai peur de mal l'employer. Je vais tous les supprimer et tester, il n'y aura pas d’ambiguïté.
    "self" (nom conventionnellement donné à la première variable des méthodes des classes) est une variable située dans une classe permettant de référencer l'instance depuis l'intérieur de la classe elle-même.
    Exemple b=toto(); c=toto(). Ici deux instances "b" et "c" donc deux objets mémoire. Ainsi, "self" permet pour chaque instance de s'adresser dans un cas à "b" et dans l'autre à "c" (voir l'exemple de lg_53 pour compléter).
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 14
    Points : 9
    Points
    9
    Par défaut
    Bonsoir à tous,

    Merci pour vos réponses. Après relecture de vos messages et essai de vos exemple, je crois que j'ai compris le principe.

    J'ai aussi repris mon script, travaillé sur une version light et tester/corriger. Mon code est maintenant fonctionnel.

    Merci à vous et bonne soirée,

    Ritchy76

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

Discussions similaires

  1. Appeler des fonctions listées dans un tableau
    Par MarieNum dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 01/01/2009, 17h31
  2. Appel d'une liste dans une liste (JSTL)
    Par abalgue dans le forum Hibernate
    Réponses: 4
    Dernier message: 15/06/2007, 10h56
  3. Réponses: 2
    Dernier message: 22/12/2006, 11h35
  4. [PEAR][DB] Appel de procédure stockée dans différents schémas sous postgresql
    Par rebolon dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 22/09/2006, 16h49
  5. tableau 2D dans différents fichiers .c
    Par abelolive dans le forum C
    Réponses: 18
    Dernier message: 05/07/2006, 17h44

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