mIRC Home    About    Download    Register    News    Help

Print Thread
#137219 10/12/05 01:55 AM
Joined: Aug 2005
Posts: 30
S
Ameglian cow
OP Offline
Ameglian cow
S
Joined: Aug 2005
Posts: 30
Here's an alias as an example:
Code:
alias testbug {
  set -l %dat C
  if (*a* iswm %dat || ((*bd* !iswm %dat) && *C* iswm %dat)) { echo -s $ifmatch $+ : %dat }
  if (*a* iswm %dat || ((*bd* !iswm %dat) && *C* iswm %dat)) echo -s $ifmatch $+ : %dat
}

It returns:

*C*: C
*bd*: C

Somehow, the absence of the { } brackets change the output of $ifmatch

Another thing I encountered was if you use this ifelse comparison:
Code:
alias testbug2 {
  set -l %dat C
  if (*a* !iswm %dat) && ((*b* iswm %dat) || *C* iswm %dat) echo -s $gettok($ifmatch,1,42) $+ : %dat
}

This will return: b: C
However, if you add the {} brackets, it'll evaluate it correctly and $ifmatch will be set to C

Last edited by SnakeBite34; 10/12/05 03:03 AM.
#137220 10/12/05 03:28 AM
Joined: Oct 2005
Posts: 1,741
G
Hoopy frood
Offline
Hoopy frood
G
Joined: Oct 2005
Posts: 1,741
Quote:
Here's an alias as an example:
Code:
alias testbug {
  set -l %dat C
  if (*a* iswm %dat || ((*bd* !iswm %dat) && *C* iswm %dat)) { echo -s $ifmatch $+ : %dat }
  if (*a* iswm %dat || ((*bd* !iswm %dat) && *C* iswm %dat)) echo -s $ifmatch $+ : %dat
}

It returns:

*C*: C
*bd*: C


Behavior confirmed.

Quote:

Another thing I encountered was if you use this ifelse comparison:
Code:
alias testbug2 {
  set -l %dat C
  if (*a* !iswm %dat) && ((*b* iswm %dat) || *C* iswm %dat) echo -s $gettok($ifmatch,1,42) $+ : %dat
}

This will return: b: C
However, if you add the {} brackets, it'll evaluate it correctly and $ifmatch will be set to C


Without the brackets, I got this:
: C

With the brackets, I got this:
C: C

mIRC 6.16, XP SP1

-genius_at_work

#137221 10/12/05 10:45 AM
Joined: Apr 2003
Posts: 701
K
Hoopy frood
Offline
Hoopy frood
K
Joined: Apr 2003
Posts: 701
Code:
alias testbug {
  set -l %dat C
  if (*a* iswm %dat || ((*bd* !iswm %dat) && *C* iswm %dat)) { echo -s 1: $ifmatch $+ : %dat }
  if (*a* iswm %dat || ((*bd* !iswm %dat) && *C* iswm %dat)) echo -s 2: $ifmatch $+ : %dat ; $v1 ; $v2
  if ((*a* iswm %dat) || ((*bd* !iswm %dat) && (*C* iswm %dat))) echo -s 3: $ifmatch $+ : %dat
  if ((*a* iswm %dat) || ((*bd* !iswm %dat) && (*C* iswm %dat))) { echo -s 4: $ifmatch $+ : %dat }
  if (*a* iswm %dat || *bd* !iswm %dat && *C* iswm %dat) echo -s 5: $ifmatch $+ : %dat
  if (*a* iswm %dat || *bd* !iswm %dat && (*C* iswm %dat)) echo -s 6: $ifmatch $+ : %dat
  if (*a* iswm %dat || *bd* !iswm %dat && *C* iswm %dat && *Q* !iswm %dat) echo -s 7: $ifmatch $+ : %dat ; $v1 ; $v2
  if (*bd* !iswm %dat && *C* iswm %dat && *Q* !iswm %dat) echo -s 8: $ifmatch $+ : %dat ; $v1 ; $v2
  if *bd* !iswm %dat && *C* iswm %dat && *Q* !iswm %dat echo -s 9: $ifmatch $+ : %dat ; $v1 ; $v2
}

Gives:
1: *C*: C
2: *bd*: C ; *bd* ; C
3: *C*: C
4: *C*: C

5: *bd*: C ; *bd* ; C
6: *C*: C
7: *C*: C ; *C* ; C
8: *C*: C ; *C* ; C
9: *C*: C ; *C* ; C


I think it's a way of saying those ( ) are really good scripting style instead of just dumping everything after the if (cfr 9) and let the mIRC script parser figure it out...
So, yes it's probably a bug, but if you write correct code mIRC will give correct output smile


Link Copied to Clipboard