Bonjour
Je n'arrive pas à comprendre pourquoi quand je compile :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
void enregistrementErreur ( int compte, ... )
{
	va_list liste;
	va_start( liste, compte);
	char* text;
 
	DateTime^ DateEtHeure = gcnew DateTime;
	DateEtHeure = DateTime::Now;
 
	//Ouverture du fichier journal
	String^ path = Directory::GetCurrentDirectory() + "\\EnregistrementErreurs.txt";
 
	StreamWriter^ sw = File::AppendText ( path );
	sw->WriteLine( DateEtHeure );
 
	for ( int i = 0; i < compte; i++ )
	{
		text = va_arg ( liste, char* ); //ICI text = "test" par exemple
		sw->Write ( "essai" );
		sw->Write ( text );   //warning C4800 ICI!!! ????
	}
	sw->WriteLine();
 
	//Cloture du fichier journal
	if ( sw )
		delete (IDisposable^)sw;
 
	va_end( liste );
 
}
le compilateur me dit :
.\Annexes.cpp(312) : warning C4800: 'char *': valeur forcée à la valeur booléenne 'true' ou 'false' (avertissement sur les performances)
Là je ne comprends pas ce qu'il se passe!

Mais pourquoi donc, la variable, char* text, est elle convertie en bool à l'éxécution de sw->Write ( text );alors que sw->Write ( "essai" ); ecrit bien "essai" dans le fichier journal?

J'ai essayé de remplacer char* text; par wchar_t text; ... là ça plante à l"éxécution! A la ligne text = va_arg ( liste, wchar_t ); j'ai :
Une exception non gérée du type 'System.InvalidCastException' s'est produite dans essai.exe
Informations supplémentaires*: Le cast spécifié n'est pas valide.


Merci de m'aider