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

Composants VCL Delphi Discussion :

Passage des chaînes de caractères à une application CGI


Sujet :

Composants VCL Delphi

  1. #1
    Membre à l'essai
    Inscrit en
    Octobre 2002
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 42
    Points : 24
    Points
    24
    Par défaut Passage des chaînes de caractères à une application CGI
    Bonjour,

    Je créé des programme CGI en Delphi. Lorsque j'utilise des champs de saisie, les caractères accentués en particulier sont transmis au CGI sous la forme %XX. Par exemple si j'ai un champ de saisie ou je tape Héléne je récupére H%E9l%E9ne dans ma "query string".

    Existe-t'il des fonctions sous delphi pour reconvertir cette chaîne dans sa forme initiale?

    Merci

  2. #2
    Membre éclairé

    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 085
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 085
    Points : 886
    Points
    886
    Par défaut
    en gros , ce sont les accents qui posent problèmes ?

  3. #3
    Membre à l'essai
    Inscrit en
    Octobre 2002
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 42
    Points : 24
    Points
    24
    Par défaut
    Les accents et certains caractères: espace, &, ... .

    Il s'agit à mon avis d'une conversione ne unicode ... à voir.

  4. #4
    Membre expert
    Avatar de Bestiol
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 515
    Points : 3 894
    Points
    3 894
    Par défaut
    Je ne pense pas qu'il y ait de fonction qui te permette de faire ça directement ...

    Toutefois, ce n'est pas bien compliqué de la faire toi-même !

    Tu fais une boucle qui tourne tant qu'il y a un signe % dans ta chaine. Tu trouves chaque '%' avec PosEx (L'intérêt est que tu peux choisir d'où tu démarres la recherche du caractère), puis tu prends les deux caractères qui suivent (il y en aura toujours deux). Tu les convertis en integer et récupère le caractère correspondant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Key := StrToInt('$' + Char1 + Char2);
    Char3 := Chr(Key);
    Ensuite tu remplaces le '%XX' par le bon caractère !
    A mon avis, il faut que tu travailles dans un buffer à part plutôt que de remplacer dans la chaine originale. Car si dans ta chaine tu as un '%' qui apparait après "décodage", tu auras soit une erreur de conversion, soit des conversions qui ne devraient pas être faites !

    Vala je pense que ça devrait fonctionner !

    Bonne prog' !
    Bestiol.
    Mea est trop forte, elle flotte : mea coule pas !

    Basically this boot sector (Win95) code is 32 bit extension for a 16 bit patch to an 8 bit boot sector originally coded for a 4 bit microprocessor, written by a 2 bit company, that can't stand 1 bit of competition.

    olance.developpez.com
    Servez-vous, profitez, abusez de la FAQ Delphi !!

  5. #5
    Membre à l'essai
    Inscrit en
    Octobre 2002
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 42
    Points : 24
    Points
    24
    Par défaut
    Ca veut dire que je connais le code de tous les caractères possibles...

  6. #6
    Membre expert
    Avatar de Bestiol
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 515
    Points : 3 894
    Points
    3 894
    Par défaut
    euh s'cuse moi, mais je comprend pas ta réponse...
    Mea est trop forte, elle flotte : mea coule pas !

    Basically this boot sector (Win95) code is 32 bit extension for a 16 bit patch to an 8 bit boot sector originally coded for a 4 bit microprocessor, written by a 2 bit company, that can't stand 1 bit of competition.

    olance.developpez.com
    Servez-vous, profitez, abusez de la FAQ Delphi !!

  7. #7
    Membre à l'essai
    Inscrit en
    Octobre 2002
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 42
    Points : 24
    Points
    24
    Par défaut
    C'est moi qui n'avait pas compris, je pensais qu'il fallait connître la le code de chaque caractère, je vais tester

  8. #8
    Membre à l'essai
    Inscrit en
    Octobre 2002
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 42
    Points : 24
    Points
    24
    Par défaut
    Ok super ça marche nickel chrome.

    Merci

  9. #9
    Membre expert
    Avatar de Bestiol
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mai 2002
    Messages : 1 515
    Points : 3 894
    Points
    3 894
    Par défaut
    hé hé pas de quoi !

    Bonne continuation !
    Bestiol.
    Mea est trop forte, elle flotte : mea coule pas !

    Basically this boot sector (Win95) code is 32 bit extension for a 16 bit patch to an 8 bit boot sector originally coded for a 4 bit microprocessor, written by a 2 bit company, that can't stand 1 bit of competition.

    olance.developpez.com
    Servez-vous, profitez, abusez de la FAQ Delphi !!

  10. #10
    Membre expérimenté

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

    Informations forums :
    Inscription : Octobre 2002
    Messages : 685
    Points : 1 608
    Points
    1 608
    Par défaut
    Indy propose des procédures pour cet usage, dans IdURI :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    TIdURI.PathEncode(const ASrc: string): string;
    TIdURI.URLEncode(const ASrc: string): string;
    "It's more fun to compute !"

  11. #11
    Membre à l'essai
    Inscrit en
    Octobre 2002
    Messages
    42
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 42
    Points : 24
    Points
    24
    Par défaut
    Encore mieux

    Merci

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 23/12/2013, 18h19
  2. Réponses: 6
    Dernier message: 20/08/2013, 22h37
  3. [Free Pascal] Passage d'une chaîne de caractères à une routine C
    Par tridule dans le forum Free Pascal
    Réponses: 5
    Dernier message: 08/02/2009, 16h02
  4. Réponses: 7
    Dernier message: 13/09/2007, 15h22
  5. Réponses: 2
    Dernier message: 12/10/2004, 13h04

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