Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
585 connectés 

  FORUM HardWare.fr
  Programmation

  C : prob tout bête...g même un peu honte, ms bon...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

C : prob tout bête...g même un peu honte, ms bon...

n°46113
El_gringo
Posté le 12-07-2001 à 10:54:47  profilanswer
 

En fait, voila, en prog ms-dos, avec un main (int argc, char argv[]) je sais utiliser les arguments de la ligne de commande, mais avec le winMain, ça change tout, on fait comment ?

mood
Publicité
Posté le 12-07-2001 à 10:54:47  profilanswer
 

n°46115
El_gringo
Posté le 12-07-2001 à 10:57:20  profilanswer
 

dans le winmain, g vu, y a un pointeur vers la ligne de commande, mais après, pour récupérer indépendemment les arguments séparés par des espaces, y a qd même pas besoin de faire un algo soit même pour ça; j'peux pas croire que c plus chiant que sous dos !??

n°46174
El_gringo
Posté le 12-07-2001 à 11:48:51  profilanswer
 

hé !?

n°46250
Carbon_14
Posté le 12-07-2001 à 13:35:18  profilanswer
 

Dans int PASCAL WinMain(HINSTANCE hInstance,      
     HINSTANCE hPrevInstance,  
     LPSTR lpCmdLine,          
     int nCmdShow)            
on retrouve dans lpCmdLine la chaîne des paramètres de la ligne de commande (analogue à COMMAND$ sous QuickBasic).
 
Il faut chercher les espaces et prendre ce qu'il y a entre chaque zone.
 
Ca doit pouvoir s'écrire relativement facilement en passant en revue tous les caractères un par un. Je n'utilise lpCmdLine que pour récupérer le nom de fichier (association à mon .exe) donc j'ai rien sous la main (une manip attend au labo).

n°46262
El_gringo
Posté le 12-07-2001 à 14:04:11  profilanswer
 

ok, Merci, en fait j'avais trouvé...
Mais pour ton cas, c bizare, parce que, justement, dans lpCmdLine y a pas le nom du fichier...

n°46279
Carbon_14
Posté le 12-07-2001 à 14:32:20  profilanswer
 

Il n'y a pas le nom du fichier exe. Je me suis mal exprimé.
 
Je voulais dire que si on associe au niveau explorateur les fichiers .SP avec toto.exe, quand on double-clique sur un fichier .SP, il va lancer TOTO avec la "ligne de commande" TOTO fichier.SP, et on récupère fichier.sp dans lpCmdLine. On n'a pas, dans mon cas, à découper en tranches d'options. Sous DOS, les tranches étaient déja faites.

n°46285
El_gringo
Posté le 12-07-2001 à 14:36:28  profilanswer
 

ha, ok !
C bizare, on a régressé de ce côté la...g pas envie de trancher moi, vu qu'y faut que j'économise les lignes de code (voir autre topic ...)

n°46320
HelloWorld
Salut tout le monde!
Posté le 12-07-2001 à 15:40:57  profilanswer
 

met l'option "optimize size of code" au lieu "optimize speed code" ;)
ben on a pas regresse
là, argc argv est dédui par le compilo de la ligne de commande => c'est lui qui te fait le boulot : il utilise le meme algo ...
et puis c'est vraiment pas dur, avec la fonction strchr qui te cherche l'occurence d'un caractere


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°46329
El_gringo
Posté le 12-07-2001 à 16:04:47  profilanswer
 

...ms les différent arguments sont plus dans un tableaux, mais à la suite dans un chaine, comme ça, à la barbare...bon, c vrai que c pas très dur de revenir au même niveau qu'avant en cherchant les espaces, ms qd même !

n°46347
Carbon_14
Posté le 12-07-2001 à 16:25:07  profilanswer
 

J'ai dû, sous Windows 3.1/95, me réécrire une API qui permet de savoir si un rectangle est dans un autre, car si on prend un des rectangles de droite à gauche, l'API naturelle ne trouve pas.
 
C'est sur qu'une fonction "toute faite" est plus pratique.
 
Je ne me suis pas encore mis à la prog Linux, mais je pense qu'il va falloir que j'aménage un peu mon code pour faire tourner mes prog qui utilisent les "super" API Windows. Il va falloir sans doute réécrire certaines choses, bouhhh.

mood
Publicité
Posté le 12-07-2001 à 16:25:07  profilanswer
 

n°46361
HelloWorld
Salut tout le monde!
Posté le 12-07-2001 à 16:40:05  profilanswer
 

ben tu te le bricole le tableaux !
 
char * argv[10]; /* 10 pour pas se faire chier et pour faire court */
int argc=0;
char * ptr;
 
ptr=lpCmdLine;
 
while(argc<10)
{
    argv[argc++]=ptr;
 
    if(ptr=strchr(ptr,' ')!=NULL)
        ptr[0]=0;
    else
        break;
}
 
if faut savoir que strchr renvoit l'adresse du premier caractere trouve dans la chaine, NULL sinon (il me semble que c'est ca)
 
heu de memoire c'est un truc comme ca (si on a le de modifier lpCmdLine)
bon la on est limite a 10 parametres, mais c'est pour l'exemple a vous de faire mieux
 
me gueulez pas dessus si y'a une erreur, ca fait longtemps ke j'ai ecrit ca :D


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°46366
El_gringo
Posté le 12-07-2001 à 16:42:58  profilanswer
 

Ouais, merci, ms en fait ça, c bon, mon vrai pb c plutot les autres topic (enfin, l'autre topic, maintenant, un des 2 pb est résolu aussi...allez, ça s'dénoue...grave à vous bien sûr !)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  C : prob tout bête...g même un peu honte, ms bon...

 

Sujets relatifs
prob excel[CGI]PROB: le serveur ne trouve pas l'ip il mets tout le tps 127.0.0.1
prob avec $REMOTE_ADDR[VB6] Tout bête bis : Accéder aux champs d'une table
[VB6] Tout bête : Comment charger une feuille Excel ?[JAVA] \n, petite question bête
prob ShellExecute[PHP-Mysql] Prob d'apostrophes et de slash
prob sous win2000 et pas sous win98 en VC++, HELP[VB] Question toute bête sur la sauvegarde d'un projet...
Plus de sujets relatifs à : C : prob tout bête...g même un peu honte, ms bon...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR