三层之"库没有注册"问题解决方案
[ 2007-02-08 22:28:47 | 作者: 痉挛的老鸨 ]
OleCheck(LoadRegTypeLib(LIBID_F1AppServer, 1, 0, 0, typelib));出現"尚未注册库"錯誤.
將C:\Program Files\Borland\Delphi7\Demos\ActiveX\TRegSvr程式複製到98,運行註冊TLB文件
原因: *.TLB文件沒有註冊. 執行tregsvr.exe註冊*.TLB文件即可正確運行.
--------------------------------------------callback
There is also a way for the server to call methods on the client. Its a
little involved to set up and I have not tried it myself, however, the
following is how to do it :
Server
-------
1). In the server _TLB unit, create a new interface, lets call it IClient.
2). After adding this, expand its tree and add any client methods that will
be called. For example, lets add a method called SendRecordsProcessed which
takes one parameter NumberRecords of type Integer.
3). Now expand the main RemoteDataModule interface to add a new server
automation method called ConnectClient which takes one parameter, IClient.
4). ConnectClient assigns its interface reference parameter to a variable
that is added to the remote data module, so, edit that RemoteDataModule's
...
阅读全文...
將C:\Program Files\Borland\Delphi7\Demos\ActiveX\TRegSvr程式複製到98,運行註冊TLB文件
原因: *.TLB文件沒有註冊. 執行tregsvr.exe註冊*.TLB文件即可正確運行.
--------------------------------------------callback
There is also a way for the server to call methods on the client. Its a
little involved to set up and I have not tried it myself, however, the
following is how to do it :
Server
-------
1). In the server _TLB unit, create a new interface, lets call it IClient.
2). After adding this, expand its tree and add any client methods that will
be called. For example, lets add a method called SendRecordsProcessed which
takes one parameter NumberRecords of type Integer.
3). Now expand the main RemoteDataModule interface to add a new server
automation method called ConnectClient which takes one parameter, IClient.
4). ConnectClient assigns its interface reference parameter to a variable
that is added to the remote data module, so, edit that RemoteDataModule's
...
阅读全文...
分类: windows |
评论: 0 |
浏览: 1159
最近在疯狂的折腾洗浴系统,一开始大刺刺的想自己搞一套数据库处理流程,结果到今晚为止,却一直是在泥潭中挣扎,一点成就感都没有,而且进度及其拖延,让销售那边很着急,自己更着急,将近一个星期没有好好睡觉了,身心疲惫
当然原因也是有的,主要是以前对数据库不熟悉,一直以做底层开发为主,所以对数据库的开发思路并不理解,构架的思路没有错,但是这套构架不是一个人从零开始折腾一两周就能搞出来的。一方面自己觉得思路没有错,一方面就深切明白这不是我一个人在短期内能搞定的,灰心失望之际很有些打击自信心。
最后想想还是换回delphi吧,起码数据库方面delphi的确比较好,而且我还算熟悉,但是很久没有用Delphi了,尤其以前数据库用的不多。于是开始在书架上搜索,嗯,很久以前买的一本书跳了出来,《Delphi/Kylix数据库开发》。买了一直没看,现在临时抱佛脚看看吧。这一看才明白,原来我折腾了这么久的东西,别人早已经做好了-_-! 长歌当哭。。。。。
有3、4年了,一直对Delphi持鄙视的眼光,虽然之前我用它开发了3年的时间,但随着目光越来越向底层靠拢,Delphi的不足也越发的明显,最终还是回归到C的怀抱。但是现在玩应用层开发,发现还是老家伙好使啊,以前的眼光有点以偏概全了,我必须要说,数据库,还是Delphi强!
三层,或者说多层,从今晚开始明白,而我,自此会对任何人和事包含一份敬畏之心,戒骄戒躁,常怀感恩之心,做一个平常人.....
当然原因也是有的,主要是以前对数据库不熟悉,一直以做底层开发为主,所以对数据库的开发思路并不理解,构架的思路没有错,但是这套构架不是一个人从零开始折腾一两周就能搞出来的。一方面自己觉得思路没有错,一方面就深切明白这不是我一个人在短期内能搞定的,灰心失望之际很有些打击自信心。
最后想想还是换回delphi吧,起码数据库方面delphi的确比较好,而且我还算熟悉,但是很久没有用Delphi了,尤其以前数据库用的不多。于是开始在书架上搜索,嗯,很久以前买的一本书跳了出来,《Delphi/Kylix数据库开发》。买了一直没看,现在临时抱佛脚看看吧。这一看才明白,原来我折腾了这么久的东西,别人早已经做好了-_-! 长歌当哭。。。。。
有3、4年了,一直对Delphi持鄙视的眼光,虽然之前我用它开发了3年的时间,但随着目光越来越向底层靠拢,Delphi的不足也越发的明显,最终还是回归到C的怀抱。但是现在玩应用层开发,发现还是老家伙好使啊,以前的眼光有点以偏概全了,我必须要说,数据库,还是Delphi强!
三层,或者说多层,从今晚开始明白,而我,自此会对任何人和事包含一份敬畏之心,戒骄戒躁,常怀感恩之心,做一个平常人.....
分类: windows |
评论: 1 |
浏览: 1161
fltk在windows上的一个小bug
[ 2007-01-17 23:03:02 | 作者: 痉挛的老鸨 ]
描述:
在windows下创建一个resizable window,最大化的时候会出错,窗口的最下方实际上并没有和任务栏靠在一起,而且如果任务栏很高,那更是奇怪,窗口会超出任务栏
原因:
怀疑实现部分并非是由系统处理,而且自己处理了这个事件,没有去看代码,目前暂时存疑
解决:
无。只有找到源代码的实现部分才知道怎么修改了
在windows下创建一个resizable window,最大化的时候会出错,窗口的最下方实际上并没有和任务栏靠在一起,而且如果任务栏很高,那更是奇怪,窗口会超出任务栏
原因:
怀疑实现部分并非是由系统处理,而且自己处理了这个事件,没有去看代码,目前暂时存疑
解决:
无。只有找到源代码的实现部分才知道怎么修改了
分类: windows |
评论: 0 |
浏览: 1040
在ocx中的worker thread中触发事件,vb调用时会崩溃
[ 2006-10-10 17:44:01 | 作者: 痉挛的老鸨 ]
这个操蛋的问题要从一年前说起,当初做无线点菜,PC端的接口是用C写的,提供的是lib/dll方式。有些客户惯于使用的是vc或delphi,这些都很方便,但是某些客户使用的是vb和pb,问题就来了。pb因为我并不熟悉,所以没有多管,vb一开始打算用的是dll,但是发现一触发事件就崩溃,在网上找了很久,发现问题出在事件触发是在thread中的,vb属于线程不安全的类型,所以一触发就崩溃,但是我又不能更换模型,后来写了一个ocx的版本,但是问题依旧,于是就搁置下来了,一直以来都是用delphi或vc做接口的,好在都是老客户,用delphi和vc写的接口还没有人发表过意见。
今年这个版本已经相当完善,而且由于某些原因,开始做通用的802版本,所以需要支持更多的新用户,也因此意味着一定会遇到vb和pb的用户,不能让这些用户限定在delphi和vc的ide下,这是不行的,于是ocx的问题又一次摆在眼前。
国庆节重写了ocx,基本上没有什么问题,但是因为没有设备,所以没有测试事件,前两天终于开始测试,让progame同志帮忙写了一个vb的测试程序,这就开始了。结果一开始就发现问题依旧,没办法,只好求助于网络,七拐八弯的终于发现了下面的网址:
http://vcfaq.mvps.org/com/1.htm
Why does my VB client keep crashing when compiled and not in the IDE when I use an ActiveX Control with a worker thread?
这不就是我的问题么!
原因倒也解释的很清楚:
You probably fire events from the worker thread in your control. Since all ActiveX Controls live in single-threaded apartments, the event sink your VB client supplies lives in that STA too. VB operates in apartment model only, hence the pointer for the event sink is in fact ...
阅读全文...
今年这个版本已经相当完善,而且由于某些原因,开始做通用的802版本,所以需要支持更多的新用户,也因此意味着一定会遇到vb和pb的用户,不能让这些用户限定在delphi和vc的ide下,这是不行的,于是ocx的问题又一次摆在眼前。
国庆节重写了ocx,基本上没有什么问题,但是因为没有设备,所以没有测试事件,前两天终于开始测试,让progame同志帮忙写了一个vb的测试程序,这就开始了。结果一开始就发现问题依旧,没办法,只好求助于网络,七拐八弯的终于发现了下面的网址:
http://vcfaq.mvps.org/com/1.htm
Why does my VB client keep crashing when compiled and not in the IDE when I use an ActiveX Control with a worker thread?
这不就是我的问题么!
原因倒也解释的很清楚:
You probably fire events from the worker thread in your control. Since all ActiveX Controls live in single-threaded apartments, the event sink your VB client supplies lives in that STA too. VB operates in apartment model only, hence the pointer for the event sink is in fact ...
阅读全文...
分类: windows |
评论: 1 |
浏览: 1629
伟大的progame 11:30:40
我又在看我2年多前的代码 向自己学习
伟大的progame 11:30:50
原来我处在一个极端 现在在另一个极端
量大的老鸨 11:32:14
我3年前的代码,只能形容为:不忍卒读
量大的老鸨 11:32:43
现在的代码,可以很公正的说:垃圾
伟大的progame 11:33:07
我原来走标准的三层 com+ businessobject
伟大的progame 11:34:15
现在是framework + xml
伟大的progame 11:34:28
接下来要中和了
伟大的progame 11:34:31
两个都是极端
老渔翁 11:34:57
标准的三层是垃圾。
量大的老鸨 11:37:01
我以前是标准的万物皆类,一个小小的接口都要用类来包裹一番,结果累的不行
量大的老鸨 11:38:05
现在终于幡然悔悟,明白鸟手中无刀,心中有刀的真谛,所谓放下屠刀,立地成佛啊.....
伟大的progame 11:38:33
你不明白 你没有涉及到复杂多变的业务
量大的老鸨 11:39:30
以史为鉴,展望未来,我们的目标是飞花摘叶,皆可伤人,要做到手中无刀,心中也无刀.....
乌鸦 11:39:50
粒度看自己把握
量大的老鸨 11:40:05
我坚持认为,复杂的需求未必一定带来复杂的实现
老渔翁 11:40:36
我一直用成熟的技术,不用最先进的技术。
乌鸦 11:40:44
复杂的实现必带来不稳定
量大的老鸨 11:40:53
葵花宝典为什么那么nb?化繁为简,一根绣花针就搞定一切啊
老渔翁 11:40:57
这是为什么很多国家不修磁悬浮的原因。
乌鸦 11:41:10
复杂的东西必带来不可靠
量大的老鸨 11:41:46
再看独孤九剑,关键就在一个破字
乌鸦 11:42:02
以前是数据库,非要怎么设计
乌鸦 11:42:15
现在是类
乌鸦 11:42:23
然后又是层
量大的老鸨 11:42:34
所谓九贱齐出,群处可破.....
伟大的progame 11:43:41
没说实现要复杂
伟大的progame 11:43:53
但是你如何有一个灵活的东西去面对多变的业务呢
伟大的progame 11:44:08
...
阅读全文...
我又在看我2年多前的代码 向自己学习
伟大的progame 11:30:50
原来我处在一个极端 现在在另一个极端
量大的老鸨 11:32:14
我3年前的代码,只能形容为:不忍卒读
量大的老鸨 11:32:43
现在的代码,可以很公正的说:垃圾
伟大的progame 11:33:07
我原来走标准的三层 com+ businessobject
伟大的progame 11:34:15
现在是framework + xml
伟大的progame 11:34:28
接下来要中和了
伟大的progame 11:34:31
两个都是极端
老渔翁 11:34:57
标准的三层是垃圾。
量大的老鸨 11:37:01
我以前是标准的万物皆类,一个小小的接口都要用类来包裹一番,结果累的不行
量大的老鸨 11:38:05
现在终于幡然悔悟,明白鸟手中无刀,心中有刀的真谛,所谓放下屠刀,立地成佛啊.....
伟大的progame 11:38:33
你不明白 你没有涉及到复杂多变的业务
量大的老鸨 11:39:30
以史为鉴,展望未来,我们的目标是飞花摘叶,皆可伤人,要做到手中无刀,心中也无刀.....
乌鸦 11:39:50
粒度看自己把握
量大的老鸨 11:40:05
我坚持认为,复杂的需求未必一定带来复杂的实现
老渔翁 11:40:36
我一直用成熟的技术,不用最先进的技术。
乌鸦 11:40:44
复杂的实现必带来不稳定
量大的老鸨 11:40:53
葵花宝典为什么那么nb?化繁为简,一根绣花针就搞定一切啊
老渔翁 11:40:57
这是为什么很多国家不修磁悬浮的原因。
乌鸦 11:41:10
复杂的东西必带来不可靠
量大的老鸨 11:41:46
再看独孤九剑,关键就在一个破字
乌鸦 11:42:02
以前是数据库,非要怎么设计
乌鸦 11:42:15
现在是类
乌鸦 11:42:23
然后又是层
量大的老鸨 11:42:34
所谓九贱齐出,群处可破.....
伟大的progame 11:43:41
没说实现要复杂
伟大的progame 11:43:53
但是你如何有一个灵活的东西去面对多变的业务呢
伟大的progame 11:44:08
...
阅读全文...
分类: windows |
评论: 1 |
浏览: 1485
硬盘录像机系列文档之三:框架
[ 2006-05-24 17:25:39 | 作者: 痉挛的老鸨 ]
http://www.heybrain.com 首发,如有转载,请务必保留网站连接。
这一篇的主要内容是描述硬盘录像机的内部框架结构,建立基本的鸟瞰图。说到框架,就不能不对硬盘录像机做一个定义。
硬盘录像机的定义:以视频为中心,结合各种周边软硬件,以监控为目的的系统。
视频的定义很宽泛,包括专业摄像头/usb摄像头/DV/电视卡/web摄像头等设备采集的画面、视频片断、网络视频等。所有的目的就是一个,获取由多幅静态画面组成的动画视频。但是仅仅采集到视频是不够的,必需显示出来才能被人所认知,所以就需要视频显示的功能。同时视频具有一些基本的控制功能,比如亮度、对比度、色度、饱和度、分辨率等。显示和控制是最基本的要求,另外存储和录像播放也是必不可少,同时,系统中还会包括一些附属设备和功能,比如云台控制、开关报警、音频录制、远程观看和控制等。把以上这些功能组合起来,就构成了一套完整的硬盘录像机。
从系统架构上看,一套完整的硬盘录像机包括以下几个方面:
1.原始数据采集和控制。
对于视频采集设备,目前一般分为四种。一种是以BT848/878或7143芯片为核心的软采集卡,主要功能是通过AD转换将模拟信号转换为数字信号,再通过驱动送往应用层。接口有三种方式,一种是比较“原始”的连接库(DLL/lib)方式,通过函数进行调用来获得每一帧画面,这种方式比较原始,但是效率是最高的;第二种是通过标准的系统调用来提供数据,比如vfw(video for windows)和v4l(video for linux),这种方式最先起源于usb摄像头,目的是提供统一的接口以方便用户调用,但是面对越来越多的视频采集设备和日益发展的硬件水平,其接口逐渐变得不那么适合,对于windows而言,正在逐步淘汰vfw,而在linux里,v4l也进化到了v2版本;第三种是windows独有的方式:directshow,复杂,强大,效率相对要低一些,开发比较困难。软卡的优点是数据处理方式很灵活,可以跟随软硬件的不断发展而进化,缺点是在目前的硬件水平下,多路同时处理比较受限,主要表现在多路压缩时占用的CPU过高和PCI带宽不够,但随着CPU的不断进步和PCI-X的逐步实现,这些都是可以解决的。
第二种采集设备是以软卡机制为前端,以dsp芯片为核心的硬采集卡。主要框架是...
阅读全文...
这一篇的主要内容是描述硬盘录像机的内部框架结构,建立基本的鸟瞰图。说到框架,就不能不对硬盘录像机做一个定义。
硬盘录像机的定义:以视频为中心,结合各种周边软硬件,以监控为目的的系统。
视频的定义很宽泛,包括专业摄像头/usb摄像头/DV/电视卡/web摄像头等设备采集的画面、视频片断、网络视频等。所有的目的就是一个,获取由多幅静态画面组成的动画视频。但是仅仅采集到视频是不够的,必需显示出来才能被人所认知,所以就需要视频显示的功能。同时视频具有一些基本的控制功能,比如亮度、对比度、色度、饱和度、分辨率等。显示和控制是最基本的要求,另外存储和录像播放也是必不可少,同时,系统中还会包括一些附属设备和功能,比如云台控制、开关报警、音频录制、远程观看和控制等。把以上这些功能组合起来,就构成了一套完整的硬盘录像机。
从系统架构上看,一套完整的硬盘录像机包括以下几个方面:
1.原始数据采集和控制。
对于视频采集设备,目前一般分为四种。一种是以BT848/878或7143芯片为核心的软采集卡,主要功能是通过AD转换将模拟信号转换为数字信号,再通过驱动送往应用层。接口有三种方式,一种是比较“原始”的连接库(DLL/lib)方式,通过函数进行调用来获得每一帧画面,这种方式比较原始,但是效率是最高的;第二种是通过标准的系统调用来提供数据,比如vfw(video for windows)和v4l(video for linux),这种方式最先起源于usb摄像头,目的是提供统一的接口以方便用户调用,但是面对越来越多的视频采集设备和日益发展的硬件水平,其接口逐渐变得不那么适合,对于windows而言,正在逐步淘汰vfw,而在linux里,v4l也进化到了v2版本;第三种是windows独有的方式:directshow,复杂,强大,效率相对要低一些,开发比较困难。软卡的优点是数据处理方式很灵活,可以跟随软硬件的不断发展而进化,缺点是在目前的硬件水平下,多路同时处理比较受限,主要表现在多路压缩时占用的CPU过高和PCI带宽不够,但随着CPU的不断进步和PCI-X的逐步实现,这些都是可以解决的。
第二种采集设备是以软卡机制为前端,以dsp芯片为核心的硬采集卡。主要框架是...
阅读全文...
分类: windows |
评论: 0 |
浏览: 1822
硬盘录像机系列文档之一:前言
[ 2006-05-18 17:40:41 | 作者: 痉挛的老鸨 ]
说明:这是几年前写的,现在看来还算有点意义。加点补充,在此(http://www.heybrain.com)首发,如有转载,请务必保留原始网站连接。
前言:
经过几年的开发,对硬盘录像机产生了一些厌倦,但是有些东西还是值得纪录的,所以就写了这个技术整理。目的是为了记录一些曾经的经验和教训,某些不清楚的部分不会抄一些文章来充数,也不会为了让文字看起来比较丰满而作过多的资料调查,所以能阅读这个文档的对象应该有一些起码的知识。
整个文档用从全局到细节,再返回全局的方式来写,先对整体设计、环境、行业现状进行描述,列举一些应该深入的方向,然后进行详细的叙述,最后再对整体进行一次勾勒,让自己,也让阅读者对硬盘录像机的历史和发展有一个基本的认识。
因为只是个人写作,不一定会有计划,写到哪里只能是看情况。
2006-05-18 17:43
分类: windows |
评论: 0 |
浏览: 1369
1

