Problème d'ouverture de fichier avec Borland C++ Builder...

Le
Vaguener Frank
Voila, j'ai un Opendialog, un fichier binaire de structure

const matrixHeight = 120;
const matrixWidth = 160;


/* Format HSV */
struct HSVCameraMatrix
{
int
H[matrixHeight][matrixWidth],S[matrixHeight][matrixWidth],V[matrixHeight][ma
trixWidth];
};

Et j'arrive pas à comprendre comment ouvrir ce ¨.?! de fichier

mon code est le suivant

od->Execute();
char buffer[256];
GetWindowsDirectory(buffer, sizeof(buffer));
AnsiString asFileName = FileSearch(od->FileName, GetCurrentDir() +
AnsiString(";") + AnsiString(buffer));
if (asFileName.IsEmpty())
ShowMessage(AnsiString("Fichier non existant"));
else ifstream FichierIn (od->FileName,ios::in|ios::binary);


Erreur : [C++ Erreur] Unit1.cpp(42): E2285 Impossible de trouver une
correspondance pour 'ifstream::basic_ifstream(AnsiString,enum)'

Bon et la encore, j'sais même pas comment charger le fichier dans la
structure vu que c'est un fichier d'1 record

Si quelqu'un peut m'aider avant que je me suicide ;) (c'est pas DU TOUT
compliqué le c++)
  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
Benoit Rousseau
Le #133403
Vaguener Frank wrote:
Voila, j'ai un Opendialog, un fichier binaire de structure

const matrixHeight = 120;
const matrixWidth = 160;


/* Format HSV */
struct HSVCameraMatrix
{
int
H[matrixHeight][matrixWidth],S[matrixHeight][matrixWidth],V[matrixHeight][ma
trixWidth];
};

Et j'arrive pas à comprendre comment ouvrir ce ¨.?! de fichier

mon code est le suivant

od->Execute();
C'est quoi od ? on va supposer que c'est ton OpenDialog...


char buffer[256];
GetWindowsDirectory(buffer, sizeof(buffer));
AnsiString asFileName = FileSearch(od->FileName, GetCurrentDir() +
AnsiString(";") + AnsiString(buffer));
if (asFileName.IsEmpty())
ShowMessage(AnsiString("Fichier non existant"));
else { ifstream FichierIn (od->FileName,ios::in|ios::binary); }


Ici ton ifstream n'est déclaré qu'entre les { } (que j'ai rajoutées).
Mais je pense que tout le code d'ouverture se trouvera dans ce else...

Erreur : [C++ Erreur] Unit1.cpp(42): E2285 Impossible de trouver une
correspondance pour 'ifstream::basic_ifstream(AnsiString,enum)'
Le ifstream demande une chaine de caractères (const char*), pas un

AnsiString. Tu dois bien avoir une fonction de conversion genre c_str()
ou quelquechose comme ça (a chercher dans la doc de l'API)
os->FileName.c_str() (?)



--
--------------------------------------------
Benoît Rousseau : roussebe at spray dot se
Jouez en programmant : http://realtimebattle.sourceforge.net/

Vaguener Frank
Le #133275
Effectivement, merci mais

ifstream FichierIn (od->FileName.c_str(),ios::in|ios::binary);

FichierIn.seekg(0, ios::end);
int longueur_fichier = FichierIn.tellg();
FichierIn.seekg(0, ios::beg);
FichierIn.read(TableauHsv, longueur_fichier);};

ne marche pas... on dirait qu'il ne veut pas charger ca dans la structure...

... mais quel bordel ce C++ ? ;)

"Benoit Rousseau" news:3fd6e93a$0$271$
Vaguener Frank wrote:
Voila, j'ai un Opendialog, un fichier binaire de structure

const matrixHeight = 120;
const matrixWidth = 160;


/* Format HSV */
struct HSVCameraMatrix
{
int

H[matrixHeight][matrixWidth],S[matrixHeight][matrixWidth],V[matrixHeight][ma


trixWidth];
};

Et j'arrive pas à comprendre comment ouvrir ce ¨.?! de fichier

mon code est le suivant

od->Execute();
C'est quoi od ? on va supposer que c'est ton OpenDialog...


char buffer[256];
GetWindowsDirectory(buffer, sizeof(buffer));
AnsiString asFileName = FileSearch(od->FileName, GetCurrentDir() +
AnsiString(";") + AnsiString(buffer));
if (asFileName.IsEmpty())
ShowMessage(AnsiString("Fichier non existant"));
else { ifstream FichierIn (od->FileName,ios::in|ios::binary); }


Ici ton ifstream n'est déclaré qu'entre les { } (que j'ai rajoutées).
Mais je pense que tout le code d'ouverture se trouvera dans ce else...

Erreur : [C++ Erreur] Unit1.cpp(42): E2285 Impossible de trouver une
correspondance pour 'ifstream::basic_ifstream(AnsiString,enum)'
Le ifstream demande une chaine de caractères (const char*), pas un

AnsiString. Tu dois bien avoir une fonction de conversion genre c_str()
ou quelquechose comme ça (a chercher dans la doc de l'API)
os->FileName.c_str() (?)



--
--------------------------------------------
Benoît Rousseau : roussebe at spray dot se
Jouez en programmant : http://realtimebattle.sourceforge.net/



kanze
Le #135171
"Vaguener Frank" news:
Effectivement, merci mais

ifstream FichierIn (od->FileName.c_str(),ios::in|ios::binary);

FichierIn.seekg(0, ios::end);
int longueur_fichier = FichierIn.tellg();
FichierIn.seekg(0, ios::beg);
FichierIn.read(TableauHsv, longueur_fichier);};

ne marche pas... on dirait qu'il ne veut pas charger ca dans la
structure...


Il faudrait que tu nous expliques ce que tu veux faire vraiment.

En attendant, il y a une chose qui est certaine : le type de retour de
istream::tellg() n'est pas int. Il n'est même pas garanti qu'on peut le
convertir implicitement en int, et il n'est pas garanti que même si la
conversion marche, la valeur de l'int ait une signification quelconque.

--
James Kanze GABI Software mailto:
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16

Vaguener Frank
Le #137202
Voila, j'ai finalement trouvé

pour ceux que ca intéresse, voici le code :

fichier = fopen(monOd->FileName.c_str(),"r+");
fread(&TableauHsv,sizeof(TableauHsv),1,fichier);
Poster une réponse
Anonyme