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

 


Dernière réponse
Sujet : C : prob tout bête...g même un peu honte, ms bon...
El_gringo 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 !)

Votre réponse
Nom d'utilisateur    Pour poster, vous devez être inscrit sur ce forum .... si ce n'est pas le cas, cliquez ici !
Le ton de votre message                        
                       
Votre réponse


[b][i][u][strike][spoiler][fixed][cpp][url][email][img][*]   
 
   [quote]
 

Options

 
Vous avez perdu votre mot de passe ?


Vue Rapide de la discussion
El_gringo 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 !)
HelloWorld 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
Carbon_14 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.
El_gringo ...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 !
HelloWorld 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
El_gringo 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 ...)
Carbon_14 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.
El_gringo 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...
Carbon_14 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).
El_gringo hé !?
El_gringo 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 !??
El_gringo 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 ?

Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)