[JW Lua] Help with understanding an error message needed

Robert Wildling robertwildling at gmail.com
Sat May 14 13:49:11 CEST 2016


The documentation offers this example:

-- Process single item:
local staff = finale.FCStaff()
if staff:Load(1) then
   -- (The variable 'myID' must be defined here)
   staff.ItemNo = myID
   -- ('itemno' must be defined here)
   local myBooleanResult = staff:Load(itemno)
end

But what type of object is "itemno"? How do I have to define it???

*Robert M Wildling*

*composer | pianist | music engraver | progammer*
Göllnergasse 19/30 || A-1030 Vienna
ph: +43 676 6089613
@: robertwildling at gmail.com

2016-05-14 13:09 GMT+02:00 Robert Wildling <robertwildling at gmail.com>:

> Hi,
>
> a script loops over all staves of a score and logs some message to the
> console about found attributes, among them the staff's full name. But 2
> weird things happen:
>
> 1. it lists empty entries and I have no idea, where they come from. In one
> case, there was an instrument change (and it seems this script cannot read
> a staff name of an instrument change staff...) and two others from a
> multi-staff instrument (harp). But still there are 5 more logs of staves
> that have no name and are not in the score. I even tried to DeepDelete
> them, but to no avail...
> Is it possible that Finale remembers staves that were in the score at some
> earlier stage, but were deleted via ScoreManager at a later point?
>
> 2. The function is called like this: loadStaves(30). Depending on whether
> there is an attribute sent along, the script decides if it should loop over
> all staves (id == nil ... LoadAll() .. ) or over the specific one (
> Load(id) ). But the "found id" part of the script throws this error:
>
>     -- This function and ..."]:41: attempt to call method 'Load' (a nil
> value)
>
> According to the Class browser, though, the syntax is correct.
> Nevertheless, the Load method  will not even accept a number that is
> entered manually...
>
> Any ideas what I am doing wrong here?
> Thanks!
> Robert
>
>
>
> This is the script:
>
> ****************************
> function loadStaves( id )
>     local staffNameFull = finale.FCString()
>     local staffNameAbbr = finale.FCString()
>
>     if ( id == nil )  then
>         print ( "ID = not given, so get all staves")
>         local staves = finale.FCStaves()
>         staves:LoadAll()
>
>         for staff in each(staves) do
>             staffNameFull = staff:CreateTrimmedFullNameString()
>             staffNameAbbr = staff:CreateTrimmedAbbreviatedNameString()
>
>             print("ItemNo: ", staff:GetItemNo(),
>                     " ---> Staff name full: ", staffNameFull.LuaString,
>                     " - abbr: ", staffNameAbbr.LuaString
>             )
>
>             if ( staffNameFull.LuaString == ""
>                  and staffNameAbbr.LuaString == ""
>                  and staff:GetItemNo() == 30)
>             then
>                 print("      empty... delete this... or not?");
>                 local bool = staff:DeepDeleteData()
>                 print(bool)
>                 staves:SaveAll()
>             end
>         end
>
>    else
>        print("ID = ", id, ", process only that staff, type = ", type(id))
>        local staff = finale.FCStaves();
>        if staff:Load(id) then
>            staffNameFull = staff:CreateTrimmedFullNameString()
>            staffNameAbbr = staff:CreateTrimmedAbbreviatedNameString()
>            print("Staff name full: ", staffNameFull.LuaString, " - abbr:
> ", staffNameAbbr.LuaString )
>         end
>     end
> end -- end function loadStaff
>
> loadStaves(29)
> ************************************
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://jwmusic.nu/pipermail/jwlua_jwmusic.nu/attachments/20160514/185ae0bf/attachment.html>


More information about the JWLua mailing list