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

Free Pascal Discussion :

Convertir un pointer en chaîne et chaîne en pointer multiplateforme [Free Pascal]


Sujet :

Free Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Par défaut Convertir un pointer en chaîne et chaîne en pointer multiplateforme
    Bonjour,

    pour convertir un pointer en chaine, je le transforme en LongInt (trouvé sur ce forum) et inversement.
    Le problème c'est que LontInt est un entier (de –2147483648..2147483647) or en FreePascal c'est un LongWord (0..4294967295 donc à convertir en LongWord plutôt qu'en LongInt) mais, sous architecture 64 bits, c'est un entier 64 bits mais comment faire pour être compatible multi-plateforme ?
    Car impossible de convertir une chaine en pointer directement or si le code est compilé sur du 64 bits on risque d'avoir un dépassement de capacité non ?

    PS : au passage comment sait-on que l'on compile avec FPC et pas delphi. Je crois avoir vu, mais je ne retrouve pas, une constante FPC ?

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 967
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 967
    Par défaut
    Gio,

    Je me demande très vivement quel est l'intérêt de convertir le contenu d'une chaîne en pointeur.

  3. #3
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    8 046
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 8 046
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    Il existe en Free Pascal deux types d'entiers : Integer (signé) et Cardinal (non signé), dont la taille dépend de l'architecture et du mode de compatibilité définis dans les options de compilation (voir la FAQ). Cela t'affranchirait du souci de taille.

    Pour ce qui est de tester, lors de la compilation, si c'est bien FPC qui est à l'oeuvre, tu peux utiliser la directive
    Code Delphi : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    {$IFDEF FPC}
      // Code spécifique à Free Pascal
    {$ELSE}
      // ...
    {$ENDIF}
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  4. #4
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Par défaut
    En fait, j'ai trouvé dans la doc FPC que le type Cardinal est toujours mappé en LongWord. Donc ça revient au même.

  5. #5
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 466
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 466
    Par défaut
    Que veux-tu faire exactement ? Il y a peut-être un autre moyen de faire ça ?

  6. #6
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    8 046
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 8 046
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par bubulemaster Voir le message
    En fait, j'ai trouvé dans la doc FPC que le type Cardinal est toujours mappé en LongWord. Donc ça revient au même.
    Ah oui, tu as raison, au-dessus de 32 bits, seul l'entier signé Integer est réellement mappé en fonction de la taille par défaut de l'architecture. Cela m'avait échappé.
    Mais ne peux-tu travailler avec de l'entier signé ?
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  7. #7
    Membre éclairé
    Profil pro
    Développeur Java
    Inscrit en
    Mars 2004
    Messages
    624
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mars 2004
    Messages : 624
    Par défaut
    En fait, je créer un moteur de script comme PHP pour voir comment ça fonctione (pour l'instant je ne gère que les variables et les boucles, les if et un début de fonctions). Vous pouvez vous le procurer sur http://php4php.free.fr/sws/. Ce n'est qu'une ébauche et je suis en train de grandement l'améliorer.
    Donc, je gère les pointeurs (pratique pour les fonctions). Pour que ce soit plus facile je stocke dans la variable de mon script le pointeur FPC sur la variable.
    Voilà pourquoi je cherche à convertir un pointeur en chaine (car mais variable dans mon script ne sont que des chaines).

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

Discussions similaires

  1. comparaison de chaînes (des chaînes, beaucoup de chaînes!)
    Par kain_tn dans le forum Algorithmes et structures de données
    Réponses: 7
    Dernier message: 19/06/2009, 14h01
  2. Réponses: 5
    Dernier message: 01/11/2008, 19h13
  3. Réponses: 9
    Dernier message: 26/09/2007, 17h21
  4. Réponses: 6
    Dernier message: 12/10/2003, 14h57
  5. Réponses: 3
    Dernier message: 28/09/2003, 10h46

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