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
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : AIDERE : AIDE par Nico26000
Cliquez pour lire la suite par Nico26000 RE : AIDERE : AIDE par WorldDMT
Cliquez pour lire la suite par WorldDMT AIDEAIDE par Nico26000
Cliquez pour lire la suite par Nico26000
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|