Multi Commander Support Forum
		Multi Commander => Script => Topic started by: AlanJB on June 28, 2016, 18:07:59
		
			
			- 
				Can somebody please explain the behaviour as shown in the debugger output below (Jungle?  Mathias?  Anyone with a brain younger than mine...?)
 
 The variables' values clearly show that execution should never enter the if().  And yet...
 
 
 TIA
 
 Alan
- 
				Well == works like string compare in c/c++ and other in that it return <0 if string1 is less than string2, 0 if they are same and > if string1 is greater then string2.
 So if the result is 0 , there is no changes between the two.. like  (($str1 == $str2) == 0)
 Been thinking about changing that.. But it would be a breaking change that would break working script..
 
 But you can also use StrIsEqual( str1, str2 ) or StrIsEqualNoCase(str1,str2)  they return a 0/1 value
 
 http://multicommander.com/docs/multiscript/functions/string
 
- 
				Thanks for the reply Mathias.
 
 Yeah - I remember C (never did much C++) and how == works.  Are you saying that the MultiScript equality operator actually compares the addresses of the two values, rather than their contents?
 
 So I need to use StrIsEqual() (the equivalent of the C strcmp() function), yes?
 
 I understand if you don't want to change the behaviour - regression testing is a bitch and angry users are even worse  :o
 
 I'm very familiar with the MultiScript string functions by now; I spent a couple of hours this morning checking and amending the documentation page for them  ;)
- 
				No, it does not compare addresses 
 
 == is the same a strcmp (c/c++)  it returns 0 is both strings are equal.  less then 0 or more then 0 depending on how much of the string that matches.
 just like  http://www.cplusplus.com/reference/cstring/strcmp/
 You can turn the == into a boolean response with "(($str1 == $str2) == 0)"   if the result of str1 == str2 is 0, then it is true (1), but using StrIsEqual is more readable
 
 StrIsEqual() return a boolean.  0 (false) 1 (true)
 
- 
				Thanks for the explanation, Mathias. 
 
 I clearly had  forgotten how strcmp() works after 40 years.  That's why I need you youngsters to jog my memory now and again :)