pb BC5 Trichedit

pb BC5 Trichedit - C++ - Programmation

Marsh Posté le 16-10-2002 à 15:56:12    

hello,
un probleme classique pour les connaisseurs de BC++5 avec les composants vcl je suppose :
je sauvegarde le contenu d'un objet Trichedit qui contient des lignes vides : ex:
1
2
 
3
 
 
4
 
la propriété lines de trichedit me retourne ca comme contenu de la fenetre, c'est ce qui est sauvegarder.  
(Lines->Strings->Text.c_str())
text: "1\r\r\n2\r\r\n\r\r\n3\r\r\n\r\r\n\r\r\n4\r\r\n"
le pb est que je charge ce fichier avec "getline" et "ifstream"
dans le joli style C; les lignes que me retourne cette méthode sont:
1
2
3
 
4
 
il me manque des "\n" !!!
si qqun a une idée comment relire correctement un fichier qui contient plein de caractère '\r' (qui vienne d'où d'ailleurs !!)
je suis preneur.
merci
 
 
 

Reply

Marsh Posté le 16-10-2002 à 15:56:12   

Reply

Marsh Posté le 16-10-2002 à 16:34:19    

BC++5 ? BCB 5 tu veux dire ?
Borland C++ 5 c'est autre chose que Borland C++Builder 5 :D
 
Sous Windows le retour de ligne c'est deux caractères, \r\n


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 16-10-2002 à 17:26:48    

oui c'est builder mais personne n'est parfait,  
en fait pour plus de clarté mon problème est de lire un fichier en mémoire ligne par ligne, mon code (humble) est le suivant :
 
 
zone_text est un vector<char *>
 
//-
bool ChargeFichier_Tab::Charger_Fichier(string Fichier){
    if(loading)
        zone_text->reserve(SSIZE);
 NomFichier = Fichier;
 inout->open((char *)NomFichier.data(),ios_base::in);
 char * tmp = new char[CHAR_BUFF_MAX_LENGTH];
 int i=0;
 while(!inout->eof()){
   debLigne.push_back(inout->tellg());    //un "pointeur" sur chaque debut de ligne.
   inout->getline(tmp,CHAR_BUFF_MAX_LENGTH);
  char * zone = new char[strlen(tmp)+1];
  zone_text->push_back(strcpy(zone,tmp));
   ++i;
 }
 NbLigne = i;
 debLigne.push_back(inout->tellg());  
        //derniere ligne.
 delete [] tmp;
    return true;
}
//-
je stocke dans mon vector chaque ligne lue mais si mon fichier vaut : "1\n2\n\n3\n\n\n4"
il me fabrique les lignes suivantes :
1
2
3
 
4
 :??:  
mon prog a "oublier" une ligne "vide"
là, je comprend pas ....
 
 

Reply

Marsh Posté le 16-10-2002 à 19:13:34    

je crois surtout que cette version de Borland est buggé avec les std::string, j'avais eu un problème similaire avec des 0 qui apparaissait à la fin de mes chaines


---------------
du bon usage de rand [C] / [C++]
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed