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 :

string/function to long


Sujet :

Python

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut string/function to long
    Bonjour,

    J'utilise une libraire écrite en C

    Alors j'ai deux problèmes j'ai une function :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int pacman_set_option(unsigned char parm, unsigned long data);
    Je l'ai redéfini :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    def pacman_set_option(parm,data):
      print_debug("pacman_set_option")
      pacman.pacman_set_option.argtypes = [ctypes.c_int,ctypes.c_long]
      pacman.pacman_set_option.restype = ctypes.c_int
      return pacman.pacman_set_option(parm,data)

    à data je peux lui passer le nom d'un function pour un callback
    par exemple en C :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    static void
    _log_cb (unsigned short level, char *msg) {
    	g_print ("%s\n", msg);
     
    	return;
    }
    ...
    pacman_set_option (PM_OPT_LOGCB, (long)_log_cb);
    ou une chaine qui peux contenir le nom d'un paquet à chercher comme python
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    pacman_set_option (PM_OPT_NEEDLES, (long)search_str);
    Comment convertir le nom d'une fonction vers le pointeur de cette fonction et une chaine en (long)

    Le code complet est disponible ici : http://dors.frugalware.org/tmpgit/fr...n/py-pacman.py
    et le .h si besoin est la : http://git.frugalware.org/gitweb/git...528904;hb=HEAD

    Merci à qui aura une idée
    (j'espere avoir été clair)

  2. #2
    Membre éprouvé
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Points : 1 006
    Points
    1 006
    Par défaut
    Citation Envoyé par bouleetbil Voir le message
    Comment convertir le nom d'une fonction vers le pointeur de cette fonction et une chaine en (long)
    - Concernant la fonction, vous pouvez vous servir de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma_fonction = eval("nom_de_mafonction")
    Ou de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ma_fonction = globals()["nom_de_mafonction"]
    Il se tient justement à ce propos une discussion sur appeller une fonction avec un string

    - Pour ce qui est de string==> long:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    valLong = long("expression")
    Citation Envoyé par bouleetbil Voir le message
    (j'espere avoir été clair)
    Je suis pas certain d'avoir pigé autre chose que les lignes citées plus haut.
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Salut
    J'ai déjà essayé pour le long

    mais ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ValueError: invalid literal for long() with base 10:
    Le probleme c'est qu'à la base c'est vraiement une chaine

  4. #4
    Expert éminent
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    3 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 817
    Points : 7 110
    Points
    7 110
    Par défaut
    machaine est de quel type?

    Edit : Je veux dire à l'intérieur de la chaine.

    Je ne sais pas si je suis clair, donc je met 2 propositions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    long(float(machaine))
     
    # ou
     
    long(int(machaine))
    Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
    La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Alors en fait en C c'est char *
    voici le code en C:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    gchar		*search_str;
    ...
    search_str = (gchar*)gtk_entry_get_text (GTK_ENTRY(widget));
    ...
    pacman_set_option (PM_OPT_NEEDLES, (long)search_str);
    Donc se serait en quelque sorte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    long(POINTER(search_str))
    Mais ca me renvoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TypeError: long() argument must be a string or a number, not '_ctypes.PyCPointerType'

  6. #6
    Membre éprouvé
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Points : 1 006
    Points
    1 006
    Par défaut
    Alors vous devez faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    valLong = long(float(_ctypes.PyObj_FromPtr(monPointeur)))
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2011
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    presque
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SystemError: Objects/longobject.c:408: bad argument to internal function

  8. #8
    Membre éprouvé
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Points : 1 006
    Points
    1 006
    Par défaut
    Un rapide:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print dir(_ctypes.PyCPointerType)
    ? Je l'ai pas dans mon module _ctypes. Il dispose peut être d'une méthode "getValue"/"getPyValue" ...
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

  9. #9
    Membre éprouvé
    Avatar de afranck64
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    592
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Cameroun

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

    Informations forums :
    Inscription : Janvier 2009
    Messages : 592
    Points : 1 006
    Points
    1 006
    Par défaut
    Alors, jette un coup d'oeil dans:
    Je pense que la chaine devrait s'y trouver
    Win 10 64 bits / Linux Mint 18, - AMD A6 Quad: Py27 / Py35
    CONTENU D'UNE QUESTION
    Exemples:
    - Configuration (système d'exploitation, version de Python et des bibliothèques utilisées)
    - Code source du morceau de programme où il y a un bogue
    - Ligne de code sur laquelle le bogue apparaît
    - Erreur complète retournée pas l'interpréteur Python
    - Recherche déjà effectuée (FAQ, Tutoriels, ...)
    - Tests déjà effectués

Discussions similaires

  1. string functions(détecter lettres avec accents)
    Par patburn_911 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 20/02/2013, 10h22
  2. depracated os.string functions in python 2.5
    Par awalter1 dans le forum Général Python
    Réponses: 2
    Dernier message: 22/03/2011, 11h15
  3. Inserer String dans un Long
    Par romainromain dans le forum JDBC
    Réponses: 8
    Dernier message: 21/05/2007, 10h43
  4. conversion d'un String pour un Long
    Par pinot dans le forum VB 6 et antérieur
    Réponses: 11
    Dernier message: 07/02/2007, 11h33
  5. [Dates] date string function
    Par taffMan dans le forum Langage
    Réponses: 4
    Dernier message: 28/09/2006, 14h17

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