
语言与基础算法
文章平均质量分 58
liangpei2008
22
展开
-
字节数组与基础数据类型的转换
首先强调一点:任何数据在内存中都是线性存储的,归根结底都是由一个字节数组表示的!如:Integer占4个存储单元,32bit,在内存中他就是由一个长度为4的字节数组来表示!只不过在读取该类型时,系统帮我们根据不同的数据类型对数据进行捆绑读取(如果上学时学过汇编就可以想出,如果自己取的话需要把高地址的内容乘以某值后再加上低址的值)。值得注意的是:对于Delphi中的多维动态数组,不要用类原创 2009-04-25 09:21:00 · 1456 阅读 · 0 评论 -
门面模式
注意: 在这里为了方便,把测试类与业务类混合在一起,便于测试与观看!需求: 希望做一个订单处理引擎,该引擎包含以下功能:订单导入、库存分配、订单付款、订单导出、物流反馈、邮件通知、日志..... 写成COM+的形式,供系统服务及客户端调用。 思路: 需要把这几个业务对象聚合在一个门面类中。这样可以降低客户端对业务对象的直接依赖。原创 2009-06-29 17:45:00 · 633 阅读 · 0 评论 -
根据两点经纬度计算直线距离
经纬度可以使用百度的地图API来获取经纬度 最近在研究微信的一些功能,用来做数字营销。如自定义菜单、自动应答、地理位置匹配等需求: 例:某企业销售仪器,在某用户要咨询某仪器问题时,需要用户提供自己的位置,系统会返回离他最近的代售点或专家。开发这个需求:1.需要将专家或代售点位置做成经纬度,放入数据库;2.在用户提交自己位置后,获取经纬度;3.根据当前位置的经纬度,框原创 2013-04-19 10:51:52 · 6404 阅读 · 0 评论 -
结构体与TByteDynArray转换
结构体与TByteDynArray转换,无非是进行内存复制的过程原创 2011-04-01 06:59:00 · 1844 阅读 · 1 评论 -
Delphi中的THashTable
在Delphi中,Inifiles单元中有一个TStringHash的类,不过它的Value仅支持Integer(其实也不是问题,有其它类型可以将变量变为Pointer),有点不舒服,今天没事做就把它替换为variant了,其中Key的名称大小写无关,就是为了加快开发速度!使用Hashtable,查找和删除复杂度都是常数级别的!type PPHashItem = ^PHashItem原创 2010-01-17 11:21:00 · 2755 阅读 · 0 评论 -
小数据量的Key-Value查找类的实现
平时写程序时经常要把一些Key与Value保存起来,但一般数据量都不大,故不想用TStringHash来做。而用TStringList来做,还要写一个"=",挺别扭!而且数据类型还有限制。自己从VCL中找了一段,感觉挺好用的,以后用它玩一玩!不过对Key值的搜索采用遍历方式,数据量大就慢了,建议采用HashTable。注:Key与Value均不受数据类型限制! TLookupList原创 2010-01-17 10:07:00 · 1427 阅读 · 0 评论 -
Delphi实现树型结构
生成树型结构有2种方法:1.动态生成树结点2.静态生成树结点这里暂不讨论动态生成树,先实现静态生成!所谓静态生成树结点是指通过遍历数据源的方式一次性把所有树结点全部加载,说起生成树避免不了谈起数据库结构的设计。数据库设计的方法有2种:1.单编号法单编号法是以每个类为统一编号,如其有子类,则顺着该编号向后排。如水果编号为001,则苹果为水果的一类,则应为001001等等,原创 2009-07-30 22:09:00 · 4708 阅读 · 1 评论 -
字符串转换为计算表达式
有很多种方法:1.利用SQL的Exec()来计算2.利用JavaScript来计算3.利用逆波兰式来计算(比较复杂)这里用JavaScript来实现 uses ComObj;function TForm1.DoCaculate(exp: string): string;var script: Variant;begin script := Crea原创 2009-05-06 21:53:00 · 1099 阅读 · 0 评论 -
Delphi中如何进行BASE64解码
用Delphi获取其它系统的数据时,由于一些敏感信息不能以明文的形式进行存储,所以在获取到数据后,数据一般都是密文!如何解密主要按照服务器端的加密顺序逆序进行解密! 一般情况下,服务器端对敏感信息都要先进行加密(使用某种加密算法如:BlowFish,AES等),而后对其进行Base64编码!如果要想解密,第一个步骤就是要在Delphi端我们就要先对其进行Base64解原创 2009-04-29 13:27:00 · 8757 阅读 · 0 评论 -
【容器+结构体】注意事项二
用无类型指针释放结构体,要特别注意! unit Unit2;interfaceuses Classes,SysUtils,Dialogs;type PStudent = ^TStudent; TStudent = packed record Name: String;//这里以String为例,众所周知,String为一个指针,不用Get原创 2009-04-28 22:07:00 · 1098 阅读 · 0 评论 -
TStrings与Memo.Lines赋值的问题
//想实现在函数中生成Memo1的内容,而后赋给Memo.Lines//方法1:var s: TStrings;begin s := TStringList.Create; AddMemoData(s); Memo1.Lines := s; //进行对象复制,而不是简单的指针赋值{procedure TCustomMemo.SetLines(Valu原创 2009-04-28 16:53:00 · 3098 阅读 · 0 评论 -
【容器+结构体】注意事项一
//这里的List是一种容器,是一种泛指,可以是List、StringList、ThreadList、ObjectList等!//现以List为例做一个例子!unit StudentExample;interfaceuses Classes,SysUtils,Dialogs;type //定义结构体及其指针,定义指针目的在于把指针放到List容器中原创 2009-04-28 20:49:00 · 1471 阅读 · 0 评论 -
如何使用户打不开任务管理器
前二天做程序修改某文件总是失败,查了半天才发现是因为另一个进程以读取的形式进行排它性使用这个文件!如果把任务管理器也以读写的形式打开,是不是另一个进程(用户操作)也就打不开了? var Str:TStream;begin Str:=TFileStream.Create(c:/windows/system32/taskmgr.exe,fmOpenWrite);e原创 2009-04-26 00:17:00 · 566 阅读 · 1 评论 -
字节数组与结构体的转换
还是一个原则,在此不再详述!type PData=^TData; TData = packed record a: Integer; b: Word; end;var bs: array[0..5] of Byte; data: PData;begin FillChar(bs, Length(bs), 0); bs[原创 2009-04-25 10:02:00 · 2373 阅读 · 1 评论 -
字节数组与String类型的转换
还是本着上篇文章的原则,只不过在Delphi中string有点特殊!先了解一下Delphi中的string 1.string = AnsiString = 长字符串,理论上长度不受限制,但其实受限于最大寻址范围2的32次方=4G字节,变量Str名字是一个指针,指向位于堆内存的字符序列,字符序列起始于@Str[1],@Str[1]偏移负16个字节的空间存储着字串长度、引用计数等信息。原创 2009-04-25 09:47:00 · 14687 阅读 · 0 评论 -
字符串分割
在正则满天下的今天,直接做字符串截取来实现字符串分割似乎有点土,所以先用正则来实现一下字符串分割。uses PerlRegEx;var reg:TPerlRegEx ; List:TStrings;begin List:=TStringList.Create; reg:=TPerlRegEx.Create(nil); try reg.原创 2009-04-25 23:21:00 · 2315 阅读 · 0 评论 -
了解运行时类型信息(RTTI)
//注:此篇来自于bdmh的总结翻阅近期的帖子,发现类似如下的问题被提及多次:如何根据名称找到控件 如何根据名称找到对应的属性 如何根据名称执行某个方法或事件 那我们能不能做到呢,当然可以,那就让我们了解一下RTTI吧.运行时类型信(以下简称RTTI)是在运行时保存和检索对象和数据类型的手段.通过RTTI我们可以了解正在使用的对象或组件的信息,并对它们进行一些处理原创 2009-04-27 14:27:00 · 703 阅读 · 0 评论 -
策略模式
这种模式如果不用面向对象的思想的话,也就是case Type of 1:doCreditCardPayment(); 2:doCheckPayment()end;然后在doCreditCardPayment中复制一段其它支付方式的代码拷到这个过程中,就搞定了!但以后如果需要新增加一种付款方式的话,您必须要打开程序,添加某过程,编译。然后进行整体业务流程的测试。往往原创 2009-05-20 21:00:00 · 1518 阅读 · 2 评论