Page 1 of 1
ALLTRIM harbour compiler
Posted: Wed Oct 13, 2010 1:03 pm
by l3whmg
Hi guys,
in my application I have this code:
Code: Select all
IF ALLTRIM( formname.usrpasswd.Value ) <> ALLTRIM( formname.retypepwd.Value )
MSGSTOP("Different password")
formname.retypepwd.SetFocus
lOkCheck := .F.
ENDIF
It work fine...
but NOT when "formname.usrpasswd.Value" is filled
and "formname.retypepwd.Value" is empty
It's my mistake or misunderstanding
Best regards
Re: ALLTRIM harbour compiler
Posted: Wed Oct 13, 2010 1:22 pm
by Rathinagiri
Can you give a small working sample?
Re: ALLTRIM harbour compiler
Posted: Wed Oct 13, 2010 1:59 pm
by gfilatov
Hello Luigi,
It is a good known behaviour of '<>' operator and it is related to the current
EXACT SETting.
Please take a look for the following explanation from
Clipper documentation:
<> != # Not equal--binary
Syntax
<exp1> <> <exp2>
<exp1> != <exp2>
<exp1> # <exp2>
Type
Character, date, logical, memo, NIL, numeric
Operands
<exp1> and <exp2> are expressions of the same data type or NIL
to compare for inequality.
Description
The <> (not equal) is a binary operator that compares two values of the
same data type and returns true (.T.) if <exp1> is not equal to <exp2>
according to the following rules:
- Character: The comparison is based on the underlying ASCII
code and is the inverse of the equal operator (=). This means that
the comparison is sensitive to the current EXACT SETting. See the
examples below.
- Date: Dates are compared according to the underlying date
value.
- Logical: False (.F.) is not equal to true (.T.).
- Memo: Treated the same as character.
- NIL: All values compared to NIL other than NIL return true (.T.).
- Numeric: Compared based on magnitude.
Examples
- These examples illustrate how the not equal operator (<>)
behaves with different data types:
// Character
SET EXACT ON
? "123" <> "12345" // Result: .T.
? "12345" <> "123" // Result: .T.
? "123" <> "" // Result: .T.
? "" <> "123" // Result: .T.
SET EXACT OFF
? "123" <> "12345" // Result: .T.
? "12345" <> "123" // Result: .F.
? "123" <> "" // Result: .F.
? "" <> "123" // Result: .T.
// Date
? CTOD("12/12/88") <> ;
CTOD("12/12/88") // Result: .F.
// Logical
? .T. <> .T. // Result: .F.
? .T. <> .F. // Result: .T.
// NIL
? NIL <> NIL // Result: .F.
? NIL <> 12 // Result: .T.
? NIL <> "hello" // Result: .T.
// Numeric
? 2 <> 1 // Result: .T.
? 1 <> 1 // Result: .F.
Re: ALLTRIM harbour compiler
Posted: Wed Oct 13, 2010 4:35 pm
by l3whmg
Hi guys,
many thanks Grigory.
I've remembered about SET EXACT while you answer to me
In fact, with "==" operator every things work fine!
Any way I've included a little example for testing.
Many, many thanks