摘要: procedure TForm1.CheckImgType(fn: string);var MyImage: TMemoryStream; Buffer: Word; i: integer;begin MyImage := TMemoryStream.Create; try MyIm... 阅读全文
posted @ 2015-09-23 13:18 幻劫 阅读(1283) 评论(0) 推荐(0) 编辑
摘要: unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;type TForm1 = class(TForm) private { Private declarations } procedure WMEnterSizeMove(var Message: TMessage) ; message WM_ENTERSIZEMOVE; procedure WMMove(var Message: TMessage) ; ... 阅读全文
posted @ 2013-11-14 13:14 幻劫 阅读(387) 评论(0) 推荐(0) 编辑
摘要: 传统的数据集的读取和更新,是通过中间层的TDataSetProvider来完成的。TDataSetProvider负责从它上游的数据集读取数据生成Data包,再传给客户端;另一方面,在客户端提交更新时(TClientDataSet.ApplyUpdates),TDataSetProvider还负责解析上传的Delta包,并最终实现数据库的更新。现在在我们当前的方法调用方式下,不能再通过TDataSetProvider.ApplyUpdates来自动完成更新了,但是,我们还可以借用TDataSetProvider解析Delta数据包的功能,手动生成SQL语句来完成数据库的更新。手动更新看似复杂, 阅读全文
posted @ 2013-10-26 16:34 幻劫 阅读(650) 评论(0) 推荐(0) 编辑
摘要: 如果DataSnap服务器方法的执行时间比较长,这时候可能需要在客户端用进度条显示当前服务器方法的执行进度。要实现这种需求,现在可以利用DataSnap的回调功能,此功能是从Delphi 2010版本开始被引入的。要实现回调,服务器方法需要暴露给客户端一个或多个类型为TDBXCallback的参数。例如:...{$METHODINFO ON} TServerMethods1 = class(TComponent) private { Private declarations } public { Public declarations } function LongTimeRunFunc(In 阅读全文
posted @ 2013-10-26 16:33 幻劫 阅读(263) 评论(0) 推荐(0) 编辑
摘要: StringOfChar 是反复 “字符” 成 “字符串” 的函数;DupeString 是反复 “字符串” 成 “新字符串” 的函数;StringOfChar 来自 System 单元, 可以直接使用;DupeString 来自 StrUtils 单元, 使用时需要 uses StrUtils;如果仅仅是反复 “字符”, 当然应该用 StringOfChar , 它是用汇编代码实现的, 速度会稍好一些. 阅读全文
posted @ 2013-05-04 12:29 幻劫 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 1 create Function [dbo].[HZToPY](@HZ VarChar(255)) 2 Returns VarChar(255) 3 As 4 Begin 5 Declare @PY VarChar(255),@LenHZ int,@i int,@FristWord VarChar(2) 6 Set @LenHZ = Len(@HZ) 7 Set @i = 1 8 Set @PY = '' 9 While @i <= @LenHZ10 Begin 11 Set @FristWord = SubString(@HZ,@i,1)12 If( @Fr... 阅读全文
posted @ 2013-04-11 09:01 幻劫 阅读(345) 评论(0) 推荐(0) 编辑
摘要: 1 CREATE FUNCTION GetMaxbhInc (@bh varchar(50)) 2 RETURNS varchar(50) 3 AS 4 BEGIN 5 declare @return varchar(50),@i int,@len int,@v int,@vs varchar(10) 6 7 set @bh=isnull(@bh,'00') 8 9 set @len=len(@bh)10 11 set @i=patindex('%[0-9]%',@bh)12 if @i=0 13 b... 阅读全文
posted @ 2013-04-11 09:00 幻劫 阅读(436) 评论(0) 推荐(0) 编辑
摘要: CopyMemory、FillMemory、MoveMemory、ZeroMemoryCopyMemory复制内存,第一个参数为目的地址,第二个参数为源地址,第三个参数为复制数据的大小,单位字节,源内存区域不能重叠,如果重叠,可以使用MoveMemory()函数。函数原型如下:void CopyMemory( PVOID Destination, const VOID * Source, SIZE_T Length);FillMemory填充内存,将一段内存填充为同一个值,第一个参数为需要填充的内存地址,第二个参数是填充的大小,单位字节,第三个参数是填充的值,BYTE类型,FillMemory 阅读全文
posted @ 2013-03-22 08:51 幻劫 阅读(964) 评论(0) 推荐(0) 编辑
摘要: 1 uses 2 Zlib; 3 4 //压缩函数 5 procedure Zip(var fs: TMemoryStream); 6 var 7 cs: TCompressionStream; 8 ms: TMemoryStream; 9 num: Integer;10 begin11 if not(Assigned(fs) and (fs.Size>0)) then Exit;12 13 num := fs.Size;14 ms := TMemoryStream.Create;15 cs := TCompressionStream.Creat... 阅读全文
posted @ 2013-02-26 20:33 幻劫 阅读(261) 评论(0) 推荐(0) 编辑
摘要: 在Delphi中有一个控件THotKey,可以用来设置自定义的快捷键。一般情况可以 ShortCutToText,以文件的形式将设置的快捷键保存下来,还可以用TextToShortCut,将保存成文本的键值灰复。这种方式虽然很直观,但是存在一些问题,大键盘的“Ctrl+1” 与 数字键盘的“Ctrl+1”,在THotKey控件显示是不同的,前者会显示 “Ctrl + 1” ,而后者会显示 “Ctrl + Num 1”,但是用 ShortCutToText 输出均显示“Ctrl + 1”,如果是这样那么用TextToShortCut恢复键值就会出错。对于这个问题,网上有人建议在保存键值的同时,将 阅读全文
posted @ 2013-02-06 13:38 幻劫 阅读(2008) 评论(0) 推荐(0) 编辑