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

C++Builder Discussion :

Problème avec un ansistring - écriture dans Word


Sujet :

C++Builder

  1. #1
    Membre averti
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 69
    Par défaut Problème avec un ansistring - écriture dans Word
    Bonjour à tous,
    Je récupére des infos dans ma base de données et je les insérent dans word.
    Problème: je récupére un carré simbolisant le fin de chaine dans word. Je voudrais savoir comment supprimer le carractère de fin de chaine. Et aussi s'il est possible de récupérer des infos dans word pour les envoyer dans une base de données.
    Merci d'acance pour vos réponses.

  2. #2
    Membre averti
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 69
    Par défaut
    Personne sait si c'est faisable ou pas?
    Parce que la je bloque et si ca continu je vais être obliger d'utiliser exel même si pour la conversion en pdf ca ira moins bien.
    Merci d'avance a tous.

  3. #3
    Membre Expert
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par défaut
    Si la chaîne se trouve dans un AnsiString, libre à vous de supprimer le dernier caractère, quel qu'il soit, si toutefois vous êtes certain d'avoir ce caractère parasite à chaque lecture de votre base de données. Ou encore, si c'est vous qui enregistrez ces données, libre à vous de ne pas enregistrer ce caractère.

    En tout cas, si A est un AnsiString

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    A=A.SubString(1,A.Length()-1);
    vous supprime le dernier caractère de A. Vérifiez toutefois que la chaîne soit non vide sinon A.Length()-1 va être négatif et vous allez au casse-pipe.

    À bientôt
    Gilles

  4. #4
    Membre averti
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 69
    Par défaut
    Merci pour l'aide, mais le problème avec le code:

    a=a.SubString(1,a.Length());

    c'est qu'il supprime le dernier caractère du mot.

    Or le problème que j'ai c'est que quand j'insère le mot dans word, il apparait un carré a la fin du mot et c'est ce carré que je veut supprimer.

    Et même en mesurant la longueur du mot et en faisant un delete c'est soit je supprime la dernière lettre du mot soit builder plante donc je sait plus trop quoi faire.

  5. #5
    Membre averti
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 69
    Par défaut
    Et sinon, est ce que c'est possible d'aller chercher les informations dans word pour les envoyer dans une base de données.

  6. #6
    Membre Expert
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par défaut
    Citation Envoyé par scorpion37
    Quand j'insère le mot dans word, il apparaît un carré a la fin du mot et c'est ce carré que je veux supprimer.
    Il faudrait nous dire comment vous faites cette insertion avec un peu de code, je ne connais pas cette technique. Peut-être faut-il convertir l'AnsiString en chaîne à zéro terminal? (sinon dans la formule que je vous ai donnée, vous n'avez pas recopié le -1 mais je pense qu'on s'était compris quand même).

    À bientôt
    Gilles

  7. #7
    Membre averti
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 69
    Par défaut
    Dans la formule que j'ai recopier j'ai supprimer le -1 car il supprimait la dernière lettre du mot donc j'ai testé les deux.

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     vBookMark = vBookMarks.OleFunction("Item",1);
    vBookMark.OleFunction("Select");                                  
    vContent = vBookMark.OlePropertyGet("Range");
    a = "Test";
    a=a.SubString(1,a.Length()-1);
    vContent.OleFunction("InsertAfter",a);
    Comment on fait pour convertir un ansistring en chaine à zéro terminal?

  8. #8
    Membre Expert
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par défaut
    Citation Envoyé par scorpion37
    Comment on fait pour convertir un ansistring en chaine à zéro terminal?
    Si A est un AnsiString, A.c_str() est la chaîne à zéro terminal. Libre à vous de recopier cette chaine dans un char* qui sera donc à zéro terminal, par exemple, A étant l'AnsiString :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    char* chaine;
    chaine=new char[A.Length()+1]; // +1 car il faut un car pour le zéro final
    strcpy(chaine,A.c_str());
     
    // ici chaine est disponible
     
    delete[]chaine;
    À bientôt
    Gilles

  9. #9
    Membre averti
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 69
    Par défaut
    Merci pour votre aide, mais le problème persiste.
    Mon code est devenue:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     vBookMark = vBookMarks.OleFunction("Item",1);
    vBookMark.OleFunction("Select"); 
    vContent = vBookMark.OlePropertyGet("Range");
    a = "Test";
    char* chaine;
    chaine=new char[a.Length()+1]; 
    strcpy(chaine,a.c_str());
     
    // ici chaine est disponible
    a=a.SubString(1,a.Length()-1);
    vContent.OleFunction("InsertAfter",a);
    delete[]chaine;
    Si j'ai bien compris c'est ca qu'il faut que je code?
    C'est bien a qu'il faut mettre après le InsertAfter car si je mets autre chose j'ai des erreurs de compilation.

    Merci encore pour votre aide

  10. #10
    Membre Expert
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par défaut
    Mon idée était simplement que vous ayez une chaîne de type char* à zéro terminal pour éventuellement la traiter et notamment supprimer quelque chose à la fin.

    Si en mettant A="Test", ça ne marche pas, je ne sais que vous dire, car dans l'exemple que vous donnez, la chaîne ne vient pas d'une base de données mais du programme. On pouvait penser que si la chaine vient de la base, il y ait à la fin un caractère parasite mais si le problème est le même avec une affectation du type A="Test", cela vient d'ailleurs et comme je ne peux pas tester, je ne puis aller plus loin. J'ignore totalement pourquoi Word vous affiche un carré à la fin, le problème vient plutôt de Word qu'ailleurs puisque manifestement dans l'exemple que vous donnez, il n'y a pas de caractère parasite.

    À bientôt
    Gilles

  11. #11
    Membre averti
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 69
    Par défaut
    Le problème vient effectivement de word. L'exemple que je donnais est un programme secondaire que j'orais inséré dans mon programme principal si il marchait.

    Si vous connaissez des solutions pour insérer des informations d'une base de donnée dans un fichier qui sera inmprimé, ca m'aiderait beaucoup.

    Il me semble que l'on peut utiliser exel qui a à peut près le même fonctionnement que word ou sinon utiliser QReport. C'est ca non?

    Merci encore pour votre aide.

  12. #12
    Membre averti
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    69
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 69
    Par défaut
    Ca y est j'ai enfin résolu mon problème.
    Il fallait déclarer a comme un Variant et non comme un String.
    Mon code devient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
       Variant a;
     
       vBookMark = vBookMarks.OleFunction("Item",1);
       vBookMark.OleFunction("Select");                                  
       vContent = vBookMark.OlePropertyGet("Range");
       a = "Test";
       vContent.OleFunction("InsertAfter",a);

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

Discussions similaires

  1. problème avec la méthode getElementById() dans Firefox
    Par matrouba dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 19/12/2005, 08h55
  2. Réponses: 8
    Dernier message: 24/11/2005, 03h53
  3. Problème avec le type BLOB dans oracle
    Par pguedia dans le forum Oracle
    Réponses: 1
    Dernier message: 10/11/2005, 17h33
  4. probléme avec une date/string dans un CommandText
    Par critok dans le forum Bases de données
    Réponses: 5
    Dernier message: 09/02/2005, 15h30
  5. problème avec masque de saisie dans table
    Par porki dans le forum Access
    Réponses: 6
    Dernier message: 13/10/2004, 08h58

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