Pb de sauvegarde C++

Pb de sauvegarde C++ - C++ - Programmation

Marsh Posté le 17-11-2005 à 11:27:26    

Voilà.... après mes traitements, j'obtiens un tableau de 100 short et j'aurais voulu faire une sauvegarder pour avoir mes valeurs comme ceci dans un bloc note :
 
--------
1
5
3
6
7
3
...
------
 
le pb est que je peut sauvegarder le tableau de short, mais il faut les remettres en format texte et rajouter des caractères de fin de ligne... Et comme je suis hyper débutant en C++, je sais pas encore trop comment faire... si quelqu'un savait comment faire ca serait sympa merci ;)

Reply

Marsh Posté le 17-11-2005 à 11:27:26   

Reply

Marsh Posté le 17-11-2005 à 11:30:23    

bin regarde la doc des streams, plus particulierement ofstream et l'operateur <<
 
(y'a pas de doc centralisé a la javadoc, tape dans google tu devrais trouver ton bonheur)

Reply

Marsh Posté le 17-11-2005 à 11:36:55    

nan mais je sais sauvegarder le tableau j'utilise file, mais le pb, c'est que j'arrive pas a faire une chaine de caractère en fonction de mon tableau de short, avec des caractères de retour à la ligne :'(
 
WriteFile(hListeSolution, tab, sizeof(tab), &dwWritten, NULL);
 
ca me sauvegarde mon tableau, mais ce n'est pas lisible par un fichier texte...
 
au fait, juste comme ca, existe t il une fonction virtuelle permettant de quitter l'application ???

Reply

Marsh Posté le 17-11-2005 à 11:39:44    

ah ouais, mais la tu utilises une fonction ecrivant en binaire, pas en chaine de caractere. Par ailleurs tu passes par l'API Windows (bon, c'est un choix hein), mais pour ce genre de sport je trouve les fichiers du C++ plus maniable.
 
(pourquoi "virtuelle" ?)

Reply

Marsh Posté le 17-11-2005 à 11:40:57    

oui c'est là mon pb, ma chaine est en binaire, non en texte...
 
virtuelle c'est pas une fonction indépendante de tout objet ?

Reply

Marsh Posté le 17-11-2005 à 11:47:29    

bin converti ton truc en texte et envoie la a ton file, si jamais tu tiens a utiliser les fonctions windows
 
genre  
 

Code :
  1. #include <sstream>
  2. void ecritTruc()
  3. {
  4.   std::ostringstream sr;
  5.   sr << monShort << "\n";
  6.   std::string aEcrire = sr.str();
  7.   WriteFile(hListeSolution, aEcrire.c_str(), aEcrire.size(), &dwWritten,NULL);
  8. }


 
Non une fonction virtuelle n'est pas indépendante de tout objet, tu dois confondre. La fonction C exit() marche aussi en C++ mais c'est pa super clean comme maniere de quiiter un programme


Message édité par chrisbk le 17-11-2005 à 11:47:50
Reply

Marsh Posté le 17-11-2005 à 11:49:28    

ok je vais essayé ton truc pour voir... merci de ton aide et pour exit(), ba oui c'est pas propre lol, mais j'ai pas accès à mes objets là ou je veut quitter... je suis pas encore un pro ^^

Reply

Marsh Posté le 17-11-2005 à 11:52:22    

un objet est pas censé quitter un programme, generalement, hein ? :d

Reply

Marsh Posté le 17-11-2005 à 11:54:34    

ba on peut avoir l'objet theApp par exemple qui va utiliser son destructeur pour désallouer les allocations dynamique, donc c'est plus propre que si on quitte de suite... (si je me trompe di le moi :p)

Reply

Marsh Posté le 17-11-2005 à 11:55:16    

heuh ouais ? :d

Reply

Marsh Posté le 17-11-2005 à 11:55:16   

Reply

Marsh Posté le 17-11-2005 à 11:56:00    

a bon je me trompe ??? ô)

Reply

Marsh Posté le 17-11-2005 à 11:56:36    

bin c'est super vague la :d
 
enfin exit() on s'en passe generalement tres bien

Reply

Marsh Posté le 17-11-2005 à 12:05:25    

voilà ce que je fais :
 
 
    // création du fichier    
    hListeSolution = CreateFile("solution.txt", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,
        FILE_ATTRIBUTE_NORMAL, NULL);
     
    if(hListeSolution==INVALID_HANDLE_VALUE)
        return FALSE;
     
    sr << monobjet.m_tab << "\n";  
 
    std::string aEcrire = sr.str();  
   
    // enregistre la solution
    WriteFile(hListeSolution, aEcrire.c_str(), aEcrire.size(), &dwWritten, NULL);
 
et voilà ce que j'obtient dans mon fichier texte :
 
0x4420f0
 
c'est pas tout a fais ca ^^ c'est vraiment chelou ce que j'obtient... pourtant ta solution m'avais l'air pas mal :(

Reply

Marsh Posté le 17-11-2005 à 12:07:35    

ecrit les elements un a un  
genre
 
for (i=0;i<nombreIndiceTableau;i++)
   sr << monobjet.m_tab[i] << "\n";  

Reply

Marsh Posté le 17-11-2005 à 12:15:30    

ba mince ca marche pas, il me dis sr=<incompatible type> le débuggeur... et dans mon fichier texte il me met une liste de caractère carré sans retour chariot a chaque fois :'( là je comprend pas :(

Reply

Marsh Posté le 17-11-2005 à 12:17:11    

[:pingouino][:pingouino][:pingouino]
 
 
bon poste le code, qu'on en finisse [:pingouino]

Reply

Marsh Posté le 17-11-2005 à 12:19:13    

BOOL SaveFile(HWND hwnd, char * pFileName)
{
    if(!pFileName)
        return FALSE;
     
    HANDLE hFile;
    HANDLE hListeSolution;
    HANDLE hListeMasque;
    DWORD  dwWritten;
    std::ostringstream sr;  
    int i;
 
 
    // création du fichier    
    hListeSolution = CreateFile("solution.txt", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS,
        FILE_ATTRIBUTE_NORMAL, NULL);
     
    if(hListeSolution==INVALID_HANDLE_VALUE)
        return FALSE;
     
    for (i=0;i<81;i++)  
        sr << monobjet.m_tab[i] << "\n";
 
    std::string aEcrire = sr.str();  
   
    // enregistre la solution
    WriteFile(hListeSolution, aEcrire.c_str(), aEcrire.size(), &dwWritten, NULL);
         
    // ferme le handle
    CloseHandle(hFile);
    return TRUE;
}
 
voilà ^^

Reply

Marsh Posté le 17-11-2005 à 12:22:22    

et t'as la definition de "monobjet" stp ?

Reply

Marsh Posté le 17-11-2005 à 12:24:33    

#define  OVER  81
 
class Cmonobjet
{
public:
    Cmonobjet();
    ~Cmonobjet();
     
    void CreateDataArray(); // generateur de la grille
 
public:
    short m_tab[81];     // tableau qui contient la solution  
};
 
#endif

Reply

Marsh Posté le 17-11-2005 à 12:26:01    

ah bin jvosi pas trop [:marc]
 
t'es sur que tu regardes le bon fichier ? [:marc] (nan paske t'utilises pas ton parametre filename)
 
févori un bout de solution.txt ici ?


Message édité par chrisbk le 17-11-2005 à 12:26:16
Reply

Marsh Posté le 17-11-2005 à 12:27:28    

oui oui... je regarde le bon... essaye toi sinon tu recopie mon code et tu regarde si ca la fait (voir si c'est que chez moi )

Reply

Marsh Posté le 17-11-2005 à 12:28:31    

solution.txt recopier tel quel :
 
ਸ਼਴ਸਲਲ਼਱ਹ਷ਵ਷ਲ਼ਹ਴ਸਵਲਸ਼਱ਵ਱ਲ਷ਸ਼ਹ਴ਲ਼ਸਹਵ਱ਲ਼਴ਸਸ਼ਲ਷਴ਸ਼਷ਵ਱ਲਲ਼ਸਹਲਸਲ਼ਹ਷ਸ਼਱ਵ਴਱ਲਵਸ਼ਹ਷ਸ਴ਲ਼ਲ਼ਹਸ਼ਸਵ਴਷਱ਲਸ਷਴਱ਲਲ਼ਵਹਸ਼

Reply

Marsh Posté le 17-11-2005 à 12:32:07    

marche tres bien, par contre faudrait lire les warning du compilo, CloseHandle(hFile);  ne peut rien rendre de bon (hFile est pas initialisé)

Reply

Marsh Posté le 17-11-2005 à 12:32:40    

eagle44 a écrit :

solution.txt recopier tel quel :
 
ਸ਼਴ਸਲਲ਼਱ਹ਷ਵ਷ਲ਼ਹ਴ਸਵਲਸ਼਱ਵ਱ਲ਷ਸ਼ਹ਴ਲ਼ਸਹਵ਱ਲ਼਴ਸਸ਼ਲ਷਴ਸ਼਷ਵ਱ਲਲ਼ਸਹਲਸਲ਼ਹ਷ਸ਼਱ਵ਴਱ਲਵਸ਼ਹ਷ਸ਴ਲ਼ਲ਼ਹਸ਼ਸਵ਴਷਱ਲਸ਷਴਱ਲਲ਼ਵਹਸ਼


 
tiens c'est marrant ca. tu bosses sur un winedoze asiat ? :d

Reply

Marsh Posté le 17-11-2005 à 12:37:40    

lol c chelou ca fait ca quand je recopie, mais sur le bloc note, ca me fais pleins de carré serré
 
mais chez toi ca marche ??? O_o mais heuhhhh

Reply

Marsh Posté le 17-11-2005 à 12:53:10    

ba qu'estce que c'est que ce bazard, en mettant coucou dans mon fichier j'obtient ca putuin de mdr :
 
潣捵畯眀

Reply

Marsh Posté le 17-11-2005 à 13:06:44    

nan c'est bon ! ! ! ! c'est qui doit etre trop fatigué... en ouvrant le fichier avec word pad, tout est nickel... un gros merci a toi chrisbk ! ! ! ;)

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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