faiz

Active Members
  • Content count

    11
  • Joined

  • Last visited


faiz's Activity

  1. faiz added a post in a topic: COM access to Engineering application   

    Thanks for all your suggestions and time. Do you recommend I write to someone directly. Since the call works in Excel/VBA it might be a bug in AutoIt?
  2. faiz added a post in a topic: COM access to Engineering application   

    I do not get any error reporting. Only the same error as before when the code refers to $list[27]
  3. faiz added a post in a topic: COM access to Engineering application   

    SAme result. :-(
  4. faiz added a post in a topic: COM access to Engineering application   

    3.3.8.1

    Actually just mow i was going to see if there is a new version...
  5. faiz added a post in a topic: COM access to Engineering application   

    To your earlier question: there is no output (except the count output before the loop) since it hits the error.

    The VB Script & PDF are part of my history with this. The PDF contains Excel/VBA example, and it works for me too. In fact that is the solution we used and I left this forum for over a month!

    The VB Script is from a colleague and it does not work. This triggered an interest in an alternative and I googled and found AutoIt! AutoIt was better than VBScript since gave a Type Mismatch on the call which AutoIt does execute it and return everything, except the first element of the list.

    I suspect it is the way arguments are handled in AutoIt specially when using with calls to COM objects. I can get some insight from an expert like you.
  6. faiz added a post in a topic: COM access to Engineering application   

    Error Subscript used with non-Array variable (in the ConsoleWrite line in the for loop)
  7. faiz added a post in a topic: COM access to Engineering application   


    Dim $m, $list, $count $m = "e:....trunk.bpn" $p = ObjCreate("Net32COM.INetModel") $p.OpenModel($m) $p.GetNameList(7, $list, $count) ConsoleWrite("count = " & $count & @LF) for $i = 0 to $count - 1 ConsoleWrite("list(" & $i & ") " & $list[$i] & @LF) next ConsoleWrite("IsArray: " & IsArray($list[0]) & @CRLF) ConsoleWrite("IsObj: " & IsObj($list[0]) & @CRLF) ConsoleWrite("IsPtr: " & IsPtr($list[0]) & @CRLF) ConsoleWrite("VarType: " & VarGetType($list[0]) & @CRLF) ConsoleWrite("27" & $list[27] & @CRLF) ; Should give you a correct output ConsoleWrite("28" & $list[28] & @CRLF) ; Should return an errorCOmplete code is like this:
  8. faiz added a post in a topic: COM access to Engineering application   

    Hi! Earlier I tried to run the loop from 0 to $count instead of $count - 1. It returned an error.

    After your suggestion I get :

    ConsoleWrite("27" & $list[27] & @CRLF)
    ConsoleWrite("27" & ^ ERROR

    Error: Array variable has incorrect number of subscripts or subscript dimension range exceeded.
  9. faiz added a post in a topic: COM access to Engineering application   

    The list gave a character that looks like a left pointing arrow but what I copied from my console output and pasted it into this post it was (is) not visible.

    I then also tried:

    ConsoleWrite("VarType: " & VarGetType($list[0]) & @CRLF)

    and got:

    VarType: String
  10. faiz added a post in a topic: COM access to Engineering application   

    water: thanks for replying. Sorry for coming back so late. :-(

    I "ConsoleWrite" the count, the value of each element and then the code you suggested and get this:

    count = 27
    list(0)
    list(1) RB-136H
    list(2) RB-104V
    list(3) RB-138H
    list(4) RB-154H
    list(5) RB-266H
    list(6) RB-265V
    list(7) RB-267H
    list(8) RB-268H
    list(9) RB-208H
    list(10) RB-93H
    list(11) RB-17V
    list(12) RB-209H
    list(13) RB-210H
    list(14) RB-225H
    list(15) RB-233V
    list(16) RB-226HST
    list(17) RB-307H
    list(18) RB-308H
    list(19) RB-207H
    list(20) RB-202H
    list(21) RB-92V
    list(22) RB-311HST
    list(23) RB-115
    list(24) RB-84V
    list(25) RB-309H
    list(26) RB-203H
    IsArray: 0
    IsObj: 0
    IsPtr: 0

    I the data from elements $list[1] to [26] is correct but I am missing the first data (which I expected to be in [0]). Thanks for any pointers/help. Really appreciate it.
  11. faiz added a post in a topic: COM access to Engineering application   

    Hi,

    I am trying out AutoIt to access a program called Pipesim. According to the authors:

    "PIPESIM has been designed with "Openness" in mind. Therefore key modules can be "driven" from 3rd party applications, for example, Microsoft Excel, VB, C++, and so on."

    one of the calls/commands i make is .GetNameList ()

    From the documentation of Pipesim:

    GetNameList (ObjectType As Long, pNameArray, Count As Long)

    OLE/COM Object viewer gives this information about this method:


    void GetNameList(
    [in] long ObjectType,
    [out] VARIANT* pNameArray,
    [out] long* Count);

    My AutoIt script uses this as : $p.GetNameList(7, $list, $count)

    $list returns are an array with index 0 to 26 (matches the $count with returns 27). Elements $list[1] to [26] do contains the proper string values (e.g. 'RB-136H') but element [0] contains a left pointing arrow (seems to be line feed since when I copied it from the output of ConsoleWrite and pasted it here it takes me to a new line with no visible character).

    Another Get method ( for which OLE/COM Object viewer says ):

    VARIANT_BOOL GetPropertyStringAtObjectIndex(
    [in] BSTR ObjectName,
    [in] BSTR ParentName,
    [in] BSTR PropName,
    [out] BSTR* pValue,
    [in] long Index);

    It returns pValue with a value of '??\'

    Are these limitations of AutoIt w.r.t. COM or am I doing something wrong?

    Thanks for any insight into this. This will really decide if we adopt AutoIt as our chosen scripting solution of choice. It has given us an extremely good impression otherwise. The functions work fine with Excel/VBA but have problems with VBScript.

    Regards,
    Faiz