- 博客(46)
- 资源 (6)
- 收藏
- 关注
原创 java类中的构造函数是回调用的
constructor是new 表达式的"回调函数" java constructor 有没有返回值 是不是方法
2022-12-18 18:10:46
192
原创 bmp图像的90度旋转
从网上搜到的,一开始是用canvas.pixel处理,实在是太慢又搜到了scanline方式的, 实测逆时针90旋转好用,就又改了一个顺时针90度旋转的(对delphi一知半解,最后是试出来的,前后花了近两天时间;中间还被迫使用三次逆时针90度来代替顺时针90度,实在是汗...)procedure rotate2(bmpfilename: PChar); stdcall;var sourcebmp: Graphics.TBitmap; nIdx, nOfs, x, y, i...
2021-10-13 16:48:49
1228
原创 excel的lookup函数
lookup函数, 在指定区域内,用二分法查找目标,定位到第一个符合条件的单元格后,在等值的下方邻格中继续查找, 得到最后一个符合条件的行号并且返回结果区的, 相应行号的单元格里的值查找目标的过程,可能是1遍或2遍如果目标区域中,存在某个单元格的值,与指定值相等,就只查询这一遍如果没有,就会查询第二遍,这次是查询小于指定值的Excel中lookup函数的用法详解_会计实务_中华会计网校 (chinaacc.com)...
2021-10-08 13:19:39
2058
原创 pb的内部类
forwardglobal type uo_test内部类 from nonvisualobjectend typeend forwardglobal type uo_test内部类 from nonvisualobjectend typeglobal uo_test内部类 uo_test内部类forward prototypespublic subroutine of_test内部类 (integer a_cnt)end prototypespublic subroutine .
2021-09-24 20:52:16
322
原创 pb12.5通过sendmessage读取mle中的一行文字
在pb11.5中,是不需要使用blob转换的,是升级到12.5后,才被迫换成这种方式的外部函数声明:function long SendMessage(ulong hWnd, uint msg, long wParam, ref blob lParam) library "user32.dll" alias for "SendMessageA;ansi"long numsblob lp_bufferstring ls_textfor i=0 to mle_1.linecount( )...
2021-05-24 10:33:00
700
原创 用powerbuilder实现汉诺塔的栈算法(用excel展示栈的变化过程)
用于保存汉诺塔的结构定义:global type str_任务 from structure integer 盘子个数 character a起点柱 character 中转柱 character 目标柱end type每个汉诺塔, 都是用这个结构来保存的用于求解的栈的类:forwardglobal type uo_汉诺塔任务栈 from nonvisualobjectend typeend forwardglobal type uo_汉诺塔任务栈 from
2020-10-15 21:42:47
287
原创 有序向量中, 用二分法插入一个新值
学习了一节C++视频课程, 把老师的例子, 改了一下, 加深理解#include <iostream>#include <vector>using namespace std;void insert2vec(vector<int> &v, int n){ vector<int>::iterator lo=v.begin(), hi=v.end()-1; vector<int>::iterator mi=v.begi.
2020-10-03 09:46:38
244
原创 C语言指针的左值与右值
为什么要用指针? 因为计算机是"存储式执行", 不论代码还是数据, 都在内存中存放看1.指针, 首先是内存中的一个地址;同时根据使用的目的, 有些不同的属性 1.1用于读/写一个变量(对象), 这时指针是一个变量(对象)的起始地址, 有数据类型这个属性 2.2用于读/写某个数组成员, 特性同上(数据类型有可能是"子数组") 2.3...
2020-09-21 15:46:51
1433
原创 cad 中的块与块参照
cad中最常用的块有两种, 一种是常规块(内部块), 一种是外部块常规块在当前文件内保存, 也只能在当前文件内使用外部块, 是一个单独的dwg文件, 可以在多个cad文件中引用如果对外部块进行"绑定"操作, 则转换为内部块从效果上来说, 块相当于"类"块参照, 相当于类的"实例"(对象)每个块参照, 有各自的属性(比例, 角度...)对于"绑定"(bind)方法来说, 这个是块的方法, 不是块参照的方法从这一点可以看出, 块与块参照的关系, 并不是类与对象的...
2020-06-25 15:40:55
4472
原创 函数指针练习与理解
#include <stdio.h>#include <stdlib.h>int add(int a, int b){ return a+b;}int main(){ int (*fn)(int, int)=add; if ( *fn == &add) puts("*fn == &add\n"); if ( *fn == add) puts("*fn == add\n"); if ( &fn != a.
2020-05-18 11:45:15
227
原创 变量 内存 指针(七) 指针与数组练习
指针与数组练习 运行结果#include <stdio.h>#include <stdlib.h>int main(){ int cnt, (*p)[5]; int i; printf("请输入数组的个数(>0):\n"); scanf("%d", &cnt); if (cnt>0) p=m...
2020-05-07 08:24:15
214
原创 个人理解的C语言的声明
有些教材上说, 声明不是语句, 这里为了叙述方便, 还是使用声明语句这种说法了C语言的声明语句, 我知道的有4种(变量,数组,结构类型, 函数):1.变量声明, 例如 int a, *p; //a是 整型变量, p是 整型指针变量 int (*p_i4)[4]; //p_i4, 是 int[4]型指针变量 2. (个人观点, C中只有数组数据, 没有作为左值的 ...
2019-02-18 14:57:27
420
原创 啊哈C快速排序, 为什么必需从右边开始扫描
(关于这个问题的前提: 算法是要实现"从小到大"的升序排列, 因此, 是把左边的较大数与右边的较小数进行交换 ) 从左边开始的扫描, 其目标是找到第一个比基准值大的数, 然后与比基准值小的数进行交换同时有个条件, 需要这个较大的家伙是在比基准值小的数之前, 也就是较小数的左边否则就失去"左大"和"右小"交换的机会了因此, 这种情况下, 必须先从右向左找到第一个小于基准数的"右小"...
2018-10-29 11:28:25
1222
原创 isnumber()函数注意事项
string ls_套件id="1,2,3"string 套件id数组[]if isnumber(ls_套件id) then cnt=1 套件id数组[1]=ls_套件idelse cnt=gf_拆分字串(ls_套件id, ",", 套件id数组)end if以上代码执行结果:cnt=1, 套件id数组[1]="1,2,3"另外, long("1,2...
2018-09-18 18:06:04
5710
原创 C语言中变量的声明与分号的使用
断断续续学习C语言多年了,可能自学这种语言, 对我来说难度有点大... 1.变量和函数使用前需要声明, 而声明从执行结果上分为两种 A.声明并创建变量 (定义性声明, 分配内存) B.只声明变量 (引用性声明) A例:int age; B例:extern...
2018-08-06 15:29:24
3990
原创 JAVA对象的实例化过程与多态的理解
原博文在:JVM--从JVM层面深入解析对象实例化、多态性实现机制 (https://blog.youkuaiyun.com/championhengyi/article/details/78998821)原文作者:珩翊一. 虽然看不懂字节码及栈分析,但至少理解到了两点1. this相当于指针变量,只读指针2. 对象实例化次序(可能是): 2.1 this对象分配内存: 父类和当前类...
2018-08-04 10:14:41
407
原创 Sharedobject与pb多线程
PB没有提供完整的多线程机制,只是提供了一种通过Sharedobject进行线程间通信的方式, 实际是以一个新线程启动另一个虚拟机, 并在其中实例化一个对象来运行一段程序(函数), 并在完成后执行回调。这个具体概念目前还不是特别清晰, 从SharedObjectRegister函数的帮助中看, 原文写的是"opens a separate runtime session", 直译是打开一...
2018-05-21 17:27:05
1890
1
原创 datawindow的Find函数
应该算做是一个Bug吧 例: dw_1.setItem(1, "fname", "Nike")j=dw_1.find("fname='Nike '", 1, dw_1.rowcount()) //注意, Nike后面带有一个空格 这时pb的find函数返回了1按Find函数说明, 应该返回值为0或者>1的其它行号总之不应该返回1, 因为函数实参中给的数据在尾部多了一个空
2015-11-05 22:38:45
4827
原创 内存 变量 指针(四)
变量是一块内存区域, 对变量的常用操作包括:1. 声明, 也就是分配内存, 同时以标识名称来命名2.赋值, 用给定的数据, 替换该内存中的数据3.在右值表达式中引用, 也就是提取该内存中的数据, 代入表达式中4.*p 这个表达式, 返回值就是p指定的那块内存区域中的数据(也许未命名, 也许其他人写的代码中已命名, 但作为被调用函数来说, 不知道变量名, 但收到了存取的地址和数据类型)...
2015-05-19 07:22:16
409
原创 pb中window的windowstate属性与setredraw函数
win.setredraw(false) win.windowstate=maximize!win.setredraw(true)
2014-11-12 00:26:24
4782
1
原创 内存 变量 指针(三) 表达式与自增后缀运算
0. 表达式由运算符及其操作数组成 i++ ++ 是后自增运算符, i是它的操作数 i+=1 += 是求和赋值运算符, i和1都是它的操作数, i是左操作数, 1是右操作数 1. 左值和左值表达式 可以放在赋值运算符左侧的操作数是左值 如果一个表达式的计算结果是左值,那么这个表达式是左值表达式...
2014-05-30 10:22:14
887
原创 变量 内存 指针
变量、内存、指针1、一个变量需要使用一段连续的内存存放,内存中的二进制数,就是变量值。相同的二进制数,根据变量数据类型,表现为不同的变量值2、可以声明一个变量代表这段内存,对这个变量赋值就是对这段内存写入数据,在表达式中使用这个变量就是从内存中读取数据或者说“一个变量就是特定的一段内存”3、指针,内存数据指针的简称4、除了使用变量读写内存中的变量
2014-05-15 07:25:47
902
原创 modify datawindow.table.select, 注意字符串的表示方法
modify("datawindow.table.select=' "+ls_slq+" ' ") modify('datawindow.table.select=~' '+ls_slq+' ~' ') modify("datawindow.table.select=~""+ls_slq+" ~" ") modify('datawindow.table.select=" '+ls_
2013-08-25 10:00:02
1238
原创 datawindowobject属性值
一般情况下, dwo的属性值是布尔型时, 可以用true/false, 1/0, yes/no, 但也有个别特殊属性不是这样的 例: dw_1.modify("datawindow.detail.height.autosize=yes") 只可使用yes/no赋值, 不区分大小写, 可以带引号或不带引号不可用True/False, 1/0
2013-04-30 10:54:53
833
原创 crosstab数据窗口的StaticMode
如果第一次执行dw.modify("datawindow.crosstab.staticmode='yes'")时, dw中已经有至少一行, 则不论后续retrieve时是否有返回行, 始终执行正常 如果第一次执行dw.modify("datawindow.crosstab.staticmode='yes'")时, dw的行数为0, 则modify失败, 提示语法错误, 且再retriev
2012-07-11 15:53:44
1075
原创 数据库索引与并发
为表中的某个列或是列组合建立索引, 作用有两个方面: 1.提高检索效率: 这实际上是把"B树"类的算法间接引入到了自己的程序中来, 客观上提高了客户的操作体验 2.提高并发度: 如果存在索引, DBMS就不必进行全表扫描(可能引起加锁超时或死锁等). MSSQL SERVER是自动处理"锁"的, 单用户程序开发者不太意识到锁的存在. 锁是比较复杂的一个对象, 有不同的粒度和
2012-05-24 14:42:31
1498
原创 修改protect属性, 可能会触发rowfocuschanged事件
如果dw的所有字段都不可编辑, 修改protect 或是修改tabsequence属性, 可能会触发rowfocuschanged事件, 这是因为原来没有任何字段具有focus(处于可编辑状态), 修改protect后, 第一个可编辑的字段将会获得focus,变成可编辑状态, 进而触发rowfocuschanged事件
2012-04-20 13:08:18
930
原创 并发业务实例
2012-2-18 13:16:43这个是实际业务开发中的例子工作流程:订单审核-->审核后的订单加入生产计划(生产计划中不能包括未审核订单)并发可能导致的错误结果①订单A, 通过审核②查看通过审核的订单列表,其中包括了订单A③选中订单A,准备加入生产计划④生产计划保存前, 订单A在另一地点被反审核⑤生产计划保存成功, 包括了一个未审核的订单A解决办法:使用dw
2012-02-18 13:25:25
674
原创 vc++虚函数 纯虚函数
virtual 绑定标识符用于决定的函数限定关键字这被称为类的"多态"首先,可以把一个派生类的(对象)指针赋值给它的祖先类(对象)指针; 只有在这种情况下, 会出现"多态".要注意,在赋值后,内存中的派生类对象一定是保持不变的 而在两个不同的地址中在分别存放着祖先类和派生
2011-07-16 16:29:11
1951
原创 classname函数与控件name字串
控件.classname() 返回在painter中对控件的命名classname( 对象 ) 返回对象的 name 字串一般的, 不管是否可见, 只要是在painter中添加的控件, 都可以直接使用 控件.classname() 而在代码中通过create 类名 来创建的对象i
2011-07-07 11:35:02
992
原创 retrieveend 事件中的rowcount参数与rowcount()函数的区别
<br />retrieveend事件中的rowcount参数中保存的是从数据库中取到的行数, rowcount()函数返回的是primary缓冲区中的行数.<br /> <br />区别显而易见, 参数rowcount是包括filter缓冲区中的行数在内的.<br /> <br />由于retrieve()函数执行后会把不符合filter条件的行立即移入filter区, 因此, rowcount与rowcount()的值是不一定相等的.<br /> <br />强调这一点是有实际意义的:<br />
2011-05-23 18:09:00
1509
原创 datewindow的update where子句控制并发的实例
dw的更新条件子句控制“并发”的实例2011-5-20 10:08 如上图有一个【发货记录表】,有两个部门操作① 是成品发货,要记录装车时间和条码扫描人② 是财务,要记录出库时间(实际是收款时间)和审核人 虽然在成品发货时,不会修改【财务审核人/出库时间】,但是在 update的where子句中,仍要包
2011-05-20 10:35:00
747
原创 item的 original值
经试验, getItemNumber( row, 1, Primary!, true) 取得item的原始值时, 如果getItemStatus(row, 0, primary!)是Newmodified!, 那么原始值与当前值是一样的 因此, 只判断DataModified!是不可靠的, 原始值与当前值有可能相同 也可能不同 只有当数据行是retrieve自数据库时, datamodified!才会代表原始值与当前值不一致 如果是insertrow()的新增行, 当Ite
2010-10-07 09:48:00
681
通过"栈"算法,解汉诺塔(可通过excel显示栈内数据的变化过程)
2020-10-24
输入法调整设置工具 动态调整输入法顺序而无须重启
2009-02-23
pb11.5补丁 作者Study qq:937207115
2008-11-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人