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

Langage Delphi Discussion :

gestion des apostrophes dans une chaîne de caractère


Sujet :

Langage Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 229
    Points : 60
    Points
    60
    Par défaut gestion des apostrophes dans une chaîne de caractère
    je veux savoir comment gérer les apostrophes dans mes chaînes de caractère?
    Quand je recherche un enregistrement dans une de mes tables via un attribut string comprenant une apostrophe, il ne retourne rien. Alors que la chaîne existe bien dans la table.
    Je veux fonction qui me permettrait de résoudre ce problème svp.
    Merci pour votre aide.

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Bonjour

    As-tu un code exemple de cette recherche qui n'aboutit pas?

    @+

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 229
    Points : 60
    Points
    60
    Par défaut
    en fait je fais la recherche à partir du caption d'un groupbox.

  4. #4
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Certes, mais il serait quand même utile que tu nous montres ton code de recherche afin que l'on puisse trouver où se situe l'erreur.
    Juste pour savoir si il faut doubler les apostrophes ou non.

    @+

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 229
    Points : 60
    Points
    60
    Par défaut
    Ok , voici donc mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    for i:=0 to  Self.ComponentCount-1 do
       begin
        if Self.Components[i] is TEdit then
          begin
           ObjR:=TCalculTabBord_Indicat.GetResultIndic((((Self.Components[i] as TEdit).Parent) as TGroupBox).Caption,ObjTableauBord);
         end;
    et voici l'implementation de ma fonction de recherche GetResultIndic:
    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
     
    class function TCalculTabBord_Indicat.GetResultIndic(VLabel:string;
            ObTab:TTableau_Bord): TCalculTabBord_Indicat;
    var
      Selector: TInstantSelector;
      ObResult: TCalculTabBord_Indicat;
    begin
      Selector:=TInstantSelector.Create(nil);
      Selector.Connector:=DM.Connector;
      Selector.Command.Text:='select * from TCalculTabBord_Indicat where IndicSProc.Indicateur.Libelle=:LabInd and TabBord.id=:IDTab';
      Selector.Params.ParamByName('LabInd').Value:=VLabel;
      Selector.Params.ParamByName('IDTab').Value:=ObTab.Id;
      Selector.Open;
      ObResult:=Selector.CurrentObject as TCalculTabBord_Indicat;
      Result:=ObResult;
    end;
    Merci pour votre aide!

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 606
    Points : 25 292
    Points
    25 292
    Par défaut
    Est-ce VLabel qui contient le ' ?
    Comment le remplis-tu ?

  7. #7
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Il est là le VLabel:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (((Self.Components[i] as TEdit).Parent) as TGroupBox).Caption
    C'est le caption du GroupBox.
    En théorie cette requête devrait fonctionner.

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2006
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2006
    Messages : 229
    Points : 60
    Points
    60
    Par défaut
    En fait la requête marche quand il n'y a pas d'apostrophe dans la chaîne qui représente la caption.
    Mais dès que on a un apostrophe, alors il retrouve rien.
    Donc je me suis demandé s'il n'existe pas une fonction comme addslashes() (php) qui élimine les espaces, les caractères spéciaux...

  9. #9
    Membre chevronné

    Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 291
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Août 2002
    Messages : 1 291
    Points : 1 942
    Points
    1 942
    Par défaut
    Pour les apostrophes un QuotedStr suffiet mais pour le reste joker, je n'utilise jamais les paramètres.

  10. #10
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 606
    Points : 25 292
    Points
    25 292
    Par défaut
    C'est de l'InstantObjects ? c'est vilain, faut quand même écrire du SQL à la main ... pourrait y avoir des assistants ... un peu à la façon du ZendFrameWork en PHP

    As-tu essayé un "AsString" à la place du "Value" sinon il est vrai que j'ai rarement de ' dans mes requêtes paramètrées ... toujours le truc des '', '''' ou "'" voire '\''

    quelle connecteur et quelle DB derrière tout ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selector.Params.ParamByName('LabInd').Value:= QuotedStr(VLabel);
    ça me semblerait bizarre quand même, j'aime bien aussi les requêtes paramètrées mais on sait pas quelle est vraiement la requête soumise (moi je les sniff en activant le Log complet dans MySQL par exemple)

Discussions similaires

  1. Supprimer des entiers dans une chaîne de caractères
    Par info_mohamed dans le forum Eclipse
    Réponses: 1
    Dernier message: 15/09/2014, 19h56
  2. Réponses: 1
    Dernier message: 26/01/2013, 11h10
  3. [E-03] Gestion des guillemets dans une chaîne de caractères
    Par clemou dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/03/2009, 14h25
  4. Réponses: 4
    Dernier message: 17/07/2008, 16h15
  5. Réponses: 5
    Dernier message: 25/02/2008, 14h34

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