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

Bases de données Delphi Discussion :

[transtypage]PChar et WideString


Sujet :

Bases de données Delphi

  1. #1
    Membre habitué

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 99
    Points : 126
    Points
    126
    Par défaut [transtypage]PChar et WideString
    Salut,

    je réalise le code suivant :

    avec CNode un TTreeNode et Text de type widestring... Tout ça me sert dans une requête sql le seul souci est que l'erreur SQL est :

    La table essai.c n'existe pas alors que 'c' devrait être 'clients'...

    Merci d'avance

  2. #2
    Membre habitué

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 99
    Points : 126
    Points
    126
    Par défaut
    Alors là, je suis perplexe...

    J'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var
      Req : String;
    ...
    ...
     Req  := CNode.Text;
     mysql_query(Conn,PChar(Req));
    Et ça marche...Si qqun à une idée de l'origine du problème..

  3. #3
    Membre chevronné
    Avatar de Pierre Castelain
    Inscrit en
    Avril 2002
    Messages
    523
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 523
    Points : 1 943
    Points
    1 943
    Par défaut
    Je crois que je sais...

    Le type WideChar est en fait PWideChar, c'est à dire un pointeur sur un vecteur de WideChars (2 octets). Lorsque tu écris:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var 
      Req : String; 
    ... 
    ... 
    Req  := CNode.Text; 
    mysql_query(Conn,PChar(Req));
    Delphi te fait le transtypage entre un PWideChar et un String (création d'une chaine et recopie du contenu), suivi du transtypage entre un String et un PChar (même combat, création du PChar et recopie du contenu).
    Par contre, si tu écris:
    Delphi doit considérer qu'il s'agit de 2 types pointeurs et ne faire aucune vérification ni opération de recopie. Dans ton cas, le premier caractère Unicode (WideChar) doit être #99#00. Comme le zéro est synonyme de fin de chaine dans un PChar tu te retrouve avec la chaine 'c'.
    CQFD.

    PS: je n'ai pas vérifié ce que je viens d'exposer. N'hésitez pas à démentir...

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

Discussions similaires

  1. Thread ShellExecute PChar string transtypage
    Par ouiouioui dans le forum Débuter
    Réponses: 11
    Dernier message: 02/11/2008, 00h51
  2. Transtypage String en Pchar impossible
    Par madfu dans le forum Delphi
    Réponses: 6
    Dernier message: 10/07/2006, 12h39
  3. transtypage d'interface en classe
    Par T0ch dans le forum Langage
    Réponses: 5
    Dernier message: 27/05/2004, 19h42
  4. [C++]closure + héritage + transtypage
    Par JEG dans le forum C++Builder
    Réponses: 11
    Dernier message: 30/01/2004, 14h26
  5. Réponses: 3
    Dernier message: 02/07/2003, 16h24

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