Disparaition mysterieuse

Signaler
Messages postés
36
Date d'inscription
jeudi 24 juillet 2003
Statut
Membre
Dernière intervention
12 août 2003
-
Messages postés
36
Date d'inscription
jeudi 24 juillet 2003
Statut
Membre
Dernière intervention
12 août 2003
-
Voila. Dans le code ci dessous J'ai une valeur dans la variable strFilename:

hDLL = LoadLibrary("HptSimLibVC");
if (hDLL != NULL){
   __DBG_LOG("le prog trouve la dll et entre dans la fonction");

   //fonction recuperant le timestamp
   lpfnDllFunc1 = (LPFNDLLFUNC1)GetProcAddress (hDLL,"getTimestamp");
   if (!lpfnDllFunc1){
    // handle the error
    FreeLibrary(hDLL);       
    __DBG_LOG("le prog ne trouve pas la fonction dans la dll");
  }
  else{
    // call the function
    uReturnVal = lpfnDllFunc1();
    __DBG_LOG("le prog trouve la fonction dans la dll");
    __DBG_LOG("*** TEST *** timeStamp = %.lf", uReturnVal);
 }
}
QueryPerformanceCounter((LARGE_INTEGER*)&lTimeNow);
lTimeNow -= lTimeInit;
lTimeWait = lNextTime - lTimeNow;
strFilename=rep;
//Ajout du numero d'image
char ID[1];
_itoa(IndexPhoto,ID,10);
strFilename+=ID;
__DBG_LOG("nom de fichier : %s",strFilename);
//recuperation date au format PC
HANDLE hfl = CreateFile(strFilename,GENERIC_READ,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_READONLY,NULL);
if(hfl != INVALID_HANDLE_VALUE){
   DWORD dWrited;
   double itemps;
   int OK=ReadFile(hfl, &itemps, 13, &dWrited, 0);
   if(OK == 0)
   __DBG_LOG("Erreur de ReadFile");
   else
   __DBG_LOG("%.lf",itemps);
   CloseHandle(hfl);			  
   double htemps=uReturnVal;
   //test de synchro
   if(itemps >= htemps){
    double difference=itemps-htemps;
    pApp->pDisplay->displayFrame((const char *)strFilename);
     __DBG_LOG("itemps>htemps. Attente");
   }
   else{
     IndexPhoto++;
   }
}else{
  __DBG_LOG("erreur ouverture fichier");
IndexPhoto++;
 }


Cependant elle disparait lorsque que j'essaye de lui ajouter le chiffe a la fin. Ce n'est pas une erreur du a l'ajoue du chiffre, apres plusieur essai j'en suis sur mais autre chose....

Si ca vous inspire moa ca fait 3h que je suis dessus et %-6

8 réponses

Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

Quel est le type de strFilename ? Si ce n'est qu'un simple char* tu ne peux pas concatener deux chaines comme ca, tu dois utiliser la fonction strcat().

Kaid - kaid.fr.st
Messages postés
36
Date d'inscription
jeudi 24 juillet 2003
Statut
Membre
Dernière intervention
12 août 2003

strFilename est de type CString.
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

Alors le problème vient certainement de ton ID. Déclaré comme un seul caractère il ne peut pas contenir une chaine de caractères car il y a juste la place pour mettre le zéro final dedans.

Kaid - kaid.fr.st
Messages postés
36
Date d'inscription
jeudi 24 juillet 2003
Statut
Membre
Dernière intervention
12 août 2003

Merci ca devait etre ca(en fin de journée apres avoir bataille je ne suis plus sur de rien)
Sinon autre pb:
Pkoi la commande si dessous me renvoi dans itemps 0 alors qu'elle devrait me renvoyer les 13 caractere suivants:1069870231059 ?
if(hfl !=   INVALID_HANDLE_VALUE){
DWORD dWrited;
double itemps;
int OK=ReadFile(hfl, &itemps, 13, &dWrited, 0);
if(OK == 0)
   __DBG_LOG("Erreur de ReadFile");
else
  __DBG_LOG("%.lf",itemps);


Merci encore
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

Tu veux mettre 13 octets dans un double ?
Ton itemps devrait être de type char*.

Kaid - kaid.fr.st
Messages postés
36
Date d'inscription
jeudi 24 juillet 2003
Statut
Membre
Dernière intervention
12 août 2003

En fait apres j'ai besoin de le comparer a une autre valeur numerique pour savoir laquel des deux est la lus grande.
Ce pourquoi j'ai mis un double.
J'ai essayé avec un int ou un long mais a chque fois cela ne me prend pas les 13 caracteres et me les transforme en valeur negative toute bizarre
Messages postés
949
Date d'inscription
mardi 2 octobre 2001
Statut
Membre
Dernière intervention
8 juillet 2006

Tu es obligé d'utiliser un tableau de caractères pour lire des informations dans un fichier. A toi ensuite de convertir ces caractères en double ou autre pour les comparer.

Kaid - kaid.fr.st
Messages postés
36
Date d'inscription
jeudi 24 juillet 2003
Statut
Membre
Dernière intervention
12 août 2003

c'étais bien ca merci.
Sion vu que j'ai asez bataillé pour la trouver, voici la fonction permettant de faire un cast entre un (char *) et un double :
strtod . Je pense que ca pourra servir :big)