Accueil > Forum > > > > probleme avec un mechant IF
probleme avec un mechant IF
vendredi 4 août 2006 à 13:43:45 |
probleme avec un mechant IF

hisoka2501
|
voila j'explique le probleme: if ($calc($ctime - $gettok($hget(%table2,$gettok(%item,1,64)),8,32)) <= %max || !%max) && ((!$did(107).state && %tok iswm $gettok(%data,1,1)) || $did(107).state) { ca c ma vilaine ligne qui foire donc: quand $did(107).state == 0 ca va mais quand = 1 ca marche pas tout le reste est bonc apres les deux premiers && que je n'men sors plus le bout de code: elseif ($did == 18) { bdid 18 rdid 19 if ($did(17)) { var %fast = 1 , %table = wbs.xdcc.data , %table2 = wbs.xdcc.list if ($wget(wbs.xdcc.show.only.time.less) == 1) { var %max = $did(79) } hadd -m wbscfg Xdcc.lastsearch $did(17) wbssave wbscfg var %tok = $iif($did(107).state,$did(17),$+(*,$replace($strip($did(17)),$chr(95),*,$chr(32),*),*)) , %n = $hfind(%table,$iif($did(107).state,%tok,$+(*,%tok,*)),0,$iif($did(107).state,r,w)).data , %i = 1 , %smax = $wget(xdcc.size.val) adid 30 0 0 %n if ($remove(%smax,-) !isnum) w.err Erreur: Format invalide else { var %smode = $wget(xdcc.size.mode) if (%smode != 4) var %smax = $remove(%smax,-) while (%i <= %n) { var %item = $hfind(%table,$iif($did(107).state == 1,%tok,$+(*,%tok,*)),%i,$iif($did(107).state == 1,r,w)).data , %data = $hget(%table,%item) if ($calc($ctime - $gettok($hget(%table2,$gettok(%item,1,64)),8,32)) <= %max || !%max) && ((!$did(107).state && %tok iswm $gettok(%data,1,1)) || $did(107).state) { var %tsize = $remove($gettok(%data,2,1),]) , %fsize = $remove(%tsize,[,M,K,o,b) if ($right(%tsize,1) == K) var %fsize = $calc(%fsize * 1024) elseif ($right(%tsize,2) == gb) var %fsize = $calc(%fsize / 1024) if ((((!%smode)) || ((%smode == 1) && (%fsize <= %smax))) || (((%smode == 2) && (%fsize >= %smax))) || ((%smode == 3) && (%fsize == %smax)) || ((%smode == 4) && (%fsize >= $gettok(%smax,1,45)) && (%fsize <= $gettok(%smax,2,45)))) adid 19 $gettok(%item,1,64) $chr(9) $gettok(%item,2,64) $chr(9) $gettok(%data,1,1) $chr(9) $gettok(%data,2,1) } idid 30 1 %i inc %i } } } edid 18 halt } ( le halt en fin de code c'est pck le $did(18) c'est le bouton OK donc je ne veu pas fermer le dialog mais concerver ke fait que quand je fasse ENTER ca le clique ) je sais qu'il y a la beaucoup d'aliases que je n'ai pas expliqué mais les expliquer une a une prendrais beaucoup trop de place sur ce topic, toutefois je peu affirmer qu'aucune d'entre elle n'est en cause le probleme vient juste du IF cité en premier (de sa partie droite) mais je n'arrive pas a trouver la solution exacte, je souaite juste implementer la gestion des regex pour mon moteur de recherche xdcc :) sinon j'aurais aussis une question auxiliaire: sous mirc 6.2 est il possible de deplacer la switch bar via une commande ? genre: movebar left/top/right/down merci d'avance :) la mémoire ne peut etre définie mais elle definie l"humanitée (G.I.T.S)
|
|
vendredi 4 août 2006 à 14:01:34 |
Re : probleme avec un mechant IF

RCA ArKanis
|
quand tu as des problèmes avec des parenthèses, le mieux c'est de respecter le plus possible la syntaxe "normale" càd : if (...) || (...) devient : if ((...) || (...))
on a déjà testé quelques codes avec les deux formes, on en a déduit qu'elles ne sont pas tout le temps équivalentes
essaye de mettre ça : if ((($calc($ctime - $gettok($hget(%table2,$gettok(%item,1,64)),8,32)) <= %max) || (!%max))) && (((!$did(107).state) && (%tok iswm $gettok(%data,1,1))) || ($did(107).state)) {
c'est moche ouais, mais ça a plus de chances de fonctionner :) tu peux aussi essayer de mettre en variables quelques résultats, comme le $calc($ctime - $gettok($hget(%table2,$gettok(%item,1,64)),8,32))
Sinon : if ($wget(wbs.xdcc.show.only.time.less) == 1) { var %max = $did(79) } il me semble que quand il n'y a qu'une action, mettre les { } ralenti le code
assez dur à lire quand même ton code :p
|
|
vendredi 4 août 2006 à 14:19:02 |
Re : probleme avec un mechant IF

hisoka2501
|
vi je sais je devais l'épurer de ce coté la pour les { } metre des resusltats en variable ne me parais pas une bonne solution car cela risque de ralentir le code ( je suis a l'interieur d'une boucle pouvant depasser les 2000 iteration, sous mirc c'est beaucoup)
j'ai tenté de metre la ligne que tu m'a donné, ca me ramene au meme probleme, ca ne marche pas avec le regex, en mode normal ca marche mais pas en regex
j'ai meme réésayer de metre un echo sur %item et $gettok(%data,1) et rien:
%item = [Yoso]`OST`@1 $gettok(%data,1,1) = [Yoso] .hack Liminality - OST 1.zip
( la bdd est séparée en deux, une qui gere les listes et contenu des bots (Nb de paquets, derniere maj et tt) et l'autre qui continen tt les info des packs))
la mémoire ne peut etre définie mais elle definie l"humanitée (G.I.T.S)
|
|
vendredi 4 août 2006 à 14:41:12 |
Re : probleme avec un mechant IF

PaDa
|
C'est illisible.. J'aimerais pas être le parser de conditions de mIRC.. :x
if ($calc($ctime - $gettok($hget(%table2,$gettok(%item,1,64)),8,32))
<= %max || !%max) && ((!$did(107).state && %tok
iswm $gettok(%data,1,1)) || $did(107).state) {
deviendrait, chez moi :
var %e1 = $hget(%table2,$gettok(%item,1,64))
var %e2 = $calc($ctime - $gettok(%e1,8,32))
var %c1 = $iif(%e3 <= %max,1,0)
var %c2 = $iif(!%max,1,0) var %c3 = $iif(!$did(107).state,1,0)
var %c4 = $iif(%tok
iswm $gettok(%data,1,1),1,0)
if ( (%c1 || %c2) && ((%c3 && %c4) || !%c3) ) { ... }
Je n'ai pas trop compris ou les regex intervenaient, je n'ai pas
décortiqué le code (trop dur à lire..), mais si je peux t'aider
n'hésite pas..
PaDa
|
|
vendredi 4 août 2006 à 14:43:31 |
Re : probleme avec un mechant IF

PaDa
|
Oups, %e2 pas %e3 dans le %c1, et possible que mIRC parse mal le %c4, à tester..
Le but n'étant pas d'écrire un code en un minimum de ligne... :x
|
|
vendredi 4 août 2006 à 16:03:41 |
Re : probleme avec un mechant IF

wims
|
moi je ferai comme pada en mettant dans des variables en rajoutant le switch -s pour voir ce qui est bien "setté". ensuite je mettrai un echo de la ligne du if sans les parentheses et le if qui suit.:
var %e1 = $hget(%table2,$gettok(%item,1,64)) var %e2 = $calc($ctime - $gettok(%e1,8,32)) var %c1 = $iif(%e2 <= %max,1,0) var %c2 = $iif(!%max,1,0) var %c3 = $iif(!$did(107).state,1,0) var %c4 = $iif(%tok iswm $gettok(%data,1,1),1,0) echo -a if (( %c1 ou %c2 ) et si %c3 et %c4 ) ou si ! %c3 alors ca passe if (((%c1 || %c2) && %c3 && %c4)) || (!%c3) { ... }
apres sinon, met tes conditions sur plusieurs lignes
if (%c1 || %c2) { if (%c3 && %c4) echo -a ca passe } elseif (!%c3) echo -a ca passe aussi else echo -a ca passe pas }
bonne chance :(
|
|
vendredi 4 août 2006 à 16:35:25 |
Re : probleme avec un mechant IF

hisoka2501
|
je sais deja ou ca plante moi :/ de plus un code crade et difficil a lire n'est pas forcement dur a executer pour mirc declarer des tas de variables en revanches , au sein d'une boucle qui plus est pour perdre du temp inutilement je ne pourais guerre faire mieux :/ la seulle erreure apparement est dans la condition en elle meme mais bon je vois ca tt a leur je suis trop OQP avec une aliace la :/
a savoir: alias wexp.pos { ;retourne la Nieme position d'une écritrue abregée ex: $wexp.pos(8-20,2) retourne => 10 if ($2) { var %param = $2 , %i = 1 , %input = $1 tokenize $asc(-) $1 while ($gettok($1-,%i,32) < %param) inc %i return $calc($gettok($1-,%i,32) + %param -1 - $mgettok(%input,$calc(%i -1),32,2,45)) } }
($mgetttok() permet d'imbriquer proprement plein de gettok)
enfin je ne vais pas m'ecarter du sujet qui reste éviedment le meme :( ma conditionele qui ne marche pas é par pitiée arretez de me dire de declarer 3 tonnes de variables pour rien ca ne fera que ralentire le code monstrueusement
Je n'ai pas trop compris ou les regex intervenaient, je n'ai pas
décortiqué le code (trop dur à lire..), mais si je peux t'aider
n'hésite pas.. << dans le $hfind
var %item = $hfind(%table,$iif($did(107).state == 1,%tok,$+(*,%tok,*)),%i,$iif($did(107).state == 1,r,w)).data
la mémoire ne peut etre définie mais elle definie l"humanitée (G.I.T.S)
|
|
vendredi 4 août 2006 à 16:49:14 |
Re : probleme avec un mechant IF

wims
|
La déclaration de variable sert a debugué le code et non a le ralentir, tu préferes savoir pourquoi le code marche pas et que ca aille moins vite pour l'instant ou que ca speed et que ca marche pas :) ?
La vilaine ligne retourne une erreur ? Tu es sur que tout les variables existent ?
pour la switchbar, non la commande n'existe pas malgré que cela ai été demandé
|
|
vendredi 4 août 2006 à 17:09:49 |
Re : probleme avec un mechant IF

PaDa
|
Si t'es à la ms près.. change de langage :x
Les vars locales ca ralentit peanuts, par contre pour le parser mirc
grouper comme il faut 6-7 conditions je doute que ce soit si rapide que
ca.. Si j'ai le temps ce ouik end, j'essaierai de faire un ptit bench
pour voir :-)
Bref les codes crades, je trouve ca insupportable à maintenir et lire.. enfin c'est ta vie tu fais ce que tu veux ;-))
Syntaxiquement, mon code est correct et ne "plante" pas, à toi de voir ce que tu veux.
Pour le hfind, tu peux me montrer le genre de masque qui est passé en
argument ? La je vois que c'est des trucs dynamiques, c'est assez
lourdingue en regex, faut bien penser à échapper les métachar..
PaDa
|
|
vendredi 4 août 2006 à 18:32:53 |
Re : probleme avec un mechant IF

hisoka2501
|
en regex c'est ce que l'utilisateur entre das $did(17) qui est pris en compte, pour ma part "hack" (pour [Yoso] .hack Liminality - OST 1.zip)
$regex([Yoso] .hack Liminality - OST 1.zip,hack) << ca retourne 1 pourtant ca ne passe pas dans la conditionele
la mémoire ne peut etre définie mais elle definie l"humanitée (G.I.T.S)
|
|
Cette discussion est classée dans : var, did, xdcc, fsize, smax
Répondre à ce message
Sujets en rapport avec ce message
pourquoi ma variable ne se désintalle pas??? [ par _Dams_ ]
bonjour à tous,tout est dans le titre et voice mon code :on *:dialog:canaux:sclick:39:{ var %a 100 var %b 105 var %num 1 while (%a if ($did(%a
Hdel qui marche pas [ par wims ]
Voila je realise un lecteur mp3 en ce moment et il y a un probleme lorsque je ve supprimer un mp3 : il ne supprime pas la ligne de ma list mais il la
aide pour sw [ par [thomas95 ]
Bonjour ...voila jai télécharger se code sur un site mais le probleme est a la ligne 49 seulement je ne detecte pa le probleme si quelqu'un pourrais m
Activer/désactiver dans un input [ par Camanche ]
Bonjour, je cherche désespéremment la condition à mettre dans mon input pour savoir si l'addon est activé ou pas. Voici le code: alias cor { dialog -
Treeview [ par Doudis ]
Bonsoir j'ai eu petit probleme en créant une treeview , je n'arrive pas a retourner avec $did le texte qui se situe dans la treeview voila mon co
dialog [ par eyrgo ]
Bonjour,je suis bloquer dans mon code.J'aimerai que, X recoivent les infos de Y. comme un whois sous forme de dialog. dialog mdiu { title "Infor
utilisation des rawmode [ par kraos ]
bonjour, et merci pour les réponses si elles arrivent !!voila mon pb je recherche e l'aide pour créer un remote permettant de gérer un bot sur un chan
avoir plusieurs d'espace en $chr(32) [ par WorldDMT ]
Salutje cherche a savoir comment peut on avoir plus d'espace pour un ajout sur une list dans un dialogexp: si ID1 = A , ID2 = B , ID3 = Cdid -a</fo
un petit probleme de code IRC [ par WorldDMT ]
salutj'ai un fichier qui contien[nom]1=mot1 .20/02/2008.mot22=mot1.22/02/2008.mot23=mot1.01/03/2008.mot2dialog $did(2) =
mIRC - $ialchan [ par WorldDMT ]
salutjuste une petite questionon *:ban:#:{ var %i $ialchan($banmask,#,0).nick while (%i) { var %valn %valen $ialchan($banmask,#,%i).nick,%v %v -1 }
Livres en rapport
|
Derniers Blogs
[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA[MIX10] KEYNOTE DEUXIèME JOURNéE - INTERNET EXPLORER 9, HTML5, VISUAL STUDIO 2010, ODATA par cyril
Le deuxième keynote du mix fut très riche en contenu. Internet Explorer 9 Juste un après le lancement de Internet Explorer 8, Microsoft a dévoilé les nouveautés de Internet Explorer 9. Désormais, IE supportera HTML5, SVG et CSS3. L'élément ...
Cliquez pour lire la suite de l'article par cyril CERTIFICATIONS BETA .NET 4CERTIFICATIONS BETA .NET 4 par KooKiz
Les inscriptions pour les certifications beta .NET 4 ont commencé. L'inscription est offerte pour les examens suivants : - 71-511, TS: Windows Applications Development with Microsoft .NET Framework 4 - 71-515, TS: Web Applications Development with...
Cliquez pour lire la suite de l'article par KooKiz [MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2[MIX 2010] - MICROSOFT TRANSLATOR TECHNOLOGY PREVIEW V2 par redo
J'imagine que la plupart d'entre vous connaissent bien et utilisent le service de traduction de Google, mais connaissez-vous celui de Microsoft . Microsoft Translator ? Effectivement, Microsoft nous annoncé le lancement version 2 de la Technologie Preview...
Cliquez pour lire la suite de l'article par redo LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010!LANCEMENT EN PREVIEW DE CYCLONE LORS DES TECHDAYS 2010! par MPOWARE
Toutes les vidéos de ce lancement sont en ligne!
Partie I - Intro
http://www.youtube.com/watch?v=LkQzTQ8T6CA
Partie II - Démo 1
http://www.youtube.com/watch?v=drAhYQ7lqvo
Partie III - Démo 2
http://www.youtube.com/watch?v=c8KM_1Gqybc...
Cliquez pour lire la suite de l'article par MPOWARE [WP7] JE NE VEUX PAS D'UN NOUVEL IPHONE[WP7] JE NE VEUX PAS D'UN NOUVEL IPHONE par FREMYCOMPANY
Je pense qu'ils ont besoin d'une piqure de rappel chez Microsoft : c'est bien gentil d'avoir une interface jolie, mais si c'est pour avoir un truc qui ne convainct pas dedans, c'est peine perdue.
---->
Système ouvert ----> Fermé ?
P...
Cliquez pour lire la suite de l'article par FREMYCOMPANY
Logiciels
Xilisoft Convertisseur Vidéo Ultimate (5.1.39.0305)XILISOFT CONVERTISSEUR VIDéO ULTIMATE (5.1.39.0305)Xilisoft Convertisseur Vidéo Ultimate est un outil puissant de conversion vidéo, facile à utilise... Cliquez pour télécharger Xilisoft Convertisseur Vidéo Ultimate Xilisoft DVD Ripper Ultimate (5.0.64.0304)XILISOFT DVD RIPPER ULTIMATE (5.0.64.0304)Xilisoft DVD Ripper Ultimate est un logiciel excellent pour copier et convertir DVD vers presque ... Cliquez pour télécharger Xilisoft DVD Ripper Ultimate Rigs of Rods (63.3)RIGS OF RODS (63.3)c'est un jeu de multi-simulation camions,autobus voitures, avions, bateaux, hélicoptère avec défo... Cliquez pour télécharger Rigs of Rods Konvertor (4.00)KONVERTOR (4.00)Le logiciel est un gestionnaire multimedia affichant, jouant et convertissant plus de 2000 format... Cliquez pour télécharger Konvertor
Comparez les prix

HTC Hero
Entre 550€ et 550€
|