
编程点滴
文章平均质量分 65
tonylk
这个作者很懒,什么都没留下…
展开
-
让你的VB程序支持多国语言的切换
以前做过一个vb的小项目,客户需要软件同时能够支持中文和英文,为此写了一个自动语言切换的模块来用,不敢独享,拿来给大家参考一下,如果你有什么改进也可以写信给我。。mailto:tonyki@citiz.net模块 MdlLanMgr.bas :Attribute VB_Name = "ModuleLanMgr"Option ExplicitPrivate Declare Function Ge原创 2004-10-09 22:37:00 · 1997 阅读 · 0 评论 -
在QT4中使用QTableView制作属性编辑器
最近在用QT写的一个程序中,需要一个对大量参数进行设置的功能。过去用Delphi的经验是,尽量不要使用QListView和TGrid来实现,因为涉及到控件的对齐,界面的重绘等,反而使简单问题变得复杂。因此这次用QT写程序时也想当然,用控件数组的方式来解决。很快程序写好了,界面如下:显示出的效果还不错,但是遇到了一个严重的问题,那就是速度。由于QT的机制是自动调整控件比例来适应各种系统和窗体大小,而原创 2006-10-01 15:52:00 · 11958 阅读 · 2 评论 -
用Windows的文件映射机制,实现大批量数据的快速存储
上次做的电子相册软件,为了解决大文件读取速度慢的问题,使用了Windows下的文件映射功能,使文件读取效率顿时得到了大幅度提升。(具体见:一个读取速度超快的FileStream!)最近在做的一款软件,又使用到了这个函数,不过这次的要求是这样的:系统的主程序会持续的从网络端口上接收数据,这些数据需要变为实时的图像显示,但是同时图像显示部分又需要有回顾功能,也就是说能够任意将历史的数据调出来显示,为此原创 2006-05-11 21:37:00 · 2411 阅读 · 2 评论 -
QT中调用外部程序的方法
上个月有人写信问我这个问题,当时做了比较详细的回答,把回答内容放上来,也许对其它 人会有些用处的吧。有些地方我的理解可能也不正确,欢迎指正:问题: 我做的那个小软件的图形界面是基于QT3.2的,在主界面的命令行编辑框输入命令以后要执行别人已经写好的可执行文件。这些可执行文件执行的时间比较长,在终端上运行时会显示一些运行的信息,最后才显示执行结果。我的界面上有一个文本框,我想把它们在后原创 2006-10-01 23:27:00 · 13502 阅读 · 0 评论 -
mdb文件在英文系统下无法打开的问题。。。
软件没有测试就一定有BUG--真是至理名言阿,这不,我给客户做的一个韩文软件,由于自己想当然的认为做过很多类似的多国语言软件了,不会有问题的。。。结果,客户在英文版WindowsXP下一用,竟然会崩溃!!。。。立马怀疑是客户人品不好,让对方换台机器试试,结果还是崩溃。。换成中文版的WindowsXP就一点问题都没有。哎,就算真是客户人品不好,也要帮别人解决阿,于是网上一顿好找,总算在VeryCD上原创 2007-04-03 18:31:00 · 2831 阅读 · 2 评论 -
Qt下的Log记录库 log4qt
但凡稍许有些规模的软件系统,都需要一个事件记录系统,将各类调试或者错误信息输出到文件或者控制台上,特别是软件发布后,很多情况下开发人员只需要凭借事件记录就可以诊断软件故障所发生的位置。我目前使用Qt所开发的一款系统也不例外,不过一开始我使用了一个自己写的Log记录用的全局类,直接将各类要记录的信息写入到文本文件中,简单归简单不过也足够使用了,因此我也从没想过要真正将它完善。直到最近忽然兴起,决心用原创 2008-03-13 16:50:00 · 7373 阅读 · 6 评论 -
发布中文Qt程序时要注意的问题
用Qt写好了程序,并撰写了中文的语言文件(.qm文件) 后,发布到没有安装过Qt的系统上时,却发现只有固定的界面文字中的中文能正常显示,而程序运行过程中保存到诸如txt、xml文件中的中文却变成了奇怪的编码,而读回时就会变成“?”。经过研读Qt的文档,总算知道了原因,那是因为对于中文之类的特殊编码文字,Qt系统中是使用相应的TextCodec来进行Unicode到本地编码(GB2312,GB180原创 2008-03-15 20:56:00 · 3400 阅读 · 0 评论 -
Ubuntu8.04上编译Qt4.4 + Phonon
1)安装各类需要使用到的开发包sudo apt-get install xorg-dev//下面的为gstreamer需要使用的头文件等sudo apt-get install libglib2.0-devsudo apt-get install libgstreamer0.10-devsudo apt-get install libgstreamer-plugins-base0.10-devsu原创 2008-08-19 16:05:00 · 2272 阅读 · 0 评论 -
Linux下的OpenGL库更优秀?
目前在开发的一套软件,使用OpenGL绘制大量图片,图片是在运行过程中动态根据需要加载进来的,在我的X200下,WindowsXP中运行该程序时,每次调用glTexImage2D()时,都感觉画面有明显的停顿感,而在Ubuntu8.10下,则丝毫感觉不到,系统运行异常的平滑。不过在Ubuntu下需要关闭Compiz,否则程序关闭时,原始桌面不会完全刷新,会有部分程序画面残留在上面。原创 2009-01-24 23:59:00 · 2258 阅读 · 0 评论 -
使用VC2005编译真正的静态Qt程序
转自: http://www.qtcn.org/bbs/read.php?tid=13825 如何使用VC2005编译“真正”的静态Qt应用程序(我非常讨厌引用或者转载别人的文章的时候不注明地址或者作者,希望读者能够改变我这个观点 :) —— 夏威夷雪人)(下文只涉及windows,不谈及linux、unix等,另外,这里说的VC2005,是因为我用的是2005,其实其他版本的VC亦同转载 2009-02-06 22:13:00 · 7765 阅读 · 5 评论 -
Qt4.5下的QWebKit无法使用Flash10
看上去模块是正确加载了,但是在打开包含Flash的页面时,libflashplayer.so 会报错,内容是:Not GTK2 toolkit (got 0).http://lists.macosforge.org/pipermail/webkit-unassigned/2008-October/089364.html这个地方也证实了这点,并且说flash9是好的,之后也去试一下。这个地方貌似有解原创 2008-12-16 00:16:00 · 1981 阅读 · 0 评论 -
该死的“OLE error 800A0E7F”错误
昨天刚从吉首回来,虽然是在国庆节里,但是我此行的目的却不是旅游,而是为了项目上的一个bug。而为了这个bug,说来话长:我开发的一套软件在使用的过程中,需要连接到另一套系统的数据库中取得数据,数据库的格式是Sybase的,并且是从多个库中取得综合的信息,每个库还有不同的访问密码,为了安全期间,对方的维护人员为我的程序制作了一个Access数据库,其中的表为Link表,连接到实际的Sybase数据库原创 2005-10-05 21:49:00 · 7410 阅读 · 4 评论 -
一个读取速度超快的FileStream!
最近一直为自己制作的相册软件(http://www.tonixsoft.com/ultraalbum/index.php?lang=chs)打开大文件时速度慢而郁闷,我以前的做法是先用TFileStream打开一个文件,然后在其中找到其中的数据段,把其中内容复制给一个TMemoryStream,之所以要再将它复制给一个独立的TMemoryStream是因为,后续处理的一个文件型数据库组件必须接受一原创 2004-12-09 14:07:00 · 6045 阅读 · 5 评论 -
对TMemoryStream的一些改进
怎么又是关于Stream的,呵呵,应该说只是最近比较关心程序的效率问题,而我对Stream其实并没有什么特别的研究,只是自己发现了一些新的用法,希望能对大家有用而已。事情的起因还是那个破烂电子相册软件,今天又发现了一个可改进之处,有一段程序我原来是这么写的:procedure CreateFile(const AFileName:String;const AStream:TMemoryStream原创 2004-12-10 22:48:00 · 1963 阅读 · 0 评论 -
关于一个软件的配色方案
最近在帮人开发一套软件,对方原本已经有这么一套系统了,但是由于是用VB写的,当时写的人水平又有限,导致程序经常崩溃,所以才让我从头开发一套。。目前,软件本身已经初具规模了,今天心血来潮,将原来非常恶心的颜色给替换掉了,谁知给客户一看,他竟然说还是要用原来的,因为操作员已经熟悉那套颜色了。。。◎#¥!,真是郁闷。也没办法,只好改拉,谁让客户是上帝的呢。。。。把我改前改后的图分别贴出来,以做纪念。。。原创 2004-12-21 22:35:00 · 1807 阅读 · 5 评论 -
软件启动画面中启动状态的显示
我们平时看到的很多软件(PhotoShop,3DMax)都会在启动画面中显示当前正在启动哪个模块,并在模块加载失败时给予提示,这样的好处是,可以让比较专业的软件使用者知道当前软件加载了哪些模块,或者在软件发生启动错误时,让用户得以反馈是启动的哪个模块时发生了,以及在长时间的软件启动过程中,让用户知道软件还在工作,避免用户对其失去信息。。。好了,说了那么多废话,就来看看我是怎么制作这样一个程序的,由原创 2005-02-08 11:39:00 · 1700 阅读 · 12 评论 -
Perl中对查询得的数据排序。
昨天晚上遇到这么个问题,客户反映我们的一个页面的排序不正确,对方反映了几次,可是我们就是什么问题都没查出来,看看查询的SQL命令,完全按照要求排序了呀,怎么会不正确呢。对方看我们迟迟无法解决,也是非常着急,并把他们那里出现的错误画面发过来了,于是晚上我抱着试试看的想法,把用户提供的数据输入到我们的系统中,刚开始输了几个,排序完全正常,然后,当我输入了十几条数据后,竟然发现排序确实不正常的。而乍一看原创 2005-02-08 08:52:00 · 1179 阅读 · 0 评论 -
继续学习VTK
为了火车站的那个项目,学习VTK的进度停了两个多月,总算这些天空下来了,再次拾起VTK。由于是第一次接触VTK,以前对OpenGL也不是很熟,所以到处寻找各种教程,没办法,官方提供的教程要好几十美元,电子版又怎么也找不到,只好到处找有没有关于VTK的论坛,可惜啊,国内似乎没有一个专门的VTK论坛,偶尔找到几篇关于VTK的帖子,也大多介绍一下什么是VTK,怎么安装云云。看来一切学习只能靠自己了。。目原创 2005-06-30 15:34:00 · 17221 阅读 · 16 评论 -
再谈后台调用外部程序的完美实现
上次介绍了如何在Delphi中使用发送消息的方式控制外部程序,一开始我在自己的项目中也确实是这么做的,但是后来遇到了这么一个问题:我所调用的程序,会在执行一段处理过程中,将结果显示到一个ListView中,那么为了知道我发出的命令,到底被那个程序执行后结果如何,我就必须监视ListView中的内容,察看最后出现的结果文字是什么,从而知道到底是成功还是失败了。那么,我的想法是,不断的查询ListVi原创 2005-07-01 15:31:00 · 2600 阅读 · 1 评论 -
三谈后台调用外部程序的完美实现
之前的一篇《再谈后台调用外部程序的完美实现》讨论了关于取得外部程序ListView中文字的方法。今天无意中看到了这篇文章《向其他程序的ListView控件发送LVM_GETITEMTEXT》,作者遇到了和我相同的问题,需要取得外部程序中ListView中的文字,但是解决方法却不尽同,我是用注入dll的方法,将自己的代码嵌入到外部程序中,同时将一部分程序逻辑也移了过去,而该文作者使用WritePro原创 2005-08-05 12:52:00 · 1921 阅读 · 0 评论 -
vtkdesigner终于编译成功
vtkdesigner是一款提供vtk的pipeline可视化编辑软件,有了它,就不需要自己再用程序去组合各种复杂的pipeline,而只需要拖动一下鼠标建立一个pipeline,并且设置一些参数,就可以立即观察到其效果了,vtkdesigner的下载页面是这里:http://vtkdesigner.sourceforge.net从一开始接触到vtk开始,我就希望能够用vtkdesigner来帮助原创 2005-08-06 21:27:00 · 3479 阅读 · 1 评论 -
用VTK显示平面图片
今天看到有人在vtk maillist中询问一个vtkImageReader的问题,正好拿它的程序过来玩玩,修改了一些地方,现在程序可以打开任意jpeg图片并显示出来了。代码如下:#define EXAMPLE_DATA "F:/photo/050529_cats/DSCN9150.JPG"int main(int argc, char **argv){ float origin[3] = {0,原创 2005-08-25 11:30:00 · 4352 阅读 · 4 评论 -
QT与VTK的结合开发
最近,由于项目的需要,我打算使用VTK来开发程序,VTK全名是VisualizationToolKit,它是一套跨平台的C++库,对OpenGL作了较全面的封装,将各种三维模型的存储,运算,显示,交互等内容全都以类的方式封装起来了,并且提供比OpenGL强大得多的功能。可惜VTK最大的缺点是,没有免费的教程,它只提供免费的API手册,其中只是对各个类的功能罗列而已,而参考书籍则需要花几十美元去购买原创 2005-04-09 15:07:00 · 9805 阅读 · 4 评论 -
QT与VTK的结合开发(3)
刚才在GOOGLE上找到两个老外使用QT和VTK的帖子,没有细看,但是似乎是使用了更简便的方法来结合这两个库了。我的解决方案工作得挺好,所以也不打算改了,以后再仔细研究它们吧,现在开始做软件的网络连接部分。留个地址:http://public.kitware.com/pipermail/vtkusers/2004-April/073122.htmlhttp://lists.trolltech.co原创 2005-04-17 18:17:00 · 2716 阅读 · 2 评论 -
QT与VTK的结合开发(2)
上次介绍了怎样在QT的Widget中显示VTK的图形,但是其实当时还有一个问题没有解决,就是当用鼠标左键拖动图形进行旋转时,图形竟然会有缩放或者莫名其妙的移动出现,另外,原来的方法也是使用了比较底层的winEvent()函数来从所有消息中挑出鼠标事件,一来这样的封装及其不美观,二来winEvent()函数是只能在Windows平台下使用的,这样就失去了跨平台性了。正好在修改默认的鼠标操作方式(VT原创 2005-04-15 22:56:00 · 6080 阅读 · 4 评论 -
后台调用外部程序的完美实现(Delphi)
最近在做的一个软件,其中有一部分功能需要调用其它的软件来完成,而那个软件只有可执行文件,根本没有源代码,幸好,我要做的事不难,只需要在我的程序启动后,将那个软件打开,在需要的时候,对其中的一个文本框设置一些文字,再点击一个按钮就可以了。说到这里,相信你也有了对该功能的一些初步设想了,没错,其基本思路就是:1)调用CreateProcess()打开目标程序。2)用FindWindow()找到目标程原创 2005-04-21 23:23:00 · 2390 阅读 · 2 评论 -
亲身经历SOLARIS下的内存Alignment错误
前一阵子在做一个程序模块,其基本功能是读取一个指定格式的文件,然后将文件中描速的内容组织成内存中的数据结构,在这个开发任务中,我们只需要生成内存数据就可以了,数据如何处理则是由其它小组来完成,因此数据结构也是由对方来定义的。经过一系列的设计、开发、测试,我们顺利的完成了模块在Windows上的开发工作,并且也由其它小组整合进了他们的程序之中。可是,不久前却传来Bug票,说我们的模块在Solaris原创 2005-04-25 00:06:00 · 1683 阅读 · 0 评论 -
一个快速排序的小技巧
最近在设计的代码中有这么一个要求,有一堆字符串,如:A[1], A[3], A[5], A[2](假设前缀都是A,并且中括号中的数值没有重复),现在要用程序将可以合并的数组都合并起来,变成:A[1..3], A[5]那么我想到的办法是这样的,将中括号中的数字提取出来,放在一个List中,然后对List排序,也就是说上述数据排完序后变成:1,2,3,5那么这时候再从头至尾遍历一下数组就可以知道哪些数原创 2005-05-24 21:52:00 · 1613 阅读 · 1 评论 -
Delphi下让窗口不显示在任务栏的另类方法
刚才看到了这篇东西《使窗口不在任务栏上显示(利用ITaskbarList接口)》,作者用ITaskList接口实现了隐藏窗口在任务栏按钮的功能,想起我好多年以前做的程序也有这样的功能,但是绝不是用这些接口之类的做的,只是一个API函数就搞定了(好像是SetWindowLong()中传个什么参数吧,真的想不起来了),可惜程序实在是找不到了,当然ITaskbarList的功能要稍许比以前的那个API强原创 2005-09-30 10:43:00 · 6442 阅读 · 0 评论