![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
技术的背篓
文章平均质量分 54
糖醋鼻子
一个IT小兵
展开
-
DELPHI6开发数据库发现的一个问题
在DELPHI6中使用数据感知控件时,发现:TDBEDIT控件在限制文本字段长度时使用的是字节数,即数据库中的文本长度为4时,在TDBEDIT中只能输入两个汉字或者4个英文字符,而在ACCESS中却能输入4个汉字或者英文字符。不知道这个是DELPHI6控件的BUG还是相关参数没有设置正确,问题解决中原创 2005-05-30 12:13:00 · 1175 阅读 · 0 评论 -
华山之巅,摆平.NET――ASP.NET调试库损坏导致程序运行异常
雨夜征服华山暂且不叙,单说次日清晨来到华山之巅南峰顶时,手机传来了同事的声音,服务器被重启,之后ASP.NET程序运行出现了异常,无法登录使用,具体原因不明,给服务器管理员打电话,未通。此时的心情夹杂细雨雾气,身处华山之巅,却也有点眩晕。 拍过两张照,收起相机,定了定神。服务器一直运行的很好,自从出来游玩,也没有对其进行更新,问题应该不大,但又非常棘手。原创 2007-08-13 10:51:00 · 1582 阅读 · 0 评论 -
又遇Dll地狱――Oracle执行环境的启动错误
一周前,同事的机器在编译.NET程序时断电,致使ASP.NET环境始终无法启动,无奈,只得重装系统(此问题估计遇到的人很少,毕竟是一个节骨眼上,但如果有哪位仁兄知道解决方法,也望不吝赐教)可当他安装完毕VS.NET2003和Oracle客户端时,发现调试的程序无法启动,提示“OCI.DLL无法加载”,上网一搜,是权限问题,顺利解决――此错误没有了,却出来一个新的错误“Could not cre原创 2007-05-29 18:51:00 · 1028 阅读 · 0 评论 -
索引服务混战ASP.NET――微软的又一个隔离墩
话说月初笔者在华山之巅搞定了ASP.NET一起莫名奇妙的异常,自此之后和公主过着…嘟~~,不好意思,书都看杂了,串了台了。好,咱们闲言少叙,书归正传。 自从上次解决了由调试文件库引起的ASP.NET执行异常(详情见:华山之巅,摆平.NET――ASP.NET调试库损坏导致程序运行异常)之后,服务器一直运行的很稳定,可就在为躲过一个微软乱摆乱放的隔离墩而回首庆幸时,心神未定,又被另一个绊原创 2007-08-28 11:25:00 · 1097 阅读 · 2 评论 -
又是PATH变量惹得祸
最近在Delphi 2006(一下简称Delphi)下安装Instant Objects组件,使用总安装包,编译,全部通过了,但在工程中使用菜单安装设计时包时,却提示我某个bpl文件找不到,可到目录中找时发现,所提示的那个文件确确实实在运行目录下的bpl文件夹中。 不管他,既然全部编译通过了,那我就手动来添加它们。启动Delphi,打开“Install Package”对话框,点击“原创 2007-09-06 15:39:00 · 1038 阅读 · 0 评论 -
使用反射机制实现实体列表到DataTable的深层字段转换
在《适配器模式在Web Service返回值中的应用》(http://blog.csdn.net/zhmnsw/archive/2007/07/23/1704235.aspx)一文中,我们使用到了IDataListAdapter接口来实现返回值数据表的转换操作,其中对于NHibernate返回的实体列表我们使用了TDlaEntityList类来进行转换。但是,对于TDlaEntityLis原创 2007-11-02 14:16:00 · 1704 阅读 · 0 评论 -
抓住飘忽不定的CPUID
最近在编写注册模块时,其中机器码的生成使用到了CPUID,而程序运行后,却发现,注册模块的校验并不是每次都有效。多次独立运行,机器码竟然是随机变化的!而当我使用IDE调试环境时,却一切正常。经过多次观察,发现机器码在两个值之间随机取得(即非此即彼)。而在机器码生成算法中,我并没有使用到随机函数,那么问题的出现只能在使用到的两个硬件数据上。到这里,问题应该是比较明了了,因为我想起了所原创 2008-02-28 08:15:00 · 2175 阅读 · 1 评论 -
使用定时器解决对象事件中自释放的问题
一个多月来,加班似乎成了家常便饭,紧追慢赶手头几乎不可能实现的项目,也很少有机会写点什么了。最近在实现Delphi Server控件组操作Word编辑文档的时候,遇到了3年前就曾遇到的问题,以为这次能够圆满解决,但最后发现还是沿用的老方法--看来对于实现层,我还是个新手啊...好了废话不说,来说说我发明的这个笨法。问题的由来:当前项目中有个实现为,用Delphi的Server控件启动一原创 2007-12-06 23:13:00 · 974 阅读 · 0 评论 -
都是“#”号惹得祸――URL中“#”号导致无法刷新页面问题
在做弹出IE窗口刷新父窗口的页面时,发现使用window.opener.location.href=window.opener.location.href语句并不是每次都起作用,有时候父窗口对该语句无动于衷,但跟踪代码发现,该语句确实已经执行。上网搜索,无果,只能自己来查找事情的真相。通过逐个页面测试,我发现了一个规律,父窗口弹出窗口的链接如果是超链接形式,则该条语句一定无效原创 2007-12-11 17:17:00 · 1862 阅读 · 0 评论 -
修正Firebird Net Provider 1.7中文路径BUG(提供下载)
以前提到的一个项目使用到了ASP.NET 1.1+Firebird embedded数据库,数据库使用了2.0.1,数据连接适配器使用了Firebird Net Provider 1.7 RC3。 但最近将程序加入嵌入式Web服务器之后,却出现了无法连接数据库的问题,经过排查,发现,以前使用IIS做Web服务时,路径中没有中文;而当使用中文路径存放整个执行程序时,就会无法连接数原创 2008-01-04 00:06:00 · 1852 阅读 · 0 评论 -
程序退出,阴魂不散?――解决Firebird嵌入式数据库无法正常释放的问题
Firebird嵌入式数据库服务使我们可以发布脱离数据库服务器的轻型程序,因此收到广大小型项目开发者的欢迎,但在嵌入式数据库服务器给大家带来便捷的同时,一些问题也会困扰我们,比如,只能单线程访问数据库文件,数据库效率低下等。 而最近的一个嵌入式数据库项目的问题,却让我寝食难安,经过反复验证,最终找到了原因。起因: 最近的一个由Delphi语言和.NET语原创 2008-01-08 21:57:00 · 3873 阅读 · 0 评论 -
修正Firebird Net Provider 1.7“偏移和长度已超出数组界限”BUG(提供下载)
在笔者的《修正Firebird Net Provider 1.7中文路径BUG(提供下载)》一文中,笔者基于从Firebird官方网站下载的最新源码,修正了Firebird Net Provider 1.7连接嵌入式版本的中文路径BUG,但最近在将系统切换到Server版本时,却遇到了“偏移和长度已超出数组界限”的错误。如下: 仔细分析“堆栈跟踪”详细原创 2008-04-18 21:44:00 · 2350 阅读 · 0 评论 -
为Delphi控制台程序增加版本信息及图标
当我们使用Delphi创建一个控制台程序时,IDE默认生成一个没有图标没有版本信息的工程,如图:灰掉的Version information选项灰掉的Icon选项但我们如果打开subversion的bin文件夹会发现,虽然这些exe也是控制台程序,但都具备版本信息和图标,也就是说,控制台程序同样可以具备这些数据。subversion的控制台程序带原创 2008-07-04 22:29:00 · 2610 阅读 · 0 评论 -
第N次被ACCESS的关键字涮
由于需要测试数据库的连通性,测试项目使用了“方便”的ACCESS来作为后台数据库,但由于它太“方便”了,以致于半天的时间都葬送在了它隐藏的关键字上... 项目使用了NHibernate来作为数据库中间层,并使用NUnit进行单元测试。可当我配置好所有模型类及配置文件之后,测试环境竟然抛出了这个错误: NHibernate.HibernateException : 字段定义语法错误。原创 2008-10-26 13:52:00 · 1010 阅读 · 0 评论 -
为Delphi编写的屏幕保护程序增加描述
虽说屏幕保护程序只是个相对特殊的exe(会接受/C、/P、/S等启动参数,具体可见诸多博文,在此不赘述),但是却让一个小小的描述卡住了。我们知道,作为屏幕保护程序,安装后会在系统的“显示”对话框的列表里出现,而进而我们发现,现有的屏幕保护程序显示的并不是文件名,而是一行描述,而使用Delphi编写的exe却无法具备这个特性。向搜索引擎寻求帮助后,得到了如下的描述:You can def原创 2009-03-09 22:23:00 · 947 阅读 · 0 评论 -
摆平嵌入式FireBird中的Charater Set错误
最近将一个项目从ACCESS移植到FireBird上,使用了ADO+OLEDB For ODBC来连接嵌入式FireBird。但在Charater Set上出了些问题。为了解决FB的中文查找BUG,项目使用了GB_2312字符集来创建。并将整个Embedded Firebird解压到了执行程序目录下。一开始,程序执行顺利,但当遇到insert和update语句时,却得到了“Character原创 2007-04-27 15:37:00 · 3633 阅读 · 1 评论 -
谁说Delphi没有哈希?--Delphi中,TStringList和THashedStringList的性能对比
曾经看到很多人在嚷嚷Delphi没有哈希表,这些人的动手意识姑且不论,却还有很多人以此来证明Delphi比别的语言垃圾,实在是...好,牢骚打住,转接正题。TStringList是我们常用的字符串列表类型,用法就不在这里赘述,但是,在数据其项数增多时,其搜索(主要是name/key搜索和indexof搜索)性能会急剧下降,原因是TStringList的内部存储使用了链表形式,而搜索操作使用原创 2007-01-25 22:32:00 · 6237 阅读 · 0 评论 -
Delphi中实现事件“注入”
C#中,事件是以委托的形式出现的,我们可以使用+=操作符来实现一个组件中同一事件的串联。但是,在Delphi中,事件是以procedure of Object的形式出现的,没有+=操作符的支持,也就是说,一个组件的事件只能指向一个函数地址(C#中的委托使用了指针列表来保存委托,因此可以实现多个事件的挂接)。那么,有没有一个变通的方法来间接实现事件的随意“注入”(即不影响原有事件,把自己的多个事件插原创 2007-01-22 23:37:00 · 4880 阅读 · 1 评论 -
终于见到了传说中的DELPHI 2006
写这段文字的时候,我刚刚下北京到石家庄的火车,宿舍都没回,就迫不及待跑到机房来和大家分享喜悦。 昨天(12月5日)Delphi 2006在北京发布,虽然这是Borland在大陆举行的第三场发布会,但Borland的魅力让人有一种说不出的感觉,下面就跟大家一起分享一下昨天发布会上的一些振奋人心的消息。 下午2:00,发布会在北京长城喜来登酒店正式开始,我见到了李维老师和原创 2006-04-13 21:20:00 · 1488 阅读 · 0 评论 -
Delphi下使用XMLDocument控件结合XSL转换XML
上网查了N久,Delphi下将XML利用XSL转换成XML,一般都使用了DOM接口,经过试验,其实有一种简单的转换方式,就是使用XMLDocument控件:1、创建两个XMLDocument实例,分别命名为xmldoc和xsldoc2、利用LoadFromFile函数分别载入被转换的xml文件和xsl文件3、转换函数如下:function transformxml(xmlfile:原创 2006-04-14 12:52:00 · 2103 阅读 · 0 评论 -
DELPHI高手突破读书笔记--类/对象篇
---------------------------------------------------那什么样的开发工具才是优秀的、体贴的、以人为本的?我的标准是符合以下四点:(1)能够将要解决的问题简化,并以某种理念快速实现之。(2)不隐藏任何用户想知道的细节。(3)可以忽略用户所不想知道的细节。(4)主动去适应不同层次的程序员。-----------------------------原创 2006-04-13 21:16:00 · 995 阅读 · 0 评论 -
让XSL转换的XML支持中文URL
一般我们用XSL来转换XML时,使用如下代码 但是一旦url中含有中文,由于有些服务器不支持中文URL,所以XML解析器就会把该中文转换成诸如:%E9%9F..形式的编码,但在点击链接会提示不能找到文件,即便是你改变文件编码也无济于事。既然是这样,那么只好使用脚本来绕开解析器的转换了。这里我使用了JavaScript来实现中文URL的转换,部分代码如下:原创 2006-04-14 15:49:00 · 1494 阅读 · 0 评论 -
让接口真正发挥作用
俗话说,听说不等于明白,明白不等于会用。对于接口,恐怕对于很多人都一提就知,一看就会,一用就蒙。尤其是搞不明白它和虚类继承之间的区别。这里给大家一个比较形象点的例子来说明一下它们的区别(看完再扔西红柿,谢谢)人以食为天嘛,这里就拿这个吃来做例子一个人可以吃很多东西,主食、水果、蔬菜等等,这些都是可以吃的食物,每种食物都有相应的吃法,所以对于一个人类和食物的定义暂时如下:人 = cl原创 2006-04-18 17:56:00 · 1193 阅读 · 0 评论 -
TComboBox的Items属性赋值解析
一般情况下对象类型作为参数传递时,传递的类型为引用型。因此,当对传入的参数执行Free时,该对象将被从内存清除。那么所有对它的引用将失效但最近在写TComboBox相关的赋值操作时却发现,TComboBox的Items属性为TStrings类型,但执行combobox.items := stringlist;之后free掉stringlist,发现TComboBox的Items并没有被free原创 2006-05-12 11:50:00 · 5606 阅读 · 1 评论 -
警告:Delphi 接口引用对象时的陷阱
用接口来接管对象引用,以此来操作该对象,这种做法很常见,也很实用。但是,在由于Delphi智能的接口机制,可能会让该操作隐含陷阱首先,让我们简单看一下Delphi的接口机制:一般,我们写的接口都继承自IInterface,实现接口的类也继承自TInterfacedObject,因为它们都替我们实现了function _AddRef: Integer; stdcall; functi原创 2006-05-17 11:38:00 · 2013 阅读 · 0 评论 -
一个使用特殊符号分割的字符串解码方法(Delphi版)
function DecodeString(Str, deStr: string ): TStringList;var StringList:TStringList;begin StringList:=TStringList.Create; stringList.Text := StringReplace(Str, deStr,#13, [rfReplaceAll]);原创 2006-11-02 16:07:00 · 2296 阅读 · 1 评论 -
利用windows脚本实现Oracle数据库定时导出文件
Oracle 10g为我们提供了expdp命令来将数据库数据导出到文件,因此我们可以使用脚本来实现数据定时导出文件的功能,其步骤如下:1、创建脚本文件,并保存为exportOracle.bat2、配置expdp导出命令其命令示例如下:expdp system/pwd directory=pms_backup_schema dumpfile=%date:~0,10%exp.dmp原创 2006-11-22 18:57:00 · 3006 阅读 · 0 评论 -
取得指定日期所在月份的天数--一个欠抽算法
C#里我们可以对datetime类型进行大部分的日期计算,但有时候心里痒痒,想手写,那么来吧。于是if else、查表、算闰年...打住,其实用不了这么麻烦,很简单,下个月1号减去这个月1号就OK了,咋减?C#知道,嘿嘿原创 2006-12-06 16:31:00 · 1298 阅读 · 0 评论 -
妙用Delphi编译器开关为程序增加便捷的控制台调试/日志窗口
在编写WIN32的窗口程序时,由于其不同于命令行的运行方式,我们经常为调试系统而被折磨的几近抓狂。因此很多通用的方法被设计出来:设置断点是个好主意,但很多业务层的代码无法有效的调试。使用对话框、LIST、文件来记录日志,无故增加了设计量不说,每次Release的时候,还要一个一个删除这些调试信息,虽然使用一些配置文件可以达到开关调试的目的,但这些额外的代码却也为系统带来了很多无用的代码。原创 2006-12-30 18:37:00 · 2695 阅读 · 0 评论 -
一个全字匹配的另类算法
如果要从一个字符串中匹配某个指定字符串(即查找指定字符串是否在某个字符串中),那么除了按字符逐个搜索外,还有一个另类通俗的算法。下面请跟我来。代码如下(仅给出DELPHI的实现):function searchStr(beStr, subStr: string): Integer;var oldLength: integer; tempStr: string;begin oldL原创 2007-01-02 23:44:00 · 2217 阅读 · 3 评论 -
控件间关联,Notification不能忘
来龙去脉最近在编写一些简单控件时,用到了控件间的关联,即一个控件属性中组合了另一个控件的实例(类似于TDataSource的DataSet属性),控件编写和运行一切顺利,但随后的设计期操作却让人不知所措。设计期,在窗体拖放两个控件,并将其关联,如A的一个属性是B,由于delphi设计期拥有强大的即时处理能力,关联好之后,两个控件的设置立即生效。但是,此时如果将B从窗体删除,让人不快的原创 2007-02-28 10:18:00 · 1415 阅读 · 0 评论 -
搞定mod_python安装版本不匹配的问题
最近在配置Trac的时候,需要使用到mod_python,用于整合python和apache 机器上本来安装有python2.5.2和apache2.2,安装网上的方法配置完之后,启动apache却出现了以下的错误: Apache server shutdown initiated...ython_init: Python version mismatch, expected原创 2009-08-03 21:28:00 · 2051 阅读 · 0 评论