powerbuilder应用开发系列讲座

powerbuilder应用开发系列讲座

ID:27786298

大小:123.15 KB

页数:6页

时间:2018-12-06

powerbuilder应用开发系列讲座_第1页
powerbuilder应用开发系列讲座_第2页
powerbuilder应用开发系列讲座_第3页
powerbuilder应用开发系列讲座_第4页
powerbuilder应用开发系列讲座_第5页
资源描述:

《powerbuilder应用开发系列讲座》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、PowerBuilder应用开发系列讲座⑵调用Windows的动态链接库----许多熟练使用C的程序员在使用PowerBuilder时都希望自己以前在C上做的工作可以被PowerBuilder引用,这是完全可以的。在PowerBuilder中你可以通过外部引用函数的形式来调用动态连接库中的函数。PowerBuilder调用DLL程序使用规则PowerBuilder可以支持任何一种非PowerScript编写,并存储在动态链接库中的外部函数或过程的调用。但外部函数的参数必须是符合Pascal规则的(即参数压栈顺序从前至后)。在函数调用前,因先作函数声明,Power

2、Builder支持以下两种外部函数类型:•全局函数:可以在应用的任意位置调用;•局部外部函数:在window,menu,userobject或用户自定义函数等对象中定义。----外部函数声明的语法是:{Access}FUNCTIONReturnDataTypeFunction-Name({REF}{DataTypelArgl,•••,DataTypeNArgN})LIBRARYLibName外部过程声明的语法是:{Access}SUBROUTIONSubroutine({REF}{DataTypelArgl,...,DataTypcNArgN})——如果您还可以

3、Protected。对象的实象名加函是㈤象函的、万ffl对部量的贞定局变名指对例数访权制调的数限式对明atx定声rlV同指的c,p制以:数bli限可数函:pU的您函⑶限问。部权访陬外问限相用object,function(arguments)如在window的w_emp上调用局部外部函Recog(),就可这样使用:w_emp.Recog()如何在PowerBuilder与DLL之间传递参数在PowerBuilder的script中调用DLL中的函数,缺省情况下是通过传值法来传递参数(passedbyvalue),也就是说PowerBuilder将对要传递的传递改

4、变法(pa型前考传.参用要将数数参参该迓明传声后;:值’来来然VW□的-拷。数份1参一函用做给调dess加法面值ce>字nS--Lre键efe关rFbyREW值以拷‘传;数1这J参函将3过栈通中堆L以过DL可通望就希类数参在——在使用DLL时有一些基本规则——在MSWindows中,一个DLL在被装入内存后,只会有一个实例,不会因为多个程序使用同一个DLL而在内存中产生多个DLL拷贝。每个DLL只有一个最大为64K的数据段。缺省情况下,PowerBuilder都是使用传值法来传递参数。当你在函数应用说明时使用了REF关键字,PowerBuilder将传递一个32

5、位的地址指针(段地址+偏移量)给被调用的函数,而不是只传递偏移量,这才能保证DLL中的函数能得到PowerBuilder中数据的正确地址。在PowerBuilder中使用的数据类型与C语言支持的数据类型不尽相同,C中不支持的数据类型应在调用前先进行转换。对于结构,要在C和PowerBuilder中做相等的说明。PowerBuilder不支持函数指针的传递,因此在PowerBuilder中不能使用回调函funcion)。如果DLL的参数需要空指针(NULL),你可以向函数传递一个值为0的长整型。Windows中使用的有些数据类型C中并不支持,但一般在C的预编译器中

6、用TYPEDEF作预定义,同时PowerBuilder接口也应当作适当转换。使用DLL的常见错误和需要注意的地方1.导致保护性错(generalprotectionfault)导以将有存能内可的因序原程的用错应性的护在Windows中,如果你企图访问不是属于你致保护性错。导致保下几点:可.你参。用+O调递$序示传周程显⑤数V踪比跟CB(」是能sagDL误不MCS㈤错器用-a.种试使这调中I了不正确的参数。的,因力PowerBuilder的(fe.在涞过法方只境对中环例检查参数传递的正确性。更全面的方法是使用Windows的调试版本(带有调试信息的Windows环

7、境)和功能更强的调试器(Soft-iceforwindows或CodeView等);b.C中对数组的访问超出了PowerBuilder中申请的边界。在C中是不作数组边界检查的,这可能是导致保护性错的最常见的原因;你取好便在使to以针指LL41U存削内置的针放旨释;经内的Irro放判ffl释行贞经进C.已前把用针指远用使在是、』的是伹栈既般量都,堆居变量段的M局变据序Lf全他数程CDI1O勺是t不其d用内堆量的’己调勻的变配:是J序态^的什程静中P用glD用1堆L贞存应H据D段寄1er数的栈着U中,的配堆味erBC序分有意pow程中没就向量内不以变与版而J的何fa

8、rrcpy—堆任的str

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。