
delphi
c_huabo
这个作者很懒,什么都没留下…
展开
-
为什么C币已经到期被清除了
为什么C币已经到期被清除了原创 2022-09-16 12:03:08 · 293 阅读 · 1 评论 -
"unable to load fbembed.dll"解决方法
<br />Firebird嵌入版的实施记录<br />使用Firebird的嵌入版只要把所需的几个DLL文件放在可执行文件目录下,就可以不要安装FB服务,使用起来方便,达到绿色软件的目的,按照Readme的说明,只要把fbembed.dll、icudt30.dll、icuuc30.dll和数据库文件放在同一个目录下,在程序里设置数据库的连接VendorLib的名称为fbembed.dll的完整名称(包括路径),这样就可以正常运行程序,但经测试,老是提示"unable to load fbembed.dll原创 2010-10-29 13:25:00 · 6154 阅读 · 2 评论 -
Delphi内存指针操作说明--怎样把字符串的内容拷贝到比特数组中?
<br />当从串口收到数据01 30 30 30 30 30 30 30 30 30 30 01, Str内容为#1'0000000000'#1,怎样把Str字符串的内容拷贝到比特数组rbuf中?<br /><br /><br /><br /><br />Len:=ComPort.ReadStr(Str, Count);<br /><br /> p:=Integer(Str); //@str:=$12fD70 //@$12fD70:=$D693D8<br /><br /> Memo.Lines.Add原创 2010-12-21 15:55:00 · 2533 阅读 · 0 评论 -
FireBird数据库嵌入版备份方法
FireBird数据库嵌入版备份方法原创 2010-12-09 09:41:00 · 1536 阅读 · 0 评论 -
RxSwtich的用法
RxSwtich开关是一个Delphi控件,可以用它来模拟实际的开关,比如电灯开关,继电器等,但它的使用和其它的按钮有一点区别,它是一个点击有三个事件的控件:OnClick、OnOn、Off,当点击后,和其它按钮一样会触发OnClick事件,而且也会触发它专有的事件OnOn或OnOff,当它原来的StateOn状态为True(打开时),点击之后StateOn状态变为原创 2010-10-13 17:05:00 · 1026 阅读 · 0 评论 -
Firebird数据库备份与恢复
<br />Firebird数据库备份:把下面的一行保存为备份.bat文件,在备份时只要双击运行即可,非常方便<br />gbak.exe -b 192.168.4.146:Data.FDB D:/Data.fbk -user sysdba -password masterkey<br />当原来的数据库有很多数据时,可能超过10G,这时备份会非常花时间,可以先把数据库的元数据备份下来,根据需要再用sql把要用的表导入即可:<br />gbak.exe -b -m 192.168.4.3:pim D:/pi原创 2010-09-08 13:44:00 · 8484 阅读 · 1 评论 -
FireBird数据库设计技巧
FireBird数据库以它的短小而精悍著称,其性能可以和大型的MSSQL SERVER、Oracle相媲美,具有其它优秀数据库的一些特点,而它自身又有一些它的特点,因此在设计数据库时也有一些和其它数据库的技巧。原创 2010-09-20 11:18:00 · 1240 阅读 · 0 评论 -
DL/T-2007数据帧为什么上行码为00
电力载波通信数据帧的每一个结构码应该都有它的特殊功能,就象从站上报数据给主站,上行码为00,其实这里00是兼容了RS485帧和载波帧两种格式,载波数据帧是以前导码FE FE FE FE开头,然后是7E AA,然后是后面的数据长度、上/下行标识码(80/00)、帧起始符68、地址(6个字节,12位)、帧起始符68、控制码(一个字节)、数据标识(4个字节)、有效数据长度(一个字节)、有效数据、帧内校验CS(一个字节)、帧结束符16、帧校验码CRC(两个字节),而RS485数据帧是把载波帧的前面的标识7E AA和原创 2010-09-17 11:12:00 · 1187 阅读 · 1 评论 -
虚拟串口调试技巧
虚拟串口调试技巧原创 2010-09-06 13:29:00 · 2347 阅读 · 0 评论 -
DBGridEh3.6和DBGridEh5.2的区别
DBGridEh3.6和DBGridEh5.2的区别,如果一个数据库字段用1和0 表示是否选择之类的Boolean类型,在DBGridEh里这个字段可设为原创 2010-09-06 11:09:00 · 1168 阅读 · 0 评论 -
FireBird的两个误区:动态参数传递出错Incorrect values within SQLDA structure
动态参数Incorrect values within SQLDA structure原创 2010-06-04 11:40:00 · 1760 阅读 · 0 评论 -
解决DBGridEh遍历记录后不移动当前行位置的方法
解决DBGridEh遍历记录后不移动当前行位置的方法原创 2010-07-30 11:55:00 · 4488 阅读 · 1 评论 -
SPComm接收数据的两种方法
在使用SPComm接收数据时,要用到指针,函数原型为:procedure TForm1.commReceiveData(Sender: TObject; Buffer: Pointer; BufferLength: Word);beginend;其收到数据时,它提供了一个指针Buffer,指向这个存放数据的缓冲区的首地址,长度为BufferLength,这样就知道收到的是什么东东了,可以有两种方法取出其中内容:var pc:PChar;begin pc:=PChar(Buffer); Memo1.L原创 2010-06-01 10:03:00 · 6661 阅读 · 0 评论 -
一个奇怪的StrToFloat()函数
<br />一个字符串的值为'999950.64',而显示出来的只有'999950.63',开始还以为是用引用传递参数使用错误,经跟踪发现,是因为定义的一个变量用了不当的类型引起的,也是因为对Single和Extended没有好好认识他们的不同,<br /> <br />var<br /> s:Single;<br /> e:Extended;<br />begin<br /> Edit1.Text:='0.64';<br /> s:=StrToFloat(Edit1.Text);<br /> e原创 2010-05-31 17:31:00 · 9040 阅读 · 1 评论 -
FireBird下存储过程TimeStamp数据类型参数的传递方法
在Firebird下使用动态参数,配合Format格式输出时,当数据库字段为TimeStamp时,sql用Format('Execute procedure p_InsertTable(''s'')',[FormatDateTime('yyyy-mm-dd hh:mm:ss',Now)]);其SQL为:Execute procedure p_InsertTable('2010- 7-14 15:22:52');也就是用字符型参数传给Timestamp字段,但要用'单引号引起来,不然的话数据库识别不了,报错.原创 2010-07-14 15:37:00 · 3338 阅读 · 1 评论 -
Delphi多维动态数组重定义长度
<br />Delphi在定义多维数组时有两种方法:动态定义或静态定义<br /> 动态定义:<br />bufanalog0:array of array of array of array of byte;<br /> <br />在使用前重设长度:<br /> if (board_model=dso2908a_g512) or (board_model=dso2908b_g512) then<br /> SetLength(bufanalog0,1023+1,memsizek,19+1,0+1原创 2010-07-15 15:34:00 · 5345 阅读 · 0 评论 -
音频数据文件WAVE结构分析--Windows XP 启动.wav 文件头分析
Windows XP 启动.wav 文件头分析: 文件长度② 声道数 格式标记"RIFF"① WAVE fmt 不定 WAV格式类别 采样频率 数据传输率③ [原创 2010-11-03 12:31:00 · 2074 阅读 · 0 评论 -
FireBird备份为空库的简单方法
<br />把下列文件保存为批处理文件“备份为空库.bat“,在以后要把使用了很久的数据库清空时,可以双击运行即可:gbak.exe -b -m TestMeter.fdb testmeter.fbk -user sysdba -password masterkey;备份元数据,包括所有表、存储过程、触发器<br />if exist new.fdb del new.fdb;先删除要创建的新数据库文件<br />f:/fb213/bin/isql.exe -q -i Create.sql;创建一个新的数据库原创 2010-10-29 13:46:00 · 1907 阅读 · 0 评论 -
DBGridEh的安装方法
<br />1.D6中设置查询路径delphi6和dataservice<br />2.将common目录中的文件复制到delphi6目录下,将langresources目录下Simplified Chinese中的文件复<br />制到delphi6目录下<br />3.打开EhLib60.dpk并编译(不安装),打开DclEhLib60.dpk并编译,然后安装<br /><br />完成以上操作后,可以打开DEMO目录下的例子测试安装是否完成。原创 2011-01-21 16:17:00 · 2379 阅读 · 0 评论 -
delphi开发activexObject传递参数的两种方法:
本来要和delphi说再见了,没想到今天还会用到它,这个给无数程序员带来欢乐和泪水的工具,有了你,程序员的世界多彩多资!delphi开发activexObject传递参数有两种方法:1,在定义的方法中添加参数,然后在html页面中把参数传递进方法中;procedure TWebPrint.PrintReportMaterial(const fk_req: WideString);b原创 2015-09-08 14:55:35 · 2584 阅读 · 0 评论 -
世界上最恶心的调用方法:Delphi调用Java的class方法法
世界上最恶心的调用方法是,:用Delphi调用Java的class方法:如果写了一个java方法:package com.api;public class DelphiCallJava { public static String dTest(String args,int args2,String args3){ if(args==null){原创 2014-08-23 16:10:30 · 6063 阅读 · 1 评论 -
PageControl页显示的控制
PageControl页有时要根据需要显示有些页,不显示有些页,可以设置PageControl.Pages[i].TabVisable:=false;而不是设置visable属性;原创 2012-10-29 15:40:04 · 2114 阅读 · 0 评论 -
dbf文件结构分析
老规矩,把下面的复制到记事本,用SysFix字体;Tdbf_head = packed record vers : char ; //版本标志 yy,mm,dd :byte; // 最后更新年、月、日 no_recs : longword ; // 文件包含的总记录数; head_len,rec_len : word; //文件头长度,记原创 2012-08-31 16:34:06 · 1501 阅读 · 0 评论 -
再谈指针运算和地址加减运算的区别
先上代码,有下面一段代码://下面是读取线状目标的记录内容的代码:procedure OnReadLineShp(ShpFileName:String);var FileHandle:integer; RecordNumber:integer; ContentLength:integer; num:integer; shapeType:integer;原创 2012-08-31 09:59:27 · 3054 阅读 · 0 评论 -
delphi Socket通信的控件使用和API使用的区别
delphi Socket通信的控件使用和API使用的区别原创 2012-06-19 16:50:08 · 1863 阅读 · 0 评论 -
为什么SaveDialog不能弹出来?
今天遇到一个奇怪的现象,SaveDialog老是弹不出来,开始是用动态创建的,以为是申请不到内存,但是也没有报错,直接换成控件,还是弹不出来,代码如下:sdDataMark.Filter := 'xml.*|xml.*|*.*|*.*';sdDataMark.InitialDir := ExtractFilePath(IniMeterFile); sdDataMark.FileN原创 2011-12-31 15:30:28 · 1468 阅读 · 0 评论 -
delphi多线程释放
delphi创建了多线程后,要想在执行完成后自动释放所用的资源,可以在构造函数Constructor里指定线程结束时的执行事件,OnTerminate:=FinishedEvent;这样,当一个线程运行完成后,就会自动调用这个过程,当然,在构造函数里还必须先有这两句:inherited Create(CreateSuspended);FreeOnTerminate := true;让它原创 2011-12-30 08:37:22 · 5015 阅读 · 0 评论 -
NEC单片机内存数据存储形式
一个unsigned long32位无符号整数在内存中的存放形式如:unsigned long32 temp32;temp32=0x006F508A,如果temp32的地址为0xfe824,...0xfe823 ...0xfe824 8a 50 6f 00原创 2011-10-11 16:56:31 · 1035 阅读 · 0 评论 -
Delphi对For变量的优化(不可思议)
有下面一段代码:procedure TForm1.Button1Click(Sender: TObject);vari: integer;const Item:array[0..18-1]of LongWord =(1 , 3 ,5 ,7 ,9 , 11, 13 ,15, 17, 19 , 21 , 23, 25 , 27, 29, 31 , 33 ,35);beginfor i := 0 to原创 2011-06-28 11:09:00 · 1954 阅读 · 0 评论 -
PComm引起的内存占用过多
<br />在一次使用PComm中,发现CPU占用超过50%,当没有接收数据时,%1~2%左右,而接收数据时在40%~60%之间,但数据量很少呀,难道是我的接收线程的问题,我是用一个线程一直读数据,如果读取的长度小于1,重新读,一般来讲,这肯定会引起CPU一直忙不停的读,但以前并没有出现这样的情况呀,也是这样写的,忽然想起了串口有个读超时的设置,难道是读超时为0,所以CPU一直在读,结果加了超时设置后:sio_SetReadTimeouts(1,2000,40),就正常了,说明我的判断是正确的。初学的朋友一原创 2011-05-03 23:48:00 · 1140 阅读 · 0 评论 -
Delphi语法误区
<br /><br />使用Delphi传递参数时,会根据需要采用两种方法:传地址,传参数,<br />传地址传的是变参,就是在函数体或过程内部对这个参数改变了,返<br />回时这个参数就改变了,而传参数是值参调用,在函数体内部或过程<br />内部对这个参数进行修改,返回时这个参数还是以前的值,变参调用<br />时,在参数前面加上关键字Var即可,当有多个参数要用作变参时,<br />可以用下面的语法:<br />Var Param1,Param2,Param3:string;<br />当然有一个前原创 2011-05-11 22:30:00 · 608 阅读 · 0 评论 -
D7下Int64类型的参数传递方法
如果在数据库设计中要用到Int64类型的字段,在程序在动态查询到这个字段,传递参数时会出现问题,因为D7还没支持Query1.Params.ParameterByName('f_FiledName').AsInt64这种用法,估计是D7的一个Bug吧,但必须要用这种类型怎么办?原创 2011-02-18 12:59:00 · 841 阅读 · 0 评论 -
Firebird使用支招
<br />1、在FireBird中,使用条件时一定要用括号括起来,如while (i<=9) do begin ... end;<br /> <br />2、在Delphi中使用SQL语句时,SQL中的字符参数一定要用单引号引起来,如sql:=format('Execute Procedure P_Insert(<br />原创 2011-02-14 14:55:00 · 965 阅读 · 0 评论 -
Firebird主从表存储过程的两种写法
有三个表:tb_employee,tb_customer,tb_movemaster,分别表示一个公司的业务员、公司的客户和公司的销售主文件表,它们是父表和子表的关系:CREATE TABLE TB_EMPLOYEE ( F_ID INTEGER NOT NULL, F_DEPTNO INTEGER, F_EMPLOYEENO INT原创 2010-05-14 09:46:00 · 2652 阅读 · 0 评论 -
Accecc violation at address 0443E00B in module 'dbexpint.dll' 解决
Accecc violation at address 0443E00B in module dbexpint.dll 解决 今天在用DBExpress时,由于SQLQuery里SQL语句里的表号没有用大写,于是导致出现上面的提示,忽然想起以前遇到的情况,把表名改为大写,更新 成功,要是把它做得智能点就好了,给我还以为是Dbexpint.dll文件坏了.原创 2010-05-11 15:08:00 · 1304 阅读 · 0 评论 -
delphi 构造函数与异常
定义一个类,type TMyClass=class private FStr:PChar; public constructor Create(); destructor Destroy();override;end; 实现方法: constructor TMyClass.Create;begin FStr:=StrAlloc(10); StrCop原创 2009-12-17 16:46:00 · 1137 阅读 · 0 评论 -
delphi 程序执行完了会自动退出···难道会选择最近的Exit?
一个奇怪的问题,当条件为False时,还是掉进了过程里: ret:=IsBoxFull(StrToInt(E_BoxNo.Text),RG_Box); if ret=true then begin if Application.MessageBox(该箱表数已满,是否打印条形码!,系统提示,MB_YesNo)=IDYES Then begin原创 2009-12-10 10:45:00 · 2673 阅读 · 2 评论 -
错误:"SQL Server Error:Table unknow tb_temp At line 1,column 30"之解决
错误:"SQL Server Error:Table unknow tb_temp At line 1,column 30"之解决方法: 很多人用Firebird+DBExpress+ClientDataset+Dataprovider开发两层、三层MIS,但对DBExpress组件不熟,以此以为这个组件有 问题,太冤了,不过对于ADO用多了,转过来要设一大堆。在使用多表查询时原创 2009-12-09 13:34:00 · 1849 阅读 · 0 评论 -
数据库字段值取法与Format的引用
数据库字段值有多种取法, Query[字段名] Query.FieldValues[字段名] Query.FieldByName(字段名).Value Query.FieldByName(字段名).AsInteger 等等,只是在它们的有些地方用法不一样,如在Format中,用Query[字段名]当赋值用,会有编译错误,另外在不知道原创 2009-12-05 01:56:00 · 896 阅读 · 0 评论 -
Access事务控制
最近写的一个库存管理程序,因为用的是ADO+Access数据库,没有办法写存储过程,在商品的出库中会发生执行一半过程然后退出的 情况,然后后面的一系列操作就没有执行,造成了数据的不统一,幸好ADO可以控制事务,用下面的方法成功执行: ADOConnection.BeginTrans;Try ...//一些操作 ADOConnection.CommitTra原创 2009-12-05 01:01:00 · 1313 阅读 · 0 评论