• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Custom IC SKILL
  3. how to assign formField as a vairable?

Stats

  • Locked Locked
  • Replies 8
  • Subscribers 143
  • Views 14066
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

how to assign formField as a vairable?

bonnieatcds
bonnieatcds over 10 years ago

Hello,

Here is what I want to do --

In my "hiCreateAppForm", I defined as following:

myMainForm->matchBusReportField1->choices = abcGlobal->resultList1

myMainForm->matchBusReportField2->choices = abcGlobal->resultList2

...

myMainForm->matchBusReportField8->choices = abcGlobal->resultList8

n=0

foreach(o busNList

n=n+1

stringToSymbol(strcat("abcGlobal->resultList" sprintf(nil "%L" n)))=subProgram(o)

stringToSymbol(strcat("myMainForm->matchBusReportField" sprintf(nil "%L" n) "->choices"))=stringToSymbol(strcat("abcGlobal->resultList" sprintf(nil "%L" n)))

)

I failed. The above approach is not correct, then how do I do it? The length of "busNList" is a varable.

Please help!

Thanks,

Bonnie

 

 

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 10 years ago

    Bonnie,

    The two assignments in the loop should be something like this:

    result=subProgram(o)
    putprop(abcGlobal result concat('resultList n))
    get(myMainForm concat('matchBusReportField n))->choices=result

    Note that I could have avoided storing the intermediate result in a variable (result) but it actually makes the code a bit simpler because otherwise you ended up looking it back up from the abcGlobal again.

    Note the above is completely untested, but I think it should work OK.

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • bonnieatcds
    bonnieatcds over 10 years ago
    Hi Andrew,

    Thank you for your promptly response!

    Now I got following:
    *Error* putprop: first arg must be either symbol, list, defstruct or user type – nil.

    Is that because that my “foreach” is in a separated (…CB) procedure?

    Regards,
    Bonnie
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • bonnieatcds
    bonnieatcds over 10 years ago
    And I also change it to: get('myMainForm concat('matchBusReportField n))->choices=result Still got same error. Thanks, Bonnie
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • skillUser
    skillUser over 10 years ago

    Hi Bonnie,

    your second update suggests that the issue is with "get('myMainForm ..." - try changing it to this: "get(myMainForm ..." (remove the single quote)

    Best regards,

    Lawrence.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • skillUser
    skillUser over 10 years ago
    The error is with the putprop line, can you paste what you have for that?
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • bonnieatcds
    bonnieatcds over 10 years ago
    sorry, I was wrong with"get....": putprop(sdnaGlobal Computation_for_net concat('reultList n)) or
    putprop('sdnaGlobal Computation_for_net concat('reultList n))

    same error:
    \e *Error* putprop: first arg must be either symbol, list, defstruct or user type - nil
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 10 years ago

    Bonnie,

    This doesn't make much sense - it's really hard to tell without seeing the rest of the code. However, you should be able to figure this out yourself - either using the SKILL IDE (if you have a SKILL Development license), or simply by putting print statements in the code.

    The key thing here is what is sdnaGlobal set to before the putprop is called? If it is in fact nil, then it's not surprising that the error occurs. You need to have some kind of data structure (e.g. a DPL, a defstruct instance, a table - numerous others) which allow you to store properties on the object.

    I don't think you want to quote the symbol (your second example) - although not knowing how your code is using this global, it's hard to be sure. However, if you did indeed quote the sdnaGlobal, i.e. 'sdnaGlobal then it wouldn't have given that error. It might not have been what you want, but it shouldn't have given that error. So was it really failing in that line in the code?

    Regards,

    Andrew.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • bonnieatcds
    bonnieatcds over 10 years ago
    Hi Andrew and Lawrence, It works now!! (it was my typo for error on "putprop" ) Thank you very much for the help!! Bonnie
    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information