Important: The information in this document is obsolete and should not be used for new development.
GetIndResource
You can use theGetIndResource
function repeatedly to get handles to all resources of a given type in all resource forks open to your application.
FUNCTION GetIndResource (theType: ResType; index: Integer): Handle;
theType
- A resource type.
index
- An integer ranging from 1 to the number of resources of a given type returned by
CountResources
, which is the number of resource types in all open resource forks.DESCRIPTION
Given an index ranging from 1 to the number of resources of a given type returned byCountResources
(that is, the number of resources of that type in all resource forks open to your application), theGetIndResource
function returns a handle to a resource of the given type. If you callGetIndResource
repeatedly over the entire range of the index, it returns handles to all resources of the given type in all resource forks open to your application.The function reads the resource data into memory if it's not already there, unless you've called
SetResLoad
with theload
parameter set toFALSE
.
The
- IMPORTANT
- If you've called
SetResLoad
with theload
parameter set toFALSE
and the data isn't already in memory,GetIndResource
returns an empty handle (a handle whose master pointer is set to NIL). This can also happen if you read resource data for a purgeable resource into memory and then callSetResLoad
with theload
parameter set toFALSE
. If the resource data is later purged and you call theGetIndResource
function,GetIndResource
returns an empty handle. You should test for an empty handle in these situations. To make the handle a valid handle to resource data in memory, you can call theLoadResource
procedure.GetIndResource
function returns handles for all resources in the most recently opened resource fork first, and then for those in resource forks opened earlier in reverse chronological order.
If you want to find out how many resources of a given type are in a particular resource fork, set the current resource file to that resource fork, then call
- Note
- The
UseResFile
procedure affects which file the Resource Manager searches first when looking for a particular resource; this is not the case when you useGetIndResource
to get an indexed resource.Count1Resources
and useGet1IndResource
to get handles to the resources of that type.If you provide an index to
GetIndResource
that's either 0 or negative,GetIndResource
returnsNIL
, and theResError
function returns the result coderesNotFound
. If the given index is larger than the value returned byCountResources
,GetIndResource
returnsNIL,
andResError
returns the result coderesNotFound
. If the resource to be read won't fit into memory,GetIndResource
returnsNIL
, andResError
returns the appropriate result code.SPECIAL CONSIDERATIONS
TheGetIndResource
function may move or purge memory blocks in the application heap. Your application should not call this function at interrupt time.RESULT CODES
noErr 0 No error resNotFound -192 Resource not found SEE ALSO
To check for errors, call theResError
function as described on page 1-47.For a description of the
CountResources
function, see page 1-93. For a description of theUseResFile
procedure, see page 1-65. For descriptions of theSetResLoad
andLoadResource
procedures, see page 1-74 and page 1-75, respectively.