十七、类定义查找函数
类定义查找函数用于在一个或多个PB应用程序库(PBL)中查找对象、全局函数和类型,并提供他们的类定义信息、函数脚本和类型定义信息。
1、FindClassDefinition()
功 能:在一个或多个PB应用程序库(PBL)中查找指定的对象并提供该对象的类定义信息。
语 法:FindClassDefinition ( classname {,librarylist} )
参 数:classname:要得到信息的对象的名称;
librarylist:可选参数,它是一个字符串数组,其值为要在其中查找对象的应用库(PBL)的名称,该名称使用完整的路径名,如果省略了该参数,那么FindClassDefinition()函数按当前运行应用程序的库列表查找对象。
返回值:ClassDefiniton。返回包含指定对象类定义信息的ClassDefinition对象的引用。如果任何参数的值为NULL,FindClassDefinition ()函数返回NULL。
示 例:This example searches the libraries for the running application to find the class definition for w_genapp_frame:
ClassDefinition cd_windef
cd_windef = FindClassDefinition("w_genapp_frame")
This example searches the libraries in the array ls_libraries to find the class definition for w_genapp_frame:
ClassDefinition cd_windef
string ls_libraries[ ]
ls_libraries[1] = "c:\pwrs\bizapp\windows.pbl"
ls_libraries[2] = "c:\pwrs\framewk\windows.pbl"
ls_libraries[3] = "c:\pwrs\framewk\ancestor.pbl"
cd_windef = FindClassDefinition("w_genapp_frame", ls_libraries)
2、FindFunctionDefinition()
功 能:在一个或多个PB应用程序库(PBL)中查找指定的全局函数并提供该函数的脚本定义信息。
语 法:FindFunctionDefinition ( functionname {,librarylist} )
参 数:functionname:要得到其信息的全局函数的名称;
librarylist:可选参数,它是一个字符串数组,其值为要在其中查找对象的应用库(PBL)的名称,该名称使用完整的路径名,如果省略了该参数,那么FindFunctionDefinition()函数按当前运行应用程序的库列表查找对象。
返回值:ScriptDefiniton。返回包含指定函数脚本信息的对象的引用。如果任何参数的值为NULL,
FindFunctionDefinition()函数返回NULL。
示 例:This example searches the libraries for the running application to find the function definition for f_myfunction:
ScriptDefinition sd_myfunc
sd_myfunc = FindFunctionDefinition("f_myfunction")
This example searches the libraries in the array ls_libraries to find the class definition for w_genapp_frame:
ScriptDefinition sd_myfunc
string ls_libraries[ ]
ls_libraries[1] = "c:\pwrs\bizapp\windows.pbl"
ls_libraries[2] = "c:\pwrs\framewk\windows.pbl"
ls_libraries[3] = "c:\pwrs\framewk\ancestor.pbl"
sd_myfunc = FindFunctionDefinition("f_myfunction", ls_libraries)
3、FindTypeDefinition()
功 能:在一个或多个PB应用程序库(PBL)中查找指定的数据类型并提供该类型的类型定义信息。
语 法:FindTypeDefinition ( typename {,librarylist} )
参 数:typename:要查找类型信息的数据类型的名称,数据类型可以是简单数据类型(比如:Integer、Long 等),也可以是枚举类型或类;
librarylist:可选参数,它是一个字符串数组,其值为要在其中查找对象的应用库(PBL)的名称,该名称使用完整的路径名,如果省略了该参数,那么FindFunctionDefinition()函数按当前运行应用程序的库列表查找对象。另外,PB还要查找其内部库,以便找到内置定义,比如枚举类型或系统类。
返回值:TypeDefiniton。返回包含指定数据类型信息的对象的引用。如果任何参数的值为NULL,
FindTypeDefinition()函数返回NULL。
示 例:This example gets a TypeDefinition object for the grGraphType enumerated datatype. It checks the category of the type definition and, since it is an enumeration, assigns it to an EnumerationDefinition object type and saves the name in a string:
TypeDefinition td_graphtype
EnumerationDefinition ed_graphtype
string enumname
td_graphtype = FindTypeDefinition("grgraphtype")
IF td_graphtype.Category = EnumeratedType! THEN
ed_graphtype = td_graphtype
enumname = ed_graphtype.Enumeration[1].Name
END IF
This example is a function that takes a definition name as an argument. The argument is typename. It finds the named TypeDefinition object, checks its category, and assigns it to the appropriate definition object:
TypeDefinition td_def
SimpleTypeDefinition std_def
EnumerationDefinition ed_def
ClassDefinition cd_def
td_def = FindTypeDefinition(typename)
CHOOSE CASE td_def.Category
CASE SimpleType!
std_def = td_def
CASE EnumeratedType!
ed_def = td_def
CASE ClassOrStructureType!
cd_def = td_def
END CHOOSE
This example searches the libraries in the array ls_libraries to find the class definition for w_genapp_frame:
TypeDefinition td_windef
string ls_libraries[ ]
ls_libraries[1] = "c:\pwrs\bizapp\windows.pbl"
ls_libraries[2] = "c:\pwrs\framewk\windows.pbl"
ls_libraries[3] = "c:\pwrs\framewk\ancestor.pbl"
td_windef = FindTypeDefinition("w_genapp_frame", ls_libraries)