Recherche d'une chaine dans un fichier, pourquoi ça plante sur .exe ? - C++ - Programmation
Marsh Posté le 10-10-2003 à 15:16:33
C'est en quel langage ? C ou C++ ? Et tu appelles souvent des méthodes dont le nom commence par un _ (_findfirst) ?
Marsh Posté le 10-10-2003 à 15:21:12
ben j'aimerais le faire en c++, mais le genre de fonction _findfirst ben j'ai pas le choix, c'est pas standard
Marsh Posté le 10-10-2003 à 15:22:04
entre tes noms abscons, tes fonctions pas standards, ton algorithme douteux, ton manque d'explication, j'ai du mal à te répondre
Marsh Posté le 10-10-2003 à 15:24:29
comment tu veux faire une recherche de fichiers en standard ?
essaie de faire abstraction des noms assez courts
ben si tu veux c'est un programme qui doit tout d'abord rechercher les fichiers correspondants à une chaine de recherche (parametre du findfirst), ensuite pour ceux trouvée il doit recherche si une chaine précise est dedans, ça marche bien pour les fichiers textes disons, mais pour les exe, infs.open ne marche pas, infs est null.
Marsh Posté le 10-10-2003 à 15:26:08
1) pas possible)
2) heink ?
3) les fonctions en _ ton système dois tu surement te fournir mieux
4) t'as un problème de C++ ou de windowserie ?
Marsh Posté le 10-10-2003 à 15:32:27
problème de c++, ben si tu pouvais me donner quelques trucs pour rendre ce code plus potable en c++, je suis preneur, le problème ben je comprends pas pourquoi la méthode open de la classe ifstream bloque dans mon code sur les .exe, c'est zarb quand même, c'est même pas un problème de recherche, cette recherche se passe très bien...
Marsh Posté le 10-10-2003 à 15:33:28
classe ifstream bloque dans mon code sur les .exe
ça veut dire quoi ? t'as essaye en binaire ?
Marsh Posté le 10-10-2003 à 15:34:31
oui comme je l'ai écrit j'ai essayé en binaire
et j'ai dit la méthode open de ifstream...
Marsh Posté le 10-10-2003 à 15:39:05
heink ?
de toutes façons
infs.open(tmp.data());
foire puisque data() n'est pas terminé par un '\0'
Marsh Posté le 10-10-2003 à 16:21:51
Isole le problème dans un cas comme ça...
Créé un petit fichier de test qui tente juste d'ouvrir un fichier exe et d'y trouver une chaine...
Ton bug ça pue l'ouverture en mode texte.
Marsh Posté le 10-10-2003 à 17:18:15
quand je fais dans le main une ouverture simple de .exe, mode texte ou binaire, ça marche, je vais essayer avec le \0 comme me le conseille Taz
Marsh Posté le 10-10-2003 à 17:35:42
à cause du c_str() ?
sinon je demandais dans un autre post, tu as bien dit pas de char* en c++ ? juste pour confirmer...
edit : oubli d'un mot
Marsh Posté le 10-10-2003 à 17:41:11
si tu me donnes une seule bonne raison pour préférer les char*
Marsh Posté le 10-10-2003 à 18:07:14
pour mettre du binaire, entre un string et un char* je choisis le char* sans hésiter, me semble plus logique...
Marsh Posté le 10-10-2003 à 18:10:54
faudrait lire un peu le code.
une string permet manipuler des chaines de caracteres, mais les std::string sont capables de mainpuler toute chaine de caracteres sans restriction.
cela dit pour la lecture du binaire, un char* ou mieux un vector<char> est bien mieux
Marsh Posté le 13-10-2003 à 10:48:10
J'ai changé de méthode, c_str() à la place de data(), ça change rien...
Marsh Posté le 13-10-2003 à 12:06:34
ça change que ça ne plante plus déjà. après tu vois avec tes windowseries
Marsh Posté le 14-10-2003 à 14:27:40
j'ai executé ton code, et chez moi ca a l'air de fonctionner (win xp / vc++7)
Marsh Posté le 16-10-2003 à 13:25:00
bizarre quand même cette histoire (win xp aussi, mingw, je vais essayer de changer de compilo, mais bon...)
Marsh Posté le 07-04-2004 à 16:58:55
Salut,
je veux faire un programme similaire au tiens mais qui me permette de rechercher une chaine qui commence par un ";" et qui se termine ppar la chaine recherchée (c des fichiers zarb sur lesquels je bosse...)
j'ai donc adapté ton programme et il fonctionne impec sauf que le close() sur le fichier dans la méthode isIn() foire (je test sur if(!infs) ) ce qui fait que je ne peux pas ouvrir le fichier suivant du répertoire...
tu as (avais plutôt ça date un peu) rencontré ce problème ???
ps : jsuis avec Visual C++ 6 et windows 2000
Marsh Posté le 08-04-2004 à 07:50:48
personne pour me dire comment ça se ferme un ifstream ?
Marsh Posté le 08-04-2004 à 14:08:17
ou un lien vers des explications sur ifstream ou c_str ?
parceque je cherche mais je trouve rien de très claire pour moi (surtout quand c'est écrit en english)
Marsh Posté le 08-04-2004 à 15:21:40
merci j'y vais
Marsh Posté le 09-04-2004 à 03:09:58
je dirais au hasard le grand classique:
Code :
|
Marsh Posté le 10-10-2003 à 15:11:56
Salut,
je n'y comprends que dale, ce programme marche mais il n'arrive pas à ouvrire les fichiers .exe, la méthode open ne marche pas, j'ai essayé en binaire et tout et tout...
voila le code en entier, je pense que c'est nécessaire, au passage j'essaie le plus possible de le faire en c++ et non en c, alors s'il y a des choses que je dois modifier pour cela, dite le moi
merci
ANT
Message édité par antsite le 10-10-2003 à 15:21:45