begin process at 2010 09 06 12:22:27
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Windows

 > 

System

 > 

FindResource


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

FindResource

vendredi 19 juin 2009 à 14:15:54 | FindResource

deck_bsd

Membre Club
Yop à tous,


Voila j'ai un big problème. En fait je crée une liste des resource d'un exe dans mon application. Et lorsque je clique sur une d'entre elle , je voudrai afficher la taille.

Mais voila le problème c'est que FindResource me renvoie une erreur. Le pire c'est que je sais pourquoi mais je voi pas comment y remédier.

En fait le type et le nom de la resource je l'es récupère dans ma liste, mais ce sont des char* et donc si je passe cela comme paramètre a FindResource il me dirat erreur pour les types ou noms quine sont pas des chaîne de char mais des int. Mais voila j'ai esseye de faire les différence avec

IS_INTRESOURCE


Seulement aparement lorsque je passe un char* cette macro ne fonctionne pas car mm quand c'est mettons un type int il me renvoie que non. Donc je me suis dit je vais faire la fonction moi même :

BOOL

__stdcall isInt(char *szString)

{

char * p;

p = szString;

while(*p)

{

   if(*p < 48 || *p > 57){return FALSE;}

   p++;

}

return TRUE;

}

Il y a déjà quelques amélioration mais c'est pas encore ça :s . Donc voila , je suis en grand manque d'idées. Si quelqu'un en a une je suis preneur.



Merci d'avance.

++
deck_bsd
___________________________________
[ [ Lien ]]
vendredi 19 juin 2009 à 15:08:56 | Re : FindResource

deck_bsd

Membre Club
Non cela fonctionne très bien , j'avais fait une faute autre part. Mais juste pour être sur il ne risque pas d'y avoir une resource mettons avec un nom 128 qui en fait ne serai pas un nombre, mais bien une chaine de caractère. Pour moi non mais on ne sais jamais.

Si quelqu'un est sur :)

++
deck_bsd
___________________________________
[ [ Lien ]]
vendredi 19 juin 2009 à 19:03:17 | Re : FindResource

vecchio56

Administrateur CodeS-SourceS
Pour ma part je fais comme ca :

BOOL __stdcall isInt(char *szString)
{
  return (DWORD)szString <= 0xFFFF;
}

_____________________________________
Un éditeur de ressources gratuit pour Windows

vendredi 19 juin 2009 à 19:06:19 | Re : FindResource

vecchio56

Administrateur CodeS-SourceS
En fait je pense pas que ton code marche car si szString vaut 3 par exemple, tu ne peux pas accéder à *szString

_____________________________________
Un éditeur de ressources gratuit pour Windows

vendredi 19 juin 2009 à 20:29:17 | Re : FindResource

deck_bsd

Membre Club

Oula ata si szString vaut 3 tu veux dire si szString = "3" ? car cela fonctionne très bien :s dans ma liste j'ai des numéro qui valent 1 2 3 4 ... et ça va très bien, je comprend pas trop ce que tu veux dire.

et heu return (DWORD)szString <= 0xFFFF; j'ai un peu du mal a saisir avec (DOWRD) tu pointes sur la 4 premier bystes ok mais 0xFFFF ? quel est sont rôle ?



++
deck_bsd
___________________________________
[ [ Lien ]]

vendredi 19 juin 2009 à 20:31:56 | Re : FindResource

deck_bsd

Membre Club
Ha pour le 3 tu veut parler non pas d'un caractère mais d'une valeur entière ? ben cela n'arrivera jamais dans mon programme car tous les types et noms de resource sont en char* donc les nombres sont de toute façons une chaîne de caractère.

++
deck_bsd
___________________________________
[ [ Lien ]]
vendredi 19 juin 2009 à 21:09:49 | Re : FindResource

vecchio56

Administrateur CodeS-SourceS
Si tu es sur que ce sont des chaines, ya pas de problème alors t'a juste a vérifier que la chaine ne contient que des chiffres, je ne vois pas ou est le problème.
Mais cette chaine szString, tu la récupère comment? Si tu utilises EnumResNameProc, et si le type de ressource est 3, tu aura bien lpszName=3 et non *lpszName='3'
Si le type de ressource est "3" tu auras effectivement *lpszName = 3.

Pour mon 0xFFFF, c'est que les types de ressources entiers sont inférieurs ou égaux à 0xFFFF, du coup si lpszName est supérieur à 0xFFFF c'est un type chaine, sinon c'est un type entier (c'est pas joli comme méthode mais j'ai pas trouvé mieux, les méthodes d'énumération des ressources sont mal foutues à ce niveau).

_____________________________________
Un éditeur de ressources gratuit pour Windows

vendredi 19 juin 2009 à 21:30:23 | Re : FindResource

deck_bsd

Membre Club
Oui oui je suis sur que ce ne sera que des chaînes ces pour ça que je voyai pas trop ce qui n'allait pas dans ma méthode d'après ce que tu me disait. Oui non aucun problème je sais que ça fonctionne très bien comme ça, mais je me demandai si tu vois il se pourrait que lorsqu'un utilisateur crée une resource il donne un nom qui en fait est un numéro en chaîne de caractère et non un nombre , je sais pas si tu me suis, d'après les manières de déclaration de resource ect, je dit que c'est pas possible, mais sait-on jamais , donc c'était pour être sur ^^ je sais pas si tu m'as compris :)

Oui je trouve aussi que c'est mal fichu de devoir savoir si c'est un intier ou une chaîne microsoft devrait instaurer une sorte de standard pour cela :)

Haaa daccord c'est plus claire pour le 0xFFFF, note je sais pas ou tu vas tjrs chercher ces infos ^^ car j'ai lu pas mal de page sur les resources dans la MSDN et je suis jamais tombé sur cette info ^^

++
deck_bsd
___________________________________
[ [ Lien ]]
vendredi 19 juin 2009 à 21:40:14 | Re : FindResource

vecchio56

Administrateur CodeS-SourceS
Oh ben en fait j'ai eu l'occasion d'étudier la structure de la section .rsrc des fichiers PE donc je vois un peu comment c'est fait. D'ailleurs je pense écrire mon propre browser de ressource pour m'éviter d'utiliser les méthodes d'enum fournies.
Cela dit, je ne comprends toujours pas ton problème.
Voici les différents cas qu'on peut avoir :

Type de ressource sous forme d'entier : 3
Type de ressource sous forme de chaine : dans ce cas ca peut-être une chaine "TOTO" ou bien "123" (bien que le format .rc ne te permette pas de définir une ressource avec un type chaine qui contient un entier, ou alors il faut que tu me montres comment tu fais...).
Dans tous les cas, quel est l'intéret de savoir si la chaine contient un entier ou non? Je ne vois pas pourquoi tu cherches à savoir ca. Car même si la chaine est "123", ca n'a rien a voir avec un entier.

_____________________________________
Un éditeur de ressources gratuit pour Windows

vendredi 19 juin 2009 à 21:45:11 | Re : FindResource

deck_bsd

Membre Club
bien que le format .rc ne te permette pas de définir une ressource avec un type chaine qui contient un entier, ou alors il faut que tu me montres comment tu fais...) Voila tu as mis le doigt sur ma question et tu y a répondu. Donc voila pourquoi je me posait cette question car en ce cas, ma méthode isInt serait éronée si c'était une chaine "123" , ma méthode la prendrai pour un nombre et passerai un entier a ma fonction FindResource hors je devrait lui passer une chaîne de caractère dans ce cas précis. Mais comme tu me confirme que le format .rc interdit ce genre de chose , ma fonction fonctionnera dans tous les cas, c'est ce que je voulait savoir :)

++
deck_bsd
___________________________________
[ [ Lien ]]

1 2 3

Cette discussion est classée dans : problème, liste, char, resource, findresource


Répondre à ce message

Sujets en rapport avec ce message

conversion int en char* [ par arwenita ] Encore un petit problème en C++...Dans mon programme, je voudrais afficher une liste de nombres (premiers), que je récupère de la fonction Crible(n).L Problème de delete [ par ManTico ] Salut à tous, j'ai un peu de peine avec la gestion de la mémoire et je voulais savoir deux choses :- pourquoi en mode Debug mon prog plante sur les de Problème avec char* [ par Wiwi ] Bonjour tt le monde, j'ai une tite pro (bidon) avec ce morceau de programme. Lors de sa compilation il n'y a aucune erreur, par contre lors de son exé [c] erreur malloc (incompatible types in assignment) [ par Diony ] voici mon programme : #include #include #include typedef struct recette { char * nom; struct ingredient * ing; [c] pour les motivés ,structurer un fichier [ par Diony ] bonjour , voici mon programme . je n arrive pas a structurer mon fichier a cause de la fonction inserer_recette_fin_liste qui doit normalement inserer problème de création d'un objet sur une liste [ par Zaz16 ] Bonjour, Je travaille avec visualC++ 6.0 et les classes MFC. J'ai créé une fonction copier/coller avec un menu contextuel. Jusque là tout va bien. Je problème de lecture en c++ sous vc++6 [ par os22 ] j'essaie de lire un fichier ayant le contenu suivantmarc;collin;4506777228;906 boule;longueuil;j4j1t5;qc;14;allo;roger;dumais;5413432128;1150 dumahel; Problème QGridLayout de QT [ par D1m3x ] Salut à tous,Je suis en train de programmer un client IRC (cela ne fait même pas une semaine que je l'ai commencer) pour le moment je n'ai établi que problème tri d'une liste d'objet ! [ par tomsawyerbelgique ] Bonjour, j'aimerais savoir comment on fait pour surdéfinir un foncteur de tri de liste d'objet. C'est objet sont des pointeurs sur une structure et la problème tout bête [ par Raoul12 ] voilà, je débute dans le c++ et je voudrais faire ça:char hohun[32] ;hohun = "hohun" ;mais ça ne marche pas... pourtant si je fais ça:char hohun[32] =


Nos sponsors


Sondage...

CalendriCode

Septembre 2010
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
27282930   

Consulter la suite du CalendriCode

 
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 : 0,983 sec (3)

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