Page 1 of 2 12 LastLast
Results 1 to 15 of 18
  1. #1
    Plutonium Lounger
    Join Date
    Mar 2002
    Posts
    84,353
    Thanks
    0
    Thanked 29 Times in 29 Posts

    Re: Not Not (2002 SP3)

    That is very strange indeed. Boolean variables aren't supposed to behave that way. Is the behavior consistent. i.e. does it persist after a reboot of your PC?

  2. #2
    Plutonium Lounger
    Join Date
    Dec 2000
    Location
    Sacramento, California, USA
    Posts
    16,775
    Thanks
    0
    Thanked 1 Time in 1 Post

    Re: Not Not (2002 SP3)

    Does the result change if you take the parens out from Not (ir) and execute it as Not ir ? I have run into situations where a Not condition always returned true in other VBA implementations and in those circumstances, I have been forced to use workarounds like while loops or If-Else constructs.
    Charlotte

  3. #3
    3 Star Lounger
    Join Date
    Sep 2004
    Location
    Portsmouth, Hampshire, England
    Posts
    200
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Re: Not Not (2002 SP3)

    Still there after a reboot.
    The attached worksheet contains a small piece of test code. Obviously you can't run it unless you have IBM Personal Communications on your PC.

    Sheets 1 to 3 show results of 3 tests:

    Sheet 1:
    With a timeout of 1000 milliseconds, oia.waitforinputready() returns False.
    You can see that ir = False and Not ir = True
    This is as expected.

    Sheet 2:
    With a timeout of 10000 milliseconds, oia.waitforinputready() returns True.
    You can see that ir = True and Not ir = True
    This is NOT as expected

    Sheet 3:
    Setting ir to True explicitly (even though with a timeout of 10000 milliseconds it would already have been True) gives us:
    ir = True and Not ir = False
    Once again as expected.

  4. #4
    Plutonium Lounger
    Join Date
    Mar 2002
    Posts
    84,353
    Thanks
    0
    Thanked 29 Times in 29 Posts

    Re: Not Not (2002 SP3)

    I don't have that software, so I can't test it.

  5. #5
    3 Star Lounger
    Join Date
    Sep 2004
    Location
    Portsmouth, Hampshire, England
    Posts
    200
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Not Not (2002 SP3)

    Edited by <!profile=StuartR>StuartR<!/profile> to reduce size of graphic

    I am seeing some very strange behaviour when writing a programmed operator using VBA in Excel. I wonder if anyone can explain it.

    The programmed operator is using OLE to interact with an IBM Personal Communications 3270 emulator.

    One ofthe methods available is WaitForInputReady for which the documentation says:

    Method: Boolean WaitForInputReady

    The WaitForInputReady method waits until the OIA of the connection associated with autECLOIA object indicates that the connection is able to accept keyboard input

    Input Parameters:

  6. #6
    3 Star Lounger
    Join Date
    Sep 2004
    Location
    Portsmouth, Hampshire, England
    Posts
    200
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Re: Not Not (2002 SP3)

    I didn't think you would have, that was why I inserted the 3 pictures into the workbook.

    A very strange situation!

  7. #7
    Plutonium Lounger
    Join Date
    Mar 2002
    Posts
    84,353
    Thanks
    0
    Thanked 29 Times in 29 Posts

    Re: Not Not (2002 SP3)

    The pictures don't shed more light on the situation, I'm afraid. <img src=/S/shrug.gif border=0 alt=shrug width=39 height=15>

  8. #8
    Platinum Lounger
    Join Date
    Feb 2001
    Location
    Weert, Limburg, Netherlands
    Posts
    4,812
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Re: Not Not (2002 SP3)

    This is a declaration and a type conversion problem.

    I spotted that not all variables are dim'ed in your code.

    I think the IBM code is not returning a boolean value. Since you haven't dim'ed ir, it is by default a Variant and when assigning a value to it, it will accept any format.

    Consider these three small routines:

    <pre>Option Explicit

    Sub test1()
    Dim nir As Boolean
    Dim ir As Variant
    ir = 1
    nir = Not ir
    MsgBox nir
    ir = 0
    nir = Not ir
    MsgBox nir
    End Sub

    Sub test2()
    Dim nir As Boolean
    Dim ir As Variant
    ir = True
    nir = Not ir
    MsgBox nir
    ir = False
    nir = Not ir
    MsgBox nir

    End Sub

    Sub test3()
    Dim nir As Boolean
    Dim ir As Boolean
    ir = 1
    nir = Not ir
    MsgBox nir
    ir = 0
    nir = Not ir
    MsgBox nir
    End Sub
    </pre>


    See what I mean?
    Jan Karel Pieterse
    Microsoft Excel MVP, WMVP
    www.jkp-ads.com
    Professional Office Developers Association

  9. #9
    3 Star Lounger
    Join Date
    Sep 2004
    Location
    Portsmouth, Hampshire, England
    Posts
    200
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Re: Not Not (2002 SP3)

    I didn't Dim it in the attached workbook, but if you look at the picture in the first append, I did have them Dimmed as Boolean and it was still exhibiting the behaviour.

    Also a Debug.Print of oia.waitforinputready(n) returns True or False.

    Bottom line is, is there some way that I can code this to make a working True/False value?

  10. #10
    Plutonium Lounger
    Join Date
    Mar 2002
    Posts
    84,353
    Thanks
    0
    Thanked 29 Times in 29 Posts

    Re: Not Not (2002 SP3)

    No idea if it will help, but you could try

    ir = CBool(oia.waitforinputready(10000))

    It shouldn't matter, but who knows?

  11. #11
    Platinum Lounger
    Join Date
    Feb 2001
    Location
    Weert, Limburg, Netherlands
    Posts
    4,812
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Re: Not Not (2002 SP3)

    I missed the Dim in the picture.
    But since my code does show a similar behaviour, I think Hans' suggestion might help (explicitly converting to a boolean before assigning).

    Last thing to try: clean your code! http://www.appspro.com/Utilities/CodeCleaner.htm
    Jan Karel Pieterse
    Microsoft Excel MVP, WMVP
    www.jkp-ads.com
    Professional Office Developers Association

  12. #12
    3 Star Lounger
    Join Date
    Sep 2004
    Location
    Portsmouth, Hampshire, England
    Posts
    200
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Re: Not Not (2002 SP3)

    Well coding the Cbool() changes things.

    ir = CBool(oia.waitforinputready(10000))
    nir = Not ir

    Ends up with ir = True and nir = False

    But

    ir = Not CBool(oia.waitforinputready(10000))
    nir = Not ir

    Still has ir = True and nir = True

  13. #13
    Plutonium Lounger
    Join Date
    Mar 2002
    Posts
    84,353
    Thanks
    0
    Thanked 29 Times in 29 Posts

    Re: Not Not (2002 SP3)

    You'll have to live with the first one then.

    PS I would follow Jan Karel's suggestion to clean the code. Even if it doesn't solve your problem, it's still useful.

  14. #14
    Platinum Lounger
    Join Date
    Feb 2001
    Location
    Yilgarn region of Toronto, Ontario
    Posts
    5,453
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Re: Not Not (2002 SP3)

    I have a vague sense of unease that this is similar to a problem that plagued me with hex values recently.

    Sometimes -1 and &HFFFF and True and False and zero and not-zero don't seem to connect properly.

    Could it be that some specific bit pattern (length of bit string AND their values) is given a different interpretation by different code? We have all met mis-matched specs where "0" means not a problem and <>0 means a problem. Or >=0 means "found" and -1 means not-found. But -1 means True, right? so something that treated -1 as True might be mis-interpreting a not-found response and thinking that everything is OK.

    I noticed a reply (480920) that mentioned problems with variants.

  15. #15
    5 Star Lounger st3333ve's Avatar
    Join Date
    May 2003
    Location
    Los Angeles, California, USA
    Posts
    705
    Thanks
    0
    Thanked 2 Times in 2 Posts

    Re: Not Not (2002 SP3)

    It occurred to me to wonder if <pre>nir = (ir = False)</pre>

    would give you the same problem, but I won't blame you if you don't want to spend another minute on this issue.

Page 1 of 2 12 LastLast

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •