bonjours je voudrais savoir comment je pourrai faire pour convertir une variable avec des AnsiString en char* merci
bonjours je voudrais savoir comment je pourrai faire pour convertir une variable avec des AnsiString en char* merci
en utilisant c_str()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 AnsiString str = "BlablaBla"; char *str2 = str.c_str();
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();
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]; };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
3 AnsiString str="blabla"; str=str.c_str(); var.tab[0]=str;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 char *tab[100]; tab[0] = Edit1->Text.c_str();
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
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.
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
pour rentrer les valeurs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 struct test { char *tab[100]; };
Pour lire 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);
Mais le souci ce quand sa fonctionne pas mon fichier dans je le li c'est blanc
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);
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?
Code : Sélectionner tout - Visualiser dans une fenêtre à part char *tab[100];
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...
Hello,
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
3
4 struct test { char *tab[100]; };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...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 AnsiString s="salut"; var.tab[0]=s.c_str();
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];ou bien :
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());
Si on devait par exemple sauvegarder un ensemble de chaînes (même une seule chaîne), on pourrait éventuellement utiliser TStringList::SaveToFile.
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);
A plus !
Partager