Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1167 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++] TStringGrid vers Fichier => Help !!!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C++] TStringGrid vers Fichier => Help !!!

n°1114821
Deton@tor
Posté le 09-06-2005 à 20:43:26  profilanswer
 

Salut à tous,
 
Je suis en 1ere année de BTS Informatique et réseau et je fais un stage de 6 semaines en entreprise.
 
Mon projet est la création d’une interface permettant de saisir et modifier des champs a partir d’un fichier .CSV.
 
Ce fichier est sous forme de textes séparé par des points-virgules pour délimiter les colonnes et des retours chariot (\n) pour les lignes.
J’ai donc décider de le lire le fichier caractère après caractère en détectant les « ; » et « \n » pour tout insérer dans une TStringGrid.
Mais pour réécrire le tout dans un nouveau fichier, je n’ai que des hiéroglyphes.
 
J’utilise le fread pour lire. Mais pour écrire, j’ai des petits problemes avec fwrite.
 
Help-me SVP, sinon j’aurrai une sale note a mon projet  :cry:

mood
Publicité
Posté le 09-06-2005 à 20:43:26  profilanswer
 

n°1115038
antp
Super Administrateur
Champion des excuses bidons
Posté le 09-06-2005 à 23:23:49  profilanswer
 

fread et fwrite c'est du C, pas du C++ :o
Il faudrait que tu postes un petit bout de code de comment t'écris.  
Je devine que tu balances des AnsiString directement dans le fichier (chaînes Borland/C++ mélangées à des fonction C... ça ne fait pas bon ménage)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1115094
Deton@tor
Posté le 09-06-2005 à 23:46:55  profilanswer
 

Ben c'est peut-etre un peu ca  :sweat:  
 
 
En fait, les données sont OK, même à l'affichage, c'est juste quand je l'écris ds le fichier que ca ne va pas.
 
Mon bout de code permettant l'écriture :
 

Code :
  1. int colonne=1;
  2. int ligne=1;
  3. char p_virgule=';';
  4. char saut_de_ligne='\n';
  5. FILE *hfile_enreg = fopen("totosave.csv","a" );   // fichier destination
  6. AnsiString cellule;  // chaine contenant la case du tableau
  7.         do
  8.         {
  9.         colonne=1; // initialise à la 2eme colonne (la 1ere colonne du tableau est fixe)
  10.                 do
  11.                 {
  12.                 cellule=Tableau->Cells[colonne][ligne].c_str();  // on met la case du tab ds cellule
  13.                 fwrite(&cellule,cellule.Length(),1,hfile_enreg);  // On écrit la cellule ds hfile_enreg
  14.                 fwrite(&p_virgule,1,1,hfile_enreg);  // On ecrit un point-virgule au changement de colonne
  15.                 colonne++;
  16.                 }while(colonne<=22); // jusqu'à 22 colonnes
  17.         ligne++;
  18.         fwrite(&saut_de_ligne,1,1,hfile_enreg); // on insere le caractere '\n' a chaque fin de ligne
  19.         }while(ligne<Tableau->RowCount); // jusqu'a balayage total du tableau
  20. }


 
Contenu Brut du fichier de départ :

Citation :


od2_A21103C;Con_gelifica;ANA;EQUIP1;OW23531;100;0;300;0;300;0;Cp;;WINGATES;VALEUR;;N;;;;;
od2_A21103M;Mes_gelifica;ANA;EQUIP1;OW23530;100;0;300;0;300;0;Cp;;WINGATES;VALEUR;;N;;;;;
od2_A21103V;Van_gelifica;ANA;EQUIP1;OW23532;100;0;100;0;100;0;%;;WINGATES;VALEUR;;N;;;;;
od2_A21302C;Con_av_pots;ANA;EQUIP1;OW23534;100;0;300;0;300;0;Cp;;WINGATES;VALEUR;;N;;;;;
od2_A21302M;Mes_av_pots;ANA;EQUIP1;OW23533;100;0;300;0;300;0;Cp;;WINGATES;VALEUR;;N;;;;;


 
Contenu brut du fichier d'arrivé obtenu :

Citation :


€óŠ ÷ Šy;˜óŠ ÷ Šy@;´óŠ;ÄóŠ ÷;ØóŠ ÷;ìóŠ;ü; ôŠ;;,ôŠ;<;Lô;;€óŠ ÷ ;˜óŠ ÷;;€;;;;;;
€óŠ ÷ Šy;˜óŠ ÷ Šy@;´óŠ;ÄóŠ ÷;ØóŠ ÷;ìóŠ;ü; ôŠ;;,ôŠ;<;Lô;;€óŠ ÷ ;˜óŠ ÷;;€;;;;;;
€óŠ ÷ Šy;˜óŠ ÷ Šy@;´óŠ;ÄóŠ ÷;ØóŠ ÷;ìóŠ;ü; ôŠ;;,ôŠ;<;L;;€óŠ ÷ ;˜óŠ ÷;;€;;;;;;
€óŠ ÷ Šy;˜óŠ ÷ Šy;°óŠ;ÀóŠ ÷;ÔóŠ ÷;èóŠ;ø;ôŠ;;(ôŠ;8;Hô;;€óŠ ÷ ;˜óŠ ÷;;€;;;;;;
€óŠ ÷ Šy;˜óŠ ÷ Šy;°óŠ;ÀóŠ ÷;ÔóŠ ÷;èóŠ;ø;ôŠ;;(ôŠ;8;Hô;;€óŠ ÷ ;˜óŠ ÷;;€;;;;;;


 
Comme il y a surement plus propre comme code, si vous avez un petit morceau de code, ca serait super!
 
THX d'avance :hello:


Message édité par Deton@tor le 10-06-2005 à 00:46:46
n°1115122
antp
Super Administrateur
Champion des excuses bidons
Posté le 09-06-2005 à 23:56:36  profilanswer
 

C'est quoi ça comme type "String" ? :??: std::string ? ou AnsiString ?
 
// On écrit la cellule ds hfile_enreg
en fait tu écris l'adresse de la cellule :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1115159
Deton@tor
Posté le 10-06-2005 à 00:15:44  profilanswer
 

Je sais bien que mon code n'est pas terrible...

 

Mon but est d'écrire des AnsiString venant du tableau dans un fichier texte.

 

Toutes les idées sont les bienvenues :jap:


Message édité par Deton@tor le 29-02-2008 à 03:27:49
n°1115163
antp
Super Administrateur
Champion des excuses bidons
Posté le 10-06-2005 à 00:21:14  profilanswer
 

Réponds à ma question :o
Et vire le & devant "cellule" quand tu l'écris...


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1115167
Deton@tor
Posté le 10-06-2005 à 00:28:22  profilanswer
 

C'est du AnsiString, j'ai mal recopié le code en écrivant.
Si je vire le &, Borland me dit :
Mauvaise correspondance de type dans le paramètre '__ptr'('const void*' désiré, 'AnsiString' obtenu)


Message édité par Deton@tor le 29-02-2008 à 03:28:17
n°1115176
antp
Super Administrateur
Champion des excuses bidons
Posté le 10-06-2005 à 00:37:06  profilanswer
 

bah oui mais il manque un c_str() à la fin :o (par contre à la ligne d'au-dessus il est inutile).
fwrite il connaît pas les AnsiString
(puis une AnsiString c'est un objet dans un fichier c'est pas super utile...)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°1115183
Deton@tor
Posté le 10-06-2005 à 00:44:54  profilanswer
 

A ouai, ca marche nikel comme ca.
Je pensais qu'il fallait le mettre à la case du tableau directement le c_str().
 
Bon cela à été résolu rapidement merci encore antp :jap:
 
PS. :o   :D

n°1115184
antp
Super Administrateur
Champion des excuses bidons
Posté le 10-06-2005 à 00:45:59  profilanswer
 

c_str() génère un char*, pour les échanges avec des fonctions C donc (ou pour les trucs de C++ qui ne sont pas faits par Borland, càd pas prévus pour des AnsiString)


Message édité par antp le 10-06-2005 à 00:46:32

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
mood
Publicité
Posté le 10-06-2005 à 00:45:59  profilanswer
 

n°1115185
Deton@tor
Posté le 10-06-2005 à 00:50:14  profilanswer
 

A OK merci pour toutes ces infos tu me sauves mon projet car sans écriture dans un fichier, ca n'aurrai plus d'interêt.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++] TStringGrid vers Fichier => Help !!!

 

Sujets relatifs
ouvrir un fichier excel avec buildersauvegarder un fichier
Récupération d'une donnée d'un fichierrécupérer chaine dans fichier txt
Extraction de données vers un userformjustification d'un fichier qui existe deja!! VBA
débutant help pleasecréer un raccourci d'un fichier depuis dos
importer des noms contenu dans un fichier excel dans outlookLire un fichier texte avec un .bat
Plus de sujets relatifs à : [C++] TStringGrid vers Fichier => Help !!!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR