bonjours je voudrais savoir comment je pourrai faire pour convertir une variable avec des AnsiString en char* merci
Version imprimable
bonjours je voudrais savoir comment je pourrai faire pour convertir une variable avec des AnsiString en char* merci
en utilisant c_str()
Code:
1
2 AnsiString str = "BlablaBla"; char *str2 = str.c_str();
il te suffit d'appeller la méthode c_str() de ton AnsiString
Code:
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:
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 prendCode:
1
2
3 AnsiString str="blabla"; str=str.c_str(); var.tab[0]=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 valeursCode:
1
2
3
4 struct test { char *tab[100]; };
Pour lire les valeursCode:
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 blancCode:
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: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:
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:
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:
1
2 char Tableau[100];
ou bien :Code:
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:
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 !