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

 Delphi Discussion :

Variable STRING de plus de 255 caractères


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    893
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 893
    Par défaut Variable STRING de plus de 255 caractères
    bonjour

    j'ai vu plusieurs sujet traiter de ce problème, sans vraiment avoir de solutions concrètes :

    https://www.developpez.net/forums/d5...55-caracteres/

    https://www.developpez.net/forums/d1...line-too-long/

    dans mon cas c'est pour faire une requête php

    j'ai fait plusieurs tests, et il y a une chose que je ne comprends pas

    imaginons que c'est le contenu d'un Memo que j'envoie dans ma requête GET

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Memo1.Text:='Ceci est un texte vraiment long qui ne tiens par sur une ligne,' 
               +' mais quelle idée aussi de saisir un texte comme cela alors que ' 
               +'la ligne ne tiens même pas dans l''éditeur et qu''il faut ' 
               +'utiliser les barres de défilement horizontales pour le lire ' 
               +'en entier ! Non mais bon sang de bon soir !';
    ainsi ça fonctionne, sans problème

    mais si je prends le contenu du texte et je le met dans le memo et bien ça ne fonctionne pas

    que se passe t il lorsque l'on met le texte dans le memo de part le code ? il y a t il une conversion ou autre chose à faire au Memo avant l'envoie de ma requête ?

    j'espère enfin trouver le problème grâce à votre aide

    merci

  2. #2
    Expert éminent
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Paris (Île de France)

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

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Par défaut
    je n'ai pas compris la question :

    si je prends le contenu du texte et je le met dans le memo et bien ça ne fonctionne pas
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    893
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 893
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    je n'ai pas compris la question :
    ce que j'essaie d'expliquer, c'est :

    - lorsque le texte est ajouté au Memo par le code que j'ai cité, la requête Get fonctionne, je n'ai pas de problème de chaîne trop longue

    - si je compile, et je copie (ou j'écris) le même contenu dans le Memo, alors il y a un message d'erreur lors de la requête

    pourquoi dans le code, avec concaténation, ça fonctionne ?

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    893
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 893
    Par défaut
    bon là je suis perdu !

    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
     
    g : string;
     
    g1 :='Ceci est un texte vraiment long qui ne tiens par sur une ligne,'
               +' mais quelle idée aussi de saisir un texte comme cela alors que '
               +'la ligne ne tiens même pas dans l''éditeur et qu''il faut '
               +'utiliser les barres de défilement horizontales pour le lire '
               +'en entier ! Non mais bon sang de bon soir !'
               +'2 mais quelle idée aussi de saisir un texte comme cela alors que '
               +'la ligne ne tiens même pas dans l''éditeur et qu''il faut '
               +'utiliser les barres de défilement horizontales pour le lire '
               +'en entier ! Non mais bon sang de bon soir !';
     
    g2 := 'testtttttttttttttttttt ttttttttttttttttttttttttt tttttttttttttttttt tttttttttttttttttttt'
       + 'tttttttttttttttttttt ttttttttttttttttttttttttttt tttttttttttttttttt ttttttttttttttttttttt'
       + 'tttttttttttt ttttttttttttt ttttttttttttttttttttttttt ttttttttttttt tttttttttttttttttttttttt'
       + 'tttttttttttttttttt tttttttttttttttttttttttt';
     
     
    idhttp1.Get('http://mon_site/script.php?var=' + g1);
     
    idhttp1.Get('http://mon_site/script.php?var=' + g2);
    pour g1 ça fonctionne, alors que pour g2 non

    pourtant g1 est plus long que g2 ... je ne comprends plus rien :/

  5. #5
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 678
    Billets dans le blog
    2
    Par défaut
    Bonsoir,

    Si j'ai bien compris la question, le problème vient du fait que l'éditeur de code dans Delphi est limité à 255 caractères par lignes.
    Si tu alimentes ta variable de string de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    s := 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa...';
    Imaginons que cette ligne dépasse 255 caractères, le compilateur sortira une erreur. Il faut revenir à la ligne régulièrement. Bien évidemment, une variable de type string peut contenir bien plus que 255 caractères.
    Si c'est bien cela le problème, je pense que votre manière de constituer la requête est à revoir... Tout mettre en "dur" dans le programme ce n'est pas très flexible pour l'avenir (si votre requête change, vous êtes obligés de modifier et recompiler le programme...).
    Mon site - Mes tutoriels - GitHub - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  6. #6
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 678
    Billets dans le blog
    2
    Par défaut
    Nos messages se sont croisés.
    En plus vous mettez des espaces dans vos urls.... sans faire de URLEncode....
    Mon site - Mes tutoriels - GitHub - N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    893
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 893
    Par défaut
    dsl gbegreg, je n'ai pas mis tout le code pour garder l'essentiel
    il y a bien URLEncode();

    au début aussi je pensais que c'était la façon d'alimenter ma variable qui posait problème, mais regarde bien mon code, j'alimente g1 et g2 de la même façon, pourtant g1 fonctionne, g2 non (alors que g1 est plus long que g2 ce qui pour moi n'est pas très logique)

    autre solution essayée : à la compilation, on ne peut pas mettre plus de 255 dans un string, j'ai donc essayé de mettre ma chaine dans un Tedit, et d'affecter (mon_string := edit.text) on n'a pas de problème pour l'affectation non plus, mais lorsque je lance la requête ça plante aussi

Discussions similaires

  1. String avec plus de 255 caractères
    Par draco951 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 10/02/2016, 08h30
  2. Avoir plus de 255 caractères pour un lien hypertexte
    Par alexandrebergercyr dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 14/02/2007, 21h27
  3. Réponses: 4
    Dernier message: 22/05/2006, 11h53
  4. Plus de 255 caractères
    Par krfa1 dans le forum Access
    Réponses: 7
    Dernier message: 13/03/2006, 17h01
  5. SQL de plus de 255 caractères dans un recordset
    Par acama dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 05/01/2006, 15h50

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