Disparaition mysterieuse

poseidon2 Messages postés 36 Date d'inscription jeudi 24 juillet 2003 Statut Membre Dernière intervention 12 août 2003 - 7 août 2003 à 15:21
poseidon2 Messages postés 36 Date d'inscription jeudi 24 juillet 2003 Statut Membre Dernière intervention 12 août 2003 - 8 août 2003 à 10:51
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

cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
7 août 2003 à 16:28
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
0
poseidon2 Messages postés 36 Date d'inscription jeudi 24 juillet 2003 Statut Membre Dernière intervention 12 août 2003
7 août 2003 à 16:35
strFilename est de type CString.
0
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
7 août 2003 à 16:39
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
0
poseidon2 Messages postés 36 Date d'inscription jeudi 24 juillet 2003 Statut Membre Dernière intervention 12 août 2003
7 août 2003 à 17:00
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
7 août 2003 à 17:04
Tu veux mettre 13 octets dans un double ?
Ton itemps devrait être de type char*.

Kaid - kaid.fr.st
0
poseidon2 Messages postés 36 Date d'inscription jeudi 24 juillet 2003 Statut Membre Dernière intervention 12 août 2003
7 août 2003 à 17:29
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
0
cs_Kaid Messages postés 949 Date d'inscription mardi 2 octobre 2001 Statut Membre Dernière intervention 8 juillet 2006 1
7 août 2003 à 17:33
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
0
poseidon2 Messages postés 36 Date d'inscription jeudi 24 juillet 2003 Statut Membre Dernière intervention 12 août 2003
8 août 2003 à 10:51
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)
0
Rejoignez-nous