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
UNE JOLIE-HORLOGE ET PAS QU'UN PEU !UNE JOLIE-HORLOGE ET PAS QU'UN PEU ! par neodante
Pour les possesseurs d'iPhone, ça y est Bijin Tokei - qui se traduit littéralement en Français par " Jolie Horloge " - est arrivé et GRATUITEMENT s'il vous plaît ! Après la version Tokyo, Hokkaido, night club, racing, Gal, "pour les mademoiselles'", . voi...
Cliquez pour lire la suite de l'article par neodante TECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICESTECHDAYS PARIS 2010 : CONNECTEZ VOS DONNéES à SHAREPOINT 2010 AVEC LES BUSINESS CONNECTIVITY SERVICES par ROMELARD Fabrice
Animé par: Gaetan Bouveret et Julien Chomarat Business Connectivity Services (BCS) est dans SharePoint 2010 la version 2 de Business Data Catalog (BDC dans SharePoint 2007). Il s'agit de la solution permettant de visualiser des données provenan...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice [DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE[DIVERS] SUIVRE VOS SéRIES PRéFéRéS SUR LA TOILE par orion
Comme de nombreux geek, je suis un grand amateur de série TV et je rate régulièrement des épisodes de mes séries préférés. Une solution s'offre à vous avec ce merveilleux site : Tv Gorge - www.tvgorge.com Moteur de recherche à l'appui, vous pouvez ...
Cliquez pour lire la suite de l'article par orion TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010TECHDAYS PARIS 2010 : LA BI DANS SHAREPOINT 2010 par ROMELARD Fabrice
Animé par: Vincent Bellet et Baptiste Giraudier La BI dans SharePoint 2010, Les nouveaux services d'application dans SP2010 et SQL Server Reporting services 2008 R2. La BI dans SharePoint est généralisée pour tous afin de permettre à tous les coll...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : ON RAWMODERE : ON RAWMODE par WorldDMT
Cliquez pour lire la suite par WorldDMT AVERTISSMENT ET KIKKAVERTISSMENT ET KIKK par mouhcine951990
Cliquez pour lire la suite par mouhcine951990
Logiciels
DB-MAIN (9.1.0)DB-MAIN (9.1.0)DB-MAIN is a data-modeling and data-architecture tool. It is designed to help developers and anal... Cliquez pour télécharger DB-MAIN Xilisoft DPG Convertisseur (5.1.37.0120)XILISOFT DPG CONVERTISSEUR (5.1.37.0120)Xilisoft DPG Convertisseur offre aux fans de Nintendo DS une bonne solution leur permettant de dé... Cliquez pour télécharger Xilisoft DPG Convertisseur GraphicsGale (2.01.01)GRAPHICSGALE (2.01.01)GraphicsGale est un logiciel de PixelArt avec de nombreuse fonctionnalités permettant de réalisé ... Cliquez pour télécharger GraphicsGale Architecte 3D (Platinum 2010)ARCHITECTE 3D (PLATINUM 2010)Architecte 3D Platinium vous permet de concevoir facilement les plans votre future maison, de l'é... Cliquez pour télécharger Architecte 3D TeamViewer 5 (TeamViewer 5)TEAMVIEWER 5 (TEAMVIEWER 5)Dépanner un ami,expliquer une manipulation devient un jeu d'enfant.
Prise en main d'un autre ord... Cliquez pour télécharger TeamViewer 5
|