- 博客(58)
- 收藏
- 关注
原创 delphi编程的一点小技巧
在平时编写代码的时候,我们可能会不注意一些细节,往往也觉得其实没有什么问题,但是公司中很多大牛介绍说,在用字符串传递参数时一定要注意增加const,到现在,基本上对于这条的原因以及内容也比较了解了,但是有时还会忘记在记录(record)或者借口(Iinterface)中增加。 下面两段代码的比较: function GetStringFromData(const
2012-09-24 23:24:10
379
原创 delphi 中absolute
对于delphi中的absolute,其实用到的机会很少,只有一次看公司的代码文档时见到了,当时大牛们还特意问了一下,不过当时觉得应该就是使用的同一块内存,但是今天看了万一老师的博客之后还是感受颇深的,看来不仅仅是共性同一块内存那么简单。特意引用一下例子:procedure TForm1.FormCreate(Sender: TObject);var num: Int64
2012-09-24 23:07:56
862
原创 正则表达式基本语法
由于最近写iis重定向的问题,所以又看了一下正则表达式,现在讲基本的内容和大家做一下,也给自己做个备忘。 1。^/d+$ //匹配非负整数(正整数 + 0) 2。^[0-9]*[1-9][0-9]*$ //匹配正整数 3。^((-/d+)|(0+))$ //匹配非正整数(负整数 + 0) 4。^-[0-9]*[1-9]
2012-09-24 22:57:17
439
原创 win7中的时间格式
今天要做个报表,通过抓取网页来获的数据,当将其中的日期提取出来时,出现个问题,发现通过程序自动提取的时间,莫名的总会多加一个空格,不知道是什么导致的,不过倒是不影响数据,不过总觉得怪怪的,于是想将提取出的时间在做一下整理,手动肯定不行,写个小程序吧! 需求很简单,将“2012-09-23 ”这样的字符创提取为excel中认识的时间格式,于是开始动手做了,不过问题随之来了。
2012-09-23 12:40:18
1609
原创 WebService的错误——地址被重定向
最近在负责一个项目的维护,这个系统中虽然也存在一些问题,但是不是什么大问题,都是可以接受的,所以一直也没有过多的维护,直至周五的时候,突然间服务崩溃了,一时间无法处理问题。webService的错误一般都是服务就运行不起来,或者说什么文件没有之类的,比较常见也处理过,但是那天报告“从本地址重定向到本地址”这个一时间想不清楚了?后来问了一下,大家对于这个问题也不是很了解,肿么说的都有,算了,没办
2012-08-26 10:33:57
629
原创 Delphi FastMM4使用(一)
内存泄漏经常出现在本地代码中,特别是多线程和发生异常的情况下,这时候在delphi环境下,FastMM4就特别有用。 调试过程如下: 1.打开FastMM4的调试功能,首先在自己的project里把FastMM4放在最前面,例如: FastMM4, Main in ‘Main.pas’ {MainForm}, 可以在project中定义编
2012-08-26 10:19:33
987
原创 Delphi FastMM4作用(二)
对于FastMM4以往的认识,就是知道使用FastMM4之后会提示你是否有内存泄露,以及可以通过FullDebugMode来查找内存泄露的位置,从而可以消除内存的泄露。使用FastMM4如果打开了‘FullDebugMode’则编译完成之后需要在exe或者dll旁边放置一个FastMM_FullDebugMode.dll,否则会出现运行不了的情况,在发布的服务程序时,这种情况更是比较常见,经常
2012-08-26 10:15:43
945
原创 编写本地服务程序启动后就停止
如何编写本地服务程序,这里就不多介绍了,主要是使用delphi自带的“Service application”创建就可以,操作和建立一个vcl from类似。主要介绍遇到的一个问题:编写了一个服务,主要的操作是定时向一个文件中追加log日志,这个定时是在timer中处理的,不过发现服务注册后,通过在服务管理器中启动服务总会报告“服务未启动就停止,没有其他程序调用”类似的信息,开始不太清楚,一位
2012-08-21 23:33:53
649
原创 WebService服务的权限注意
今天由于项目的需要,编写了一个WebService的服务,主要的内容,就是根据传入的信息,和需要的处理流程,最后返回一个字符串结构,其实之前这部分内容在普通的exe的程序中都已经实现过了,所以很简单的就是将那部分代码之接通过单元引用来使用起来,不过就这里面出现了问题。原始代码的内容:由于原始代码为了做身份验证,同时为了每次进入时方便用户填写,将用户登陆时的信息填写到注册表中(也许你会问这部分代
2012-08-21 23:17:25
2008
原创 数据库中视图的作用
最近在做一个功能,是和别的项目组一起合作的。背景:现在要做一个用户管理的系统,需要我们提供服务来实现和原始数据库的兼容,但是现在我们的数据库和网站数据库中存储的内容或者说是字段有些不同,但是我们还是希望可以的话,将改动降低到最小,当然,这只是我的初步了解,现在具体的情况还没有很了解,为了这方面的应用,上网了解了一下数据库的相关操作,了解到“视图”是个比较有利的武器可以解决这个问题。视图是从
2012-08-19 22:30:09
5969
原创 Delphi中webService服务或者ISAPI注意事项
最近有很多机会接触到Delphi服务的编写以及使用,其实,之前自己对于这种服务的编写不是很了解,当时只清楚在服务中可以建立处理的WebHandleItem来进行自己想要条件的处理,最早的时候还是局限于自己进行query Field的判断来进行处理的,但是之后发现可以再WebHandleItem中建立不同的实例,并通过path来进行区分,应该说这个还是比较方便使用的,不过对于服务程序没有进行过大深入
2012-08-19 22:27:17
979
原创 什么样的用户体验算是好的用户体验?
作为一名开发人员,关注用户体验虽然不是很在行,但是多少也会注意一些,记得刚刚毕业进公司的时候,师傅的就曾经对于界面设计做过介绍,当时自己还因为是名女生,所以对于界面设计着实关注了一下,不过到现在其实对于用户体验以及界面设计也还不是很了解。今天在写博客的时候,想写一些自己博客变化的情况,开始大概写了200多字了,不过总觉得刚刚写的最后一句不是很好,想要删了重写,一般人都习惯使用“ctrl+z”来
2012-08-19 21:40:23
432
原创 数据库中视图的作用
最近在做一个功能,是和别的项目组一起合作的。背景:现在要做一个用户管理的系统,需要我们提供服务来实现和原始数据库的兼容,但是现在我们的数据库和网站数据库中存储的内容或者说是字段有些不同,但是我们还是希望可以的话,将改动降低到最小,当然,这只是我的初步了解,现在具体的情况还没有很了解,为了这方面的应用,上网了解了一下数据库的相关操作,了解到“视图”是个比较有利的武器可以解决这个问题。视图是从
2012-08-19 21:26:13
329
原创 如何通过js或者vb调用delphi的com组件
由于工作需要,需要将delphi编写的com通过网页的方式进行交互,但是如何交互呢,这就是一个大难题,通过查找资料以及查看vb的代码,发现如下的方式:1、vboption explicitdim info, key, data set info = CreateObject("User.UserInfo")key = "12345678"data = "123
2012-07-13 20:13:27
735
原创 Delphi如何编写Com
用Delphi编写com在之前就遇到过,但是当时只是理解其中的实现原理,所以没有仔细研究过,这次又遇到这个问题,所以决定试一下,不过倒是有种“有心栽花花不开,无心插柳柳成荫”的感觉,第一次是真心想知道com如何创建,结果一个成功的都没有,这次只是抱着试一试的心态,结果com就写成了。下面简单介绍一下com如何编写,其实很简单,运用delphi自带的功能就可以实现。1、在delphi中选择:
2012-07-13 20:04:06
675
原创 数据库命名管道或者远程连接的问题的解决
本身对于数据库的认识不是很强,虽然在大学时,学了很久的数据库,但是都是理论方面的,实际应用中很少用到或者说一直的程序中也接触数据库比较少,所以突然登陆服务器报告异常时,才觉得“书到用时方恨少”呀。不过还好,测试中发现了问题。介绍一下整个流程,虽然是歪打正着,不过也从另一个角度学会了不少东西。1、报错提示:(由于在公司的机器上,所以没有及时摘取错误信息)大概意思就是说:登陆不上、可能是命名管
2012-07-11 22:18:41
814
原创 Delphi接口和编程两大陷阱
Delphi接口编程的两大陷阱前一阵写了一个通过接口扩展功能的例子,当时由于指针和接口的转换,导致了很多错误,最近又接触到了一个类和接口混用的例子,导致程序的指针在传递中变了地址或者内容,导致读到了错误的地址,现在将接口和类之间的情况进行一下汇总。 陷阱一、接口的类型转换陷阱 (1) 不能把一个对象引用强制转换成这个引用的类型没有声明实现的接口,即使这个对象实际实现了这个接口(呵呵,
2012-06-01 00:20:09
797
1
Delphi接口和编程两大陷阱
Delphi接口编程的两大陷阱 陷阱一、接口的类型转换陷阱 (1) 不能把一个对象引用强制转换成这个引用的类型没有声明实现的接口,即使这个对象实际实现了这个接口(呵呵,优点拗口)。 (2) 当把一个对象变量赋给一个接口变量,在把这个接口变量赋还给对象变量时,这个对象变量的地址已经变了,也就是不再是原来的对象了,而是指向一个错误的地址。 例如: I1 = interfa
2012-06-01 00:10:10
98
原创 Delphi中WebService服务
Delphi开发和调用的webservice在用delphi编写webservice时遇到的第一问题就是如何编写,怎么写?上网查了一下,内容还是听不少的,当然通过多方资料的比较,了解到通过file--new----other----webservice可以建立并测试webservice,但是我的delphi中却没有这个选择,于是很迷茫,问了一下“大牛”程序员才知道,是因为我的vcl自带的包被卸
2012-06-01 00:07:29
3163
原创 类和接口的重载
Delphi中没有多重继承,但是可以通过接口的方式简介实现多继承。接口是一个只有函数,没有数据的声明,例如IMyIntf = interface function ShowInt: Integer; function ShowStr: string; end;接口函数不需要写virtual,实现接口的类必须实现接口声明中的所有函数。例如:TMy
2012-05-31 23:52:16
816
原创 接口与类区别
接口和类一样,只能在程序或单元的最外层被声明(也就是interface section,也就是全局可见的),不能在过程或函数中声明。接口类型的声明格式如下:type interfaceName = interface (ancestorInterface) //关键字interface [{GUID}] //全局唯一标识符 memberList //成员列表 e
2012-05-31 23:44:32
1277
原创 DLL和Com关系
DLL和com的关系 com对象通常都存在于一个DLL中,有时候Com服务器存在于一个Exe中。存在于DLL中的Com,或者说包含Com对象的DLL都遵守一个约定,他们都必须实现以下引出函数 DllGetClassObject, DllCanUnloadNow, DllRegisterServer, DllUnregisterServer;
2012-05-31 23:39:16
573
原创 如何获得一个dll的路径
这两天在写一个功能,简单介绍就是想让用户访问一个界面时,跳转到另一个界面,实现浏览器中的值得隐藏,其中跳转的界面的内容是由浏览器的内容传递过来的。当然现在这个功能,由于浏览器在访问的时候总会根据浏览器中的值进行request和response,所以现在现在还没有想到更好的方法,不过有一个想法就是使用cookie进行参数的隐藏。这个程序是通过IIS调用dll的方式的,其中涉及到了如何知道dl
2012-05-31 23:35:41
1045
原创 面向对象设计原则(七)——单一职责原则
单一职责原则1、一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中。 一个优良的系统设计,强调模块间保持低耦合、高内聚的关系,在面向对象设计中这条规则同样适用,所以面向对象的第一个设计原则就是:单一职责原则(SRP,Single Responsibility Principle)。2、 就一个类而言,应该仅有一个引起它变化的原因。 指导思想: 一个类
2012-05-31 22:58:46
513
原创 面向对象设计原则(六)——里氏代换原则
里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。 LSP是继承复用的基石,只有当衍生类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复用,而衍生类也能够在基类的基础上增加新的行为。里氏代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。而基类
2012-05-31 22:53:25
650
原创 面向对象设计原则(五)——依赖倒置原则
“开放-封闭”原则是我们OOD的目标,达到这一目标的主要机制就是“依赖倒转”原则。什么是依赖倒置原则呢?(DIP)这个原则的内容是:要依赖于抽象,不要依赖于具体。或者说是:要针对接口编程,不要对实现编程。 对于抽象层次来说,它是一个系统的本质的概括是系统的商务逻辑和宏观的,战略性的决定,是必然性的体现;具体的层次则是与实现有关的算法和逻辑,一些战术性的决定,带有相当大的偶然性。传统的过
2012-05-31 22:47:23
398
原创 面向对象设计原则(五)——依赖倒置原则
“开放-封闭”原则是我们OOD的目标,达到这一目标的主要机制就是“依赖倒转”原则。什么是依赖倒置原则呢?(DIP)这个原则的内容是:要依赖于抽象,不要依赖于具体。或者说是:要针对接口编程,不要对实现编程。 对于抽象层次来说,它是一个系统的本质的概括是系统的商务逻辑和宏观的,战略性的决定,是必然性的体现;具体的层次则是与实现有关的算法和逻辑,一些战术性的决定,带有相当大的偶然性。传统的过
2012-05-31 22:46:24
143
原创 面向对象设计原则(五)——依赖倒置原则
“开放-封闭”原则是我们OOD的目标,达到这一目标的主要机制就是“依赖倒转”原则。什么是依赖倒置原则呢?(DIP)这个原则的内容是:要依赖于抽象,不要依赖于具体。或者说是:要针对接口编程,不要对实现编程。 对于抽象层次来说,它是一个系统的本质的概括是系统的商务逻辑和宏观的,战略性的决定,是必然性的体现;具体的层次则是与实现有关的算法和逻辑,一些战术性的决定,带有相当大的偶然性。传统的过
2012-05-31 22:40:24
99
原创 面向对象设计原则(四)——接口隔离原则
接口隔离原则1、什么是接口隔离原则?(1) 客户端不应该依赖那些它不需要的接口(2) 一旦一个接口太大,则需要将它分割成一些更细小的接口,使用该接口的客户端仅需知道与之相关的方法即可。 2、接口隔离原则(1)接口隔离原则是指使用多个专门的接口,而不使用单一的总接口。每一个接口应该承担一种相对独立的角色,不多不少,不干不该干的事,该干的事都要干。(2)使用接口隔离原则拆分接口
2012-05-31 22:32:44
331
原创 面向对象原则(三)——合成复用原则
合成复用原则1.定义 i. 尽量使用对象组合,而不是继承来达到复用的目的。2.分析 i. 合成复用原则就是指在一个新的对象里通过关联关系(包括组合关系和聚合关系)来使用一些已有的对象,使之成为新对象的一部分;新对象通过委派调用已有对象的方法达到复用其已有功能的目的。简言之:要尽量使用组合/聚合关系,少用继承。
2012-05-31 22:31:17
870
原创 面向对象设计(二)——迪米特原则
什么事迪米特原则?迪米特原则能帮助我们在类设计中起到什么作用呢?迪米特原则介绍1. 定义:每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。2. 分析(1)迪米特法则就是指一个软件实体应当尽可能少的与其他实体发生相互作用。这样,当一个模块修改时,就会尽量少的影响其他的模块,扩展会相对容易,这是对软件实体之间通信的限制,它要求限制软件实
2012-05-31 22:28:28
680
原创 面向对象原则(一)——开闭原则
面向对象的原则是由7个原则组成的,分别是:1、开闭原则2、依赖倒置原则3、单一责任原则4、里氏代换原则5、复合复用原则6、迪米特法则7、接口隔离原则这些原则并不是孤立存在的,它们相互依赖,相互补充。 1. 开闭原则定义 :一个软件实体应当对扩展开放,对修改关闭。也就是说在设计一个模块的时候,应当使这个模块可以在不被修改的前提
2012-05-31 22:22:19
407
原创 面向对象原则(一)——开闭原则
面向对象的原则是由7个原则组成的,分别是:1、开闭原则2、依赖倒置原则3、单一责任原则4、里氏代换原则5、复合复用原则6、迪米特法则7、接口隔离原则这些原则并不是孤立存在的,它们相互依赖,相互补充。设计原则名称设计原则简介
2012-05-31 22:06:04
496
原创 MVC和三层架构
前一阵,根据工作需要,带了几个刚入职的学员,其实这些学员中有比我都接触代码时间长的,当然也会说出很多我不了解的知识或者名词,此种MVC、三层架构就是经常提起的,但是我对于这个的了解不是很深入,今天正好上网了解,就和大家分享一下。MVC和三层架构 1.是不是一回事?2.有什么区别?3.如何解释这个问题?MVC阐述: MVC (Model View Controler)本来是
2012-05-31 22:03:54
628
原创 Web应用中数据库正在向NoSql转换,简介MongoDb
仅仅几年前,MySQL还是开源数据库领域公认的王者,但是随着NoSQL以82%的年复合增长率狂飙,MySQL在Web应用市场正面临被NoSQL淘汰的危险。向NoSQL的迁移不但成为IT业发展趋势的一个注脚,还让人们领略了开源驱动的产业创新正如疾风骤雨般来临。在Web应用领域,NoSQL对MySQL形成了明显的威胁,虽然很少有人更换现有应用的支撑台数据库,但是越来越多的新Web应用选择了No
2012-05-31 21:39:29
357
原创 delphi中气泡提示的优化
昨天的博客中介绍了,如何使用delphi的气泡提示,但是这种方式的提示,只有鼠标在一定范围内时才可以很好的显示,如果我们要在程序中应用,似乎这样的效果不会带来很大价值,下面介绍一种更好控制的方法,来实现制定位置的提示显示。代码如下:unit Unit1;interfaceuses Windows, Messages, SysUtils, Variants, Classe
2012-05-30 22:55:49
979
原创 html中的点击和箭头显示效果
今天给公司写了一份文档,基于公司的指定的文档模板完成,这个模板说拜了, 就是一种html文档,其中已经把样式都设置好了,并且默认写了一些规范的脚本,可以实现类似于“帮助文档”一样的一种文档样式,但是,如果用过html的人都应该知道,使用html会有一个问题就是,会连带有一些依赖的文件,如果这些文件事图片,则相应的位置会出现个,如果脚本或者样式没有找到,则想要的显示效果和动作效果都将没有,所以htm
2012-05-30 20:19:21
1482
原创 创建气球的提示信息
Delphi的便于开发为程序员提供了很多便捷,但是有些效果可能也被忽略了,delphi自带的showmessge或者messagebox是我们一般使用的方法,但是有没有更好的提示信息呢,下面就介绍一种,气球式的方式,效果如下所示:但是效果不是很好,使用时当鼠标离开一定范围时提示信息会消失。 unit Unit1;interfaceuses Windows, M
2012-05-29 22:28:20
323
原创 如何写一个http的发送和接收
最近由于工作上的需要,要是现一个功能,就是做一个类似于搜索引擎的程序,这对于做过网络的或者对于这部分知识有了解的人来说还是比较简单的,但是对于我来说似乎有些迷惑,真不知道怎么才能发送我想要的请求,又怎么才能把结果取回来,在网上搜索了一下,介绍的内容,大部分是基于现在的开源代码或者库,虽然以前也做过一个搜索引擎系统,但是总觉得那一套比较麻烦,总觉得就这点小需求,如果弄个搜索引擎出来太过麻烦了,同时现
2012-05-29 21:05:36
317
原创 如何判断一个程序是否在运行
有时我们的一些操作,需要先关掉一些程序才能继续执行,那怎么才能判断一个程序在运行呢?下面介绍一种是用系统快照的方式来实现判断一个程序是否运行。(一)快照函数介绍 CreateToolhelp32Snapshot函数为指定的进程、进程使用的堆[HEAP]、模块[MODULE]、线程[THREAD])建立一个快照[snapshot]。 HANDLE WINAPI C
2012-04-30 21:05:21
1201
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人