begin process at 2012 05 29 17:52:05
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Pb avec XP SP2


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Pb avec XP SP2

vendredi 19 août 2005 à 17:40:49 | Pb avec XP SP2

obby

Salut,

J’ai développé un soft qui affiche dans des combobox un nom lorsqu’il trouve deux fichiers avec un nom quasi-identique, la différence étant que la fin de fichier se termine par $f et $d. Lorsqu’il voit que les deux fichiers sont présents, il ajoute à la combobox.
Cela marche très bien sur un XP SP1 (mon PC ou j’ai développé le soft) mais une fois le soft installé sur une autre machine ayant un XP SP2, cela ne fonctionne plus aussi bien, il n’affiche pas toute les références existant dans certains répertoires.

Quelqu'un saurait-il d'ou cela vient?

Merci



vendredi 19 août 2005 à 17:46:04 | Re : Pb avec XP SP2

vinc1008881


il faut recompiler ton programme a mon avis, le code source est potable mais pas le binaire, peut etre que certaine fonction Windows ont ete deplacée ??
Il serais judicieux de poster ton code, du moins les parties qui semblerai ne pas marché,

voila, @+,  vinc1008881
vendredi 19 août 2005 à 17:50:28 | Re : Pb avec XP SP2

obby

voila le code :
//Vide le combobox pour mise à jour
    if(m_ComboModele.GetCount () != 0)
        {
            for(int i=0;i<m_ComboModele.GetCount ();++i)
                m_ComboModele.ResetContent ();
        }
    //On récupère le repertoire choisi dans la première combobox
    int nIndex = m_ComboMarque.GetCurSel ();
    m_ComboMarque.GetLBText (nIndex,m_SMarque);
    CString path;
    path = m_StrPath+"telephone_lk\\"+m_SMarque;

   
    CString szExtension        = "*f.gif";        // image de face
    CString szExtension2    = "*d.gif";        // image de dos

    //On concatène le caractère '\'
    path += "\\";
    //Puis l'extension
    CString strpath  = path + szExtension;
    CString strpath2 = path + szExtension2;
   
    // Va contenir les informations de la recherche
    WIN32_FIND_DATA File, File2;
    HANDLE liste, liste2;
   
    //On cherche les deux premiers Fichiers
    liste  = FindFirstFile(strpath, &File);
    liste2 = FindFirstFile(strpath2, &File2);
   
    //On recupere les noms de fichiers
    CString str;
    CString str2;
    str.Format((CString)File.cFileName);
    str2.Format((CString)File2.cFileName );

    //On enlève l'extension
    CString tmp1 = str.SpanExcluding (".");   
    CString tmp2 = str2.SpanExcluding (".");
   
    //On cherche la position a partir de laquelle les deux fichiers ont un nom différent
    int index = tmp1.ReverseFind ('$');        //*****$f.gif
    int index2 = tmp2.ReverseFind ('$');    //*****$f.gif

    //on recupère les noms qui doivent être les meme
    CString stra1 = str.Left (index);
    CString stra2 = str.Left (index2);

   
    //vérification que les deux fichiers correspondent au meme nom
    if(stra1 == stra2)
    {
        //On ajoute le fichier, à la liste
        m_ComboModele.AddString (stra1);
       
    }

    //Tant qu'il existe un fichier suivant
    while((FindNextFile(liste, &File))&&(FindNextFile(liste2, &File2)))
    {
        //Si ce fichier est un répertoire
        if(File.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
        {
        }
        else    //Sinon
        {     
            str.Format((CString)File.cFileName);
            str2.Format((CString)File2.cFileName );
           
            //mise en forme de la chaine de charactère
            tmp1 = str.SpanExcluding (".");
            tmp2 = str2.SpanExcluding (".");

            index = tmp1.ReverseFind ('$');
            index2 = tmp2.ReverseFind ('$');

            stra1 = str.Left (index);//str.SpanExcluding ("f");
            stra2 = str.Left (index2);//str2.SpanExcluding ("d");

            if( stra1 == stra2)
            {
                //On ajoute le fichier, à la liste
                if (stra1 != ' ')
                {
                    m_ComboModele.AddString (stra1);
                }
            }
        }
    }   
    //On arette la recherche.
    FindClose(liste);

    //par défaut, on affiche le premier fichier dans la combobox
    m_ComboModele.SetCurSel(0);

vendredi 19 août 2005 à 18:00:55 | Re : Pb avec XP SP2

BruNews

Administrateur CodeS-SourceS
Les APIs de gestion fichiers, comme la plupart des autre, n'ont pas bougé d'un iota sinon plus rien ne fonctionnerait.

C'est quoi tout ce mic mac de recopie des cFileName dans des CString (avec les alloc mémoire que ça implique), les reverse, etc... Apprends à manier les pointeurs. Doit être aussi 'rapide' que du VB ton truc.

ciao...
BruNews, MVP VC++
vendredi 19 août 2005 à 18:05:49 | Re : Pb avec XP SP2

obby

Ba dsl mais les CString c plus facile à manipuler, bon nombre de fonctions sont déjà programmé, j'ai pas envie de tout me retaper. Mais bon, le pb il est pas la, du moins je crois pas.


vendredi 19 août 2005 à 18:32:22 | Re : Pb avec XP SP2

BruNews

Administrateur CodeS-SourceS
et le vb c'est encore plus facile mais la paie n'est pas la même, allons ce n'est pas une façon de penser dans la prog.

char *c, *d;
DWORD len;

c = f1.cFileName;
while(*c) { // RECHERCHE DU $
  if(*c == '$') goto found1;
  c++;
}
// ici pas trouvé on passe aux fichiers suivants

found1:
len = c - f1.cFileName;
idem avec d sur f2.cFileName


if(len != (d - f2.cFileName)) PAS BON

Ensuite un memcmp sur len suffit.

ciao...
BruNews, MVP VC++
vendredi 19 août 2005 à 18:50:30 | Re : Pb avec XP SP2

obby

euh oui t'a pas moyen d'être un peu plus explicite, je comprend pas tout. le "idem avec d sur f2.cFileName" tu entend koi par la?

vendredi 19 août 2005 à 19:11:25 | Re : Pb avec XP SP2

BruNews

Administrateur CodeS-SourceS

en fait c suffira, pas besoin de d:
c = f2.cFileName;
while(*c) { // RECHERCHE DU $
  if(*c == '$') goto found2;
  c++;
}
ici pas de '$', passer aux fichiers suivant

found2:
if(len != (c - f2.cFileName)) PAS BON, fichiers suivants

if(!memicmp(f1.cFileName, f2.cFileName, len)) FICHIERS T'INTERESSENT

et y a pas une alloc ni desalloc ni retournement ni rien d'inutile et donc nuisible.

ciao...
BruNews, MVP VC++

vendredi 19 août 2005 à 19:22:54 | Re : Pb avec XP SP2

obby

Dans le déroulement de la fonction, les found1 et found2: je peu les mettre ou je veu ou c séquentiel? J'ai du mal à voir comment organiser tout ca.


vendredi 19 août 2005 à 19:25:55 | Re : Pb avec XP SP2

obby

en fait c'est qu'il faut placer dans des boucles :
//Tant qu'il existe un fichier suivant
    while((FindNextFile(liste, &File))&&(FindNextFile(liste2, &File2)))
    {
........
}



1 2

Cette discussion est classée dans : pb, xp, soft, sp2, développé


Répondre à ce message

Sujets en rapport avec ce message

pb de socket sous windows XP [ par fr1man ] j'ai réalisé un "chat" avec les sockets en VC++6. il fonctionne très bien sous NT et 2000 mais pas sous XP. d'où vient le problème ?j'utilise l'API wi Pb windows XP [ par c2millet ] Voilà g réalisé une aplli qui envoie des mails. Elle fonctionne sous Win98 et Win2000. Mais sous XP tout se complique.1erv pb: J'ai une Edit box Multi stack bluetooth windows XP SP2 MSDN [ par chandy ] Bonjour,Quelqu'un aurait-il des exemples sous visual C++ .net utilisant la stack BT de windows XP SP2 ? dont la description se trouve :http://msdn.mic Pb Kernel32 [ par UnderFlow ] Pb passage win Xp -> 98. Bonjour, Alors voilà, j'ai développé un petit programme en C que j'ai compilé sous dev-C++ (ds mon environnement XP). Il s'e Link CBuilder6 [ par Ravaner ] Bjr à tous,Je migre mes programmes de Win-98 vers XP. Ce qui tournait sans pb, ne veut plus se linker avec CBuilder-6 sous XP. Le message d'erreur men SendMessage/FindWindow - problème [ par badrbadr ] Salut;Vous savez s'il arrive des fois que SendMessage et FindWindow ne fonctionnent pas sur un Windows XP SP2 en réseau (client Novell). J'ai fais un activation raw socket pour win XP SP2 [ par sendouda ] bonjour tout le monde; est ce qu'il y a un moyen pour activer les raw sockets pour TCP dans le cas de WIN XP SP2? Pb de portabilité XP ? [ par ricky78 ] J'ai un programme codé en visual c++ 6.0 compilé sous windows 98.Celui-ci utilise un fichier ini créé avec la fonction GetPrivateProfileString()De plu Pb variable snmp c++ [ par atum251 ] Pb variable snmp c++ -------------------------------------------------------------------------------- Bonjour, j'éssai d'intérroger un switch avec


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,106 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales