Highest Image File ID

Bob Sneidar bobs at twft.com
Wed Mar 21 16:38:09 EDT 2012


Okay I updated the function to return an array to account for properties that are in array form. It returns a numbered array with two keys, the long ID of the object, and the property of each object you passed as an argument. I had to remove the sorting though because I am not about to sort an array. So far as I know sorting does not work with arrays. There should be some kind of form of sort for arrays like: 

sort the keys of myArrayA by myArray[id] of each -- or maybe by element 2 of each

but of course there is not. At any rate sorting arrays is too much trouble, and I digress. 

Here's the updated function:

function objectList theType, theProp
    if the last char of theType is "s" then put char 1 to -2 of theType into theType
    if theSort is empty then put "ascending" into theSort
    
    try
        do "get the " & theProp & " of " & theType & " 1 of this card"
    catch theError
        if item 1 of the last line of theError is "166" then
            return "Error: Invalid type"
        else
            return "Error: " & the last line of theError
        end if
    end try
    
    put empty into theObjectList
    put empty into theObjectListA
    put 1 into theLineNum
    put theType & "s" into thePluralType
    put the name of this card into theStartCard
    lock screen
    lock messages
    
    repeat with theCardNum = 1 to the number of cards of this stack
        go card theCardNum
        
        try
            do "put the number of " & thePluralType & " of this card into theTypeCount"
            repeat with theObjectNum = 1 to theTypeCount
                do "put the long ID of " & theType && theObjectNum & " into theObjectID"
                do "put the " & theProp & " of " & theType && theObjectNum & " into theValue"
                
                if theValue is not in theObjectList then
                    put theObjectID into theObjectListA[theLineNum][LongID]
                    put theValue into theObjectListA[theLineNum][theProp]
                    put theValue into line 1 of theObjectList
                    add 1 to theLineNum
                end if
            end repeat
        catch theError
            breakpoint
        end try
    end repeat
    
    go card theStartCard
    return theObjectListA
end objectList

The results for a call like put objectList("images", "short name") into theArrayA returns a result (in printKeys() format) like this:

1
     short name: imgLogonsHi
     LongID: image id 10101 of card id 1002 of stack "/Users/bobsneidar/Documents/LiveCode Stacks/Conference Scheduler/CSL Main.livecode"
2
     short name: barpattern.png
     LongID: image id 9999 of card id 1002 of stack "/Users/bobsneidar/Documents/LiveCode Stacks/Conference Scheduler/CSL Main.livecode"

<snip>



More information about the use-livecode mailing list