Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

4 réponses
Avatar
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++)

4 réponses

Avatar
Benoit Rousseau
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/

Avatar
Vaguener Frank
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" a écrit dans le message de
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/



Avatar
kanze
"Vaguener Frank" wrote in message
news:<3fd6eff4$0$2879$...

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

Avatar
Vaguener Frank
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);