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 :

conversion AnsiString en char*


Sujet :

C++Builder

  1. #1
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 279
    Par défaut conversion AnsiString en char*
    bonjours je voudrais savoir comment je pourrai faire pour convertir une variable avec des AnsiString en char* merci

  2. #2
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    en utilisant c_str()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AnsiString str = "BlablaBla";
    char *str2 =  str.c_str();

  3. #3
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    il te suffit d'appeller la méthode c_str() de ton AnsiString

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
       AnsiString chaine = "toto";
     
       char * Chaine2 = chaine.c_str();

  4. #4
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 279
    Par défaut
    je vien de la faire mais pour mon tableau sa fonctionne pas il me dit impossible de convertier ....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    struct test
    {
            char *tab[100];
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            AnsiString str="blabla";
            str=str.c_str();
            var.tab[0]=str;
    L'AnsiString me permet de recupéré la valeur dans mon edit s'il y a une autre solution pour avoir char* direct je prend

  5. #5
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Citation Envoyé par darkman13130 Voir le message
    L'AnsiString me permet de recupéré la valeur dans mon edit s'il y a une autre solution pour avoir char* direct je prend
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      char *tab[100];
      tab[0] = Edit1->Text.c_str();

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 279
    Par défaut
    aucun erreur mais quand je fais la lecture de mon fichier .bin c'est blanc donc sa marche pas et ma lecture fonctione car quand je met juste char et je met un caractere sa fonctionne

  7. #7
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Ta question de départ est en tout cas résolue!

    Si le problème est ailleurs, essai d'expliquer mieux où est ton problème et ce que tu n'arrive pas a faire.

  8. #8
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 279
    Par défaut
    Le but pour moi est simple

    j'ai un fichier .bin dans ce fichier je doit rentrer des login et de pwd

    j'ai pensé à une structure

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    struct test
    {
            char *tab[100];
    };
    pour rentrer les valeurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            test var;
            AnsiString s="salut";
            var.tab[0]=s.c_str();
            FILE *f;
            f= fopen("C:\\fichier.bin","w");
            fwrite (&var , sizeof(test) , 1 , f );
            fclose(f);
    Pour lire les valeurs

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
            test var;
            FILE *f;
            f= fopen("C:\\fichier.bin","r");
            fread (&var , sizeof(test) , 1 , f );
     
            Edit1->Text=var.tab[0];
            fclose(f);
    Mais le souci ce quand sa fonctionne pas mon fichier dans je le li c'est blanc

  9. #9
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par défaut
    Je ne comprend pas ce que tu souhaite faire.

    pourquoi: Tu souhaite juste écrire/lire des chaine de caractères provenant d'un TEdit dans ton fichier?

    Ce que tu souhaite faire à l'air assez simple, mais la façon dont tu t'y prend me semble un brin compliqué!

    Mais c'est peut être moi qui n'ai rien compris...

  10. #10
    Membre émérite
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Septembre 2005
    Messages
    401
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine Maritime (Haute Normandie)

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 401
    Par défaut
    Hello,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    struct test
    {
            char *tab[100];
    };
    Question à 2 balles: Tu cherches à enregistrer (réponse 1) un tableau de 100 caractères, ou (réponse 2) un tableau de 100 pointeurs vers des chaînes ??
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AnsiString s="salut";
    var.tab[0]=s.c_str();
    s.c_str() te renvoie le pointeur sur la chaîne, donc tu fais (réponse 2) ... mais ça m'étonnerais que tu cherches à faire ça...

  11. #11
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Chez moi, c_str() utilise un tableau temporaire qui n'est valide qu'à ce moment là.
    Il faudrait, je pense, effectuer une copie physique du contenu.
    Soit avec strcpy soit avec CopyMemory dans le tableau de destination.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char Tableau[100];
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    // ce qui semble le plus simple à rédiger
    strcpy(Tableau, Label1->Caption.c_str());
    ou bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    // qu'on peut rédiger également comme ceci
    AnsiString N = Label1->Caption;
    CopyMemory(Tableau, N.c_str(), N.Length()+1);
    Si on devait par exemple sauvegarder un ensemble de chaînes (même une seule chaîne), on pourrait éventuellement utiliser TStringList::SaveToFile.

    A plus !

Discussions similaires

  1. [Système/Fichiers/API] conversion AnsiString en Char*
    Par menoran dans le forum C++Builder
    Réponses: 8
    Dernier message: 31/05/2010, 18h26
  2. conversion AnsiString en const char*
    Par Mangacker dans le forum C++Builder
    Réponses: 3
    Dernier message: 14/05/2007, 18h43
  3. Probleme conversion AnsiString to Char
    Par El-Diablo- dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/05/2007, 09h36
  4. [Conversion]Convertir un char[] en int
    Par ThanosT dans le forum Général Java
    Réponses: 10
    Dernier message: 11/11/2005, 12h23
  5. "Conversion" d'un char en int ou longueur
    Par Michaël dans le forum C
    Réponses: 6
    Dernier message: 15/08/2003, 11h40

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