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

  FORUM HardWare.fr
  Programmation

  Besoin d'aide en c++ , Gestion fichier et repertoire !

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Besoin d'aide en c++ , Gestion fichier et repertoire !

n°151703
remixgame
Posté le 05-06-2002 à 14:07:57  profilanswer
 

Voila j'ai un pti probleme quand j'utilise la fonction WriteFile rien ne s'ecrit !
Mais la fonction Createfile marche tres bien !
Jetez un pti coup d'oeil à mon code source ;
 
                 Unit1 .cpp
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
#include <windows.h>
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//------------------------------------------------
---------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 
LPCTSTR lpBuffer = "Ceci est la chaîne qui sera écrite dans le fichier.";
 {       static HANDLE hFile;
 
    hFile = CreateFile( "FICHIERtest.DAT", GENERIC_READ | GENERIC_WRITE,
                                     0, NULL, OPEN_ALWAYS,
                                     FILE_ATTRIBUTE_NORMAL, NULL );
                                 WriteFile( hFile, lpBuffer, strlen( lpBuffer )+1,  
                            NULL, NULL );}
 
 
 
 
}
//---------------------------------------------------------------------------
                      Unit1.h
//---------------------------------------------------------------------------
 
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
        TButton *Button1;
        TEdit *Edit1;
        void __fastcall Button1Click(TObject *Sender);
private: // User declarations
public:  // User declarations
        __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
 
#endif

mood
Publicité
Posté le 05-06-2002 à 14:07:57  profilanswer
 

n°151706
remixgame
Posté le 05-06-2002 à 14:12:00  profilanswer
 

PS connaissez vous un bon site avec plein de tutoriaux en c++ ?
merci  
J'utilse c++ builder 6  
Si il ya une autre facon d'ecrire dans des fichiers faites le moi parvenir merci !

n°151710
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 05-06-2002 à 14:16:18  profilanswer
 

As tu regardé l'erreur que te renvoyait GetLastError() ? Parce que si WriteFile ne marche pas, il te renvoie automatiquement un code d'erreur récupérable par GetLastError().
 
Autre chose : tu ouvres ton fichier, tu écris dedans (ou du moins tu essaies) mais tu ne le ferme pas !!


Message édité par Harkonnen le 06-05-2002 à 14:18:00

---------------
J'ai un string dans l'array (Paris Hilton)
n°151712
remixgame
Posté le 05-06-2002 à 14:18:06  profilanswer
 

Comment il n'y a aucune erreur le programme demare normalement  
je clique sur le bouton
il me crée le fichier
mais n'ecris rien dedans

n°151714
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 05-06-2002 à 14:19:37  profilanswer
 

C'est pas parce que ton programme démarre normalement qu'ile ne contient pas d'erreur !!
 
Si rien ne s'écrit dans ton fichier, c'est parce que WriteFile() échoue ! Et quand WriteFile() échoue, il te renvoie un code d'erreur décrivant le pb, que tu peux récupérer par GetLastError()


Message édité par Harkonnen le 06-05-2002 à 14:20:36

---------------
J'ai un string dans l'array (Paris Hilton)
n°151717
remixgame
Posté le 05-06-2002 à 14:21:04  profilanswer
 

Comment dois je utiliser GelastError() ?

n°151734
remixgame
Posté le 05-06-2002 à 14:32:04  profilanswer
 

Dois je juste le placer juste aprer writefile je vais essayer

n°151736
remixgame
Posté le 05-06-2002 à 14:35:15  profilanswer
 

Il ne me marque rien !

n°151738
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 05-06-2002 à 14:36:12  profilanswer
 

if (!WriteFile( hFile, lpBuffer, strlen( lpBuffer )+1, NULL, NULL )) {
     err = GetLastError();
}
 
regarde ensuite dans ton débugger ou par une MessageBox la valeur de err, puis vois à quelle erreur correspond ce code. corrige ton source en conséquence.


---------------
J'ai un string dans l'array (Paris Hilton)
n°151746
remixgame
Posté le 05-06-2002 à 14:41:31  profilanswer
 

Il ya un probleme il me marque
[C++ Error] Unit1.cpp(27): E2451 Undefined symbol 'err'

mood
Publicité
Posté le 05-06-2002 à 14:41:31  profilanswer
 

n°151749
remixgame
Posté le 05-06-2002 à 14:43:59  profilanswer
 

Maintenant il me mets  
[C++ Error] Unit1.cpp(28): E2277 Lvalue required

n°151752
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 05-06-2002 à 14:45:19  profilanswer
 

Dslé, j'ai oublié de déclarer err.
 
DWORD err = GetLastError();


---------------
J'ai un string dans l'array (Paris Hilton)
n°151755
remixgame
Posté le 05-06-2002 à 14:51:17  profilanswer
 

Je clique mais ya rien qui se passe !  
A part la création du fichier
au faite j'ai un avetissement au compilage
[C++ Warning] Unit1.cpp(28): W8004 'err' is assigned a value that is never used

n°151775
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 05-06-2002 à 15:09:56  profilanswer
 

Y'a rien qui se passe, c'est normal !
Tu mets un breakpoint sur la ligne contenant le GetLastError, tu lances le prog, il va s'arréter dès qu'il sera arrivé sur cette ligne.
Tu executes cette ligne en traçant, puis tu vérifies la valeur de err. A partir de la, tu recherches la description de l'erreur correspondante.
Oublie le warning, il signifie que err n'est jamais utilisé, mais c'est pas grave.


---------------
J'ai un string dans l'array (Paris Hilton)
n°151784
remixgame
Posté le 05-06-2002 à 15:18:35  profilanswer
 

Qu'appelle tu pars tracer ??
Quand je demare le programme il s'arrette et reviens a la page d'edition  
A sa gauche il ya une boule rouge et un fleche verte ??
Que dois je faire ??

n°151804
remixgame
Posté le 05-06-2002 à 15:25:28  profilanswer
 

Il me renvoie la valeur 87 ??
Quesque c'est je ne sais pas ??
 
Pour avoir la valeur 87 j'ai rajouter l'objet Edit
Voila mon programme
 
 
//------------------------------------------------
---------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//------------------------------------------------
---------------------------
 
void __fastcall TForm1::Button1Click(TObject *Sender)
{
LPCTSTR lpBuffer = "Ceci est la chaîne qui sera écrite dans le fichier.";
{       static HANDLE hFile;
 
   hFile = CreateFile( "FICHIERtest.DAT", GENERIC_READ | GENERIC_WRITE,
                                    0, NULL, OPEN_ALWAYS,
                                    FILE_ATTRIBUTE_NORMAL, NULL );
                               if (!WriteFile( hFile, lpBuffer, strlen( lpBuffer )+1, NULL, NULL )) {
DWORD    err = GetLastError();
Edit1->Text = err ;// J'obtient la valeur 87
}}
}
//----

n°151828
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 05-06-2002 à 15:41:43  profilanswer
 

erreur 87 = paramètre incorrect
 
tu as un paramètre incorrect dans ta fonction WriteFile, à ton avis, lequel c'est ?
 
cherche le, si tu trouves pas, je t'aiderai.
 
pour info :  
 
la signification des codes d'erreur de GetLastError() :
http://msdn.microsoft.com/library/ [...] t_7oz7.asp


---------------
J'ai un string dans l'array (Paris Hilton)
n°154836
remixgame
Posté le 09-06-2002 à 11:13:29  profilanswer
 

Mon pc a plante mortel !  
Et je ne peux plus progz par contre  
je vais en recevoir un nouveau samedi si tous se passe bien
@+
J'esssaierais de résoudre ca @+

n°154838
verdoux
And I'm still waiting
Posté le 09-06-2002 à 11:27:20  profilanswer
 

Faut fermer le fichier ou faire un flush pour qu'il y ait quelque chose dans le fichier.

n°154867
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 09-06-2002 à 13:06:06  profilanswer
 

Bon, je vais quand même te donner la solution  :D  
 
Remplace ceci :

Code :
  1. WriteFile(hFile, lpBuffer, strlen( lpBuffer )+1, NULL, NULL);


par ceci :

Code :
  1. DWORD NbLus=0;
  2. WriteFile(hFile, lpBuffer, strlen( lpBuffer )+1, &NbLus, NULL);


Et tu dois aussi fermer ton fichier.
 
A+


---------------
J'ai un string dans l'array (Paris Hilton)
n°155167
remixgame
Posté le 09-06-2002 à 20:40:06  profilanswer
 

Merci bcp j'ai pas encore essayer !
Mais je l'essaierais au plus vite quand j'aurais mon nouveau pC !!
Vendredi soir  
 
J'espere que tous se deroulera bien ?
Sinon pour lire dans un fichier
faut aussi que je rajoute &NbLus ?
Que veut dire cette fonction &NbLus merci !
 [:spytec cdr]  [:sivep]

n°155172
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 09-06-2002 à 20:54:22  profilanswer
 

Non, tu ne dois pas rajouter NbLus, mais remplacer l'avant dernier paramètre (NULL), par &NbLus. C'était le paramètre invalide qui te provoquait l'erreur 87 (j'aurais voulu que tu le trouves toi même, mais bon... :d)
Ce paramètre (et non cette fonction) est un pointeur vers la variable qui recevra le nombre de caractères écrits. Ce pointeur ne doit pas être NULL.
La variable NbLus est déclarée sur la ligne du dessus, que tu devras inclure dans ton source.
 
A+


---------------
J'ai un string dans l'array (Paris Hilton)
n°155198
remixgame
Posté le 09-06-2002 à 21:30:15  profilanswer
 

je ne l'aurais pas trouver de toute facon alors merci bcp  
sinon une tite question !
Comment puis je faire en c++ ou mieux dans c++ builder  
Un system de Fenetre dans une fenetre ?
je sais c'est compliqué je reexplique  
Comme dans Excel :
Une grande fenetre avec le fond gris et le menu
Et des fenetres qui s'ajoute dans se fond gris au fur et à mesure des élements selectionnés dans le menus , ceux ci étant tous différents (toutes les fenetres sont sont differentes et sont implanté dans la premiere fenetre avec le menu )
Si vous comprenez répondez moi merci !.

mood
Publicité
Posté le   profilanswer
 


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

  Besoin d'aide en c++ , Gestion fichier et repertoire !

 

Sujets relatifs
Comment changer la casse d'une liste de fichier ?[java] execution de fichier jar
J'ai besoin d'aide pour creer environ 1500 liens HTML ...tester l'extension d'un fichier sous unix
Débutant en C++ : Besoin d'aide !Générer un tableau de valeurs à partir d'un fichier
Aide sur un servlet[c++] Comment trouver une chaine définie dans un fichier texte ?
Plus de sujets relatifs à : Besoin d'aide en c++ , Gestion fichier et repertoire !


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