欢迎访问 水平网    今天是:2017年11月22日 注册 | 登录 | 订阅 | 收藏
推荐文章
热点文章
专题
JQuery框架
Prototype.js
HTML5

在PB中使用VC++编制的DLL

本文介绍了动态链接库的基本特点,给出了VC++建立DLL以及在PowerBuilder中调用VC++创建的DLL函数的编程实例,实现了通过DLL连接PowerBuilder和VC++编制的不同程序的目的。   一、DLL概述:   动态链接库(Dynamic-Link Library),简称DLL,是基于Windows程序设计的一个非常重要的组成部分。使用DLL有许多优点:  (1)使用DLL的动态连接不是将库代码拷贝,只在程序中记录函数的入口点和接口,在程序执行时才将库代码装入内存,如果有多个程序使用相同的DLL,也只需将DLL在内存中装载一次,节省了内存开销。  (2)DLL是基于Windows的程序模块,它不仅包含可执行代码,还可以包含数据,各种...
类别:C/S程序开发 - PowerBuilder,阅读:429,更新:2014-05-12

PB中使用winapi生成唯一的永不重复字符串

1、定义结构及外部函数global type uuid from structure ulong data1 uint data2 uint data3 character data4[8]end typeFunction ulong UuidCreate(ref uuid lpUUID) LIBRARY "rpcrt4"Function ulong UuidToString (ref uuid lpUUID, ref long lpUUIDString) LIBRARY "rpcrt4" Alias for "UuidToStringA"Function ulong RpcStringFree(long lpUUIDString) LIBRARY "rpcrt4" Alias for "RpcStringFreeA" 2、函数主体CONSTANT Long RPC_S_OK = 0CONSTANT Long RPC_S_UUID_LOCAL_ONLY =...
类别:C/S程序开发 - PowerBuilder,阅读:417,更新:2014-05-12

PB中的Describe,Evaluatate,LookUpDisplay

Describe 可以描述DW中某个对象的某个属性的取值,虽然函数Describe可以获取对象的信息,但是表达式的取值就不能正常读取了,而这又是经常遇到的.Evaluate 如果想获取数据窗口对象中由属性、函数等构成的表达式的取值时,必须在函数Describe中使用函数Evaluate,LookUpDisplay 在数据窗口控件上显示的值和字段实际得到的值并不相同,使用函数GetItemX只能读取这样的字段的真实取值,而不是用户看到的值。如何才能读取用户看到的值?可以使用此函数,LookUpDisplay函数不能直接从PowerScript调用,可以在Describe中和Evaluate函数配合使用。因为函数Lookupdisplay不能指定对哪行数据进行操作,它的参数只有一个字段名称,所以必...
类别:C/S程序开发 - PowerBuilder,阅读:410,更新:2014-05-12

Powerbuilder中的内存操作

我们知道pb中不支持指针,但我们在使用WIN32 API和调用一些dll中的外部函数时候,经常会与其打些交道,所以这里将相关的一些技巧收集整理起来。1、根据字符串地址得到字符串完全通过pb自带的函数String就可以实现,函数的语法为String ( data, { format } ),当我们将变量地址作为Data参数,字符串“Address”作为format参数,函数的返回值就是我们需要的字符串。这是种未公开(呵呵,pb的帮助中找不到),但被广泛使用的方法。例:string ls_tmp ls_tmp =string(hStrData,"Address")2、得到pb中某个字符串变量的地址这次,单纯依靠pb自身是行不通了,需要请来Win Api函数帮忙了:主人公:Function long lst...
类别:C/S程序开发 - PowerBuilder,阅读:394,更新:2014-05-12

在PB中根据结构伸展文件创建数据表

在PowerBuilder(文中简称PB)中,没有现成的像 VFP 中根据结构伸展文件生成数据表的函数。而在数据库应用系统的开发中,常常需要根据用户的要求创建数据表。我们可以仿照VFP的结构伸展文件创建一个数据表sjbjg(如图),用来存放用户欲创建数据表的结构,从而来相对简单地解决这个问题。为sjbjg数据表建立一个名为d_sjbjg的Grid数据窗口,数据源采用Quick Select。新建一个窗口,添加一个数据窗口控件dw_1和一个按钮控件cb_1。Dw_1的dataObject设置为d_sjbjg,cb_1的text设置为“创建数据表”。在cb_1的Clicked事件中输入以下代码:string Mysqlint ls_last,rowmysql='drop table Tablename' /...
类别:C/S程序开发 - PowerBuilder,阅读:374,更新:2014-05-12

在PB中如何对ASA进行数据备份

一、完全备份和增量备份"完全备份"对数据库文件和事务日志都进行备份。"增量备份"仅对事务日志进行备份。通常,会在完全备份过程中穿插进行多个增量备份。比如,一周进行一次完全备份,每天进行一次增量备份。二、执行完全备份或者增量备份  完全备份是对数据库文件和事务日志文件进行备份。增量备份只备份事务日志文件。通常,您应当在每两次完全备份之间进行几次增量备份。  1. 确保您对数据库具有DBA权限。  2. 对数据库执行校验检查以确保它未损坏。您可以使用Validation实用程序或sa_validate存储过程。  例如:以DBA身份连入数据库,然后运行命令:call sa_validate或者在命令行下: dbvalid -c "...
类别:C/S程序开发 - PowerBuilder,阅读:450,更新:2014-05-12

如何在PB中制作特殊形状数据窗口或按钮

sp; // // 测试用数据(窗口多边形) // // // ////////////////////////////////////////////////// long ll_x1, ll_x2, ll_x3 long ll_y1, ll_y2, ll_y3 long ll_handle ll_x1 = 4 ll_y1 = 4 ll_x2 = UnitsToPixels(parent.width, xunitstopixels!) - 4 ll_y2 = UnitsToPixels(parent.height, yunitstopixels!) - 4 ll_x3 = 250 ll_y3 = 250 ll_handle = CreateRoundRectRgn(ll_x1, ll_y1, ll_x2, ll_y2, ll_x3, ll_y3) SetwindowRgn(handle(parent), ll_handle, true) return 1 end event type st_1 from statictext within w_button integer x = 567 integer y = 200 integer width = 1207 integer height = 264 boolean bringtoto...
类别:C/S程序开发 - PowerBuilder,阅读:379,更新:2014-05-12

在PB中统计EXCEL文件的行列数

解决方案:OLEObject OLE_MyExcel OLE_MyExcel =Create OLEObject OLE_MyExcel. ConnectToNewObject("excel.Application")OLE_MyExcel.visible=false OLE_MyExcel.Workbooks.Open("c:xxx.xls") messagebox("rows",string(OLE_MyExcel.ActiveWorkbook.Activesheet.UsedRange.Rows.Count))OLE_MyExcel.quit() OLE_MyExcel.DisConnectObject() destroy OLE_MyExcel...
类别:C/S程序开发 - PowerBuilder,阅读:374,更新:2014-05-12

在PB中使用ASCII码为0的字符

问题描述:如何在PB中使用ASCII码为0的字符?解决方案:1、如何向注册表中写二进制,要求最后显示为“00”blob{1} kli_sysdir=RegistrySet('HKEY_current_user oftwareodbcodbc.ini zaEnginesXbase','Statistics',RegBinary!,k)2、如何向注册表中写二进制,要求最后显示为“01”blob lb_vlb_v=blob(char(1)) li_sysdir=RegistrySet('HKEY_current_user oftwareodbcodbc.ini zaEnginesXbase','Statistics',RegBinary!,lb_v) ************************************原理跟上文一样,声明blob{1} k,然后使用k即可代表00...
类别:C/S程序开发 - PowerBuilder,阅读:390,更新:2014-05-12

如何在PB中编写PING代码?

问题描述:如何在PB中编写PING代码?解决方案:声明外部函数:Function ulong IcmpCreateFile () Library "icmp.dll"Function long IcmpSendEcho (ulong IcmpHandle, ulong DestinationAddress, string RequestData,long RequestSize, long RequestOptions, Ref icmp_echo_reply ReplyBuffer, long ReplySize, long Timeout ) Library "icmp.dll" Alias for "IcmpSendEcho"Function long IcmpCloseHandle (ulong IcmpHandle) Library "icmp.dll"Function ulong inet_addr (string cp) Library "ws2_32.dll" Alias for "inet_addr"代...
类别:C/S程序开发 - PowerBuilder,阅读:729,更新:2014-05-12

如何在PB中调用F1控件如何插入图片

一、API声明: SUBROUTINE CopyMemory(ref METAHEADER Destination , ref blob Source, long Length) LIBRARY "kernel32" Alias for "RtlMoveMemory" SUBROUTINE CopyMemory2(ref blob Destination , ref blob Source, long Length) LIBRARY "kernel32" Alias for "RtlMoveMemory" Function ulong SetMetaFileBitsEx(ulong nSize,ref blob lpData) LIBRARY "gdi32.dll" 二、PB脚本: METAHEADER lst_Hdr integer li_FileNum Long ll_hMF,ll_loops,ll_pos,ll_len blob lb_structure,lb_da...
类别:C/S程序开发 - PowerBuilder,阅读:477,更新:2014-05-12

如何在PB脚本当中获取存储过程的返回值

本文拟以SYBASE ASE 10.X和11.X数据库为例,说明如何在PB脚本当中获取存储过程的返回值。作为一个存储过程,其输出的结果数据可能包括三类:SELECT结果集、RETURN结果、OUTPUT参数。尽管输出方式众多,但PB脚本仅仅借助简单的FETCH…INTO…语句即可全部获取这些输出数据,具体方式如下: (一)在SYBASE ASE 10.X和11.X数据库当中创建一个存储过程deptroster,其有一个输入参数@deptno、两个输出参数@totsal 和 @avgsal、一个RETURN值@number_of_emps以及包含职员姓名和工资的SELECT结果集,可见除了输入参数@deptno外,其他均为输出数据,我们需要在PB脚本中获...
类别:C/S程序开发 - PowerBuilder,阅读:377,更新:2014-05-12