
几年前至今,我们也面对这个问题,自从问询不同厂家的设计人员后就放弃努力了,因为同一品牌型号的摄像设备是不可能在系统中被同时被识别和调用的,因为其硬件标识在厂家出厂时已经写死,无论你装几只,其ID都是一样的。通过公共接口访问,同一时刻你只能捕获一个设备句柄。有个别厂家的产品可以对其同型产品同时识别多个,但只限于使用其自带的应用程序,注意,不是SDK,只是一个目标程序,他们不会给你源码的。对我们设计人员, 没有丝毫用处。
没办法,我们只好采用同一类型,不同厂家(芯片组)的产品,识别和捕获问题就自然不成问题了。一直是这么解决的。
在Delphi编程中使用C语言代码
Windows下编程的工具有很多 例如VB Delphi VC等等 我在这里不想讨论 它们的具体哪个更好一点 这种幼稚的问题 玩过DOS程序设计的人都知道 DOS下很多语言的实质核心还是调用系统提供的汇编中断函数 到了Windows下 它就变成了我们常说的API了 而在Windows下写程序很多时候都是调用API 语言 只不过是一个表达工具而已
我现在已经参加工作大约有半年左右 我们公司是用Borland公司的Delphi作为主开发工具 本着未偏袒任何一个工具的立场 我说句公道话:Delphi是目前Win 下开发程序的最快速 最有效率的工具
Delphi适合用来开发应用程序 但是有时侯一些底层的东西可以直接使用C语言来开发 我在公司经常开发跟硬件相关的项目 而很多硬件的SDK包是用C来写的 这个时候我一般把它们转换成Delphi(PASCAL)语法的代码 下面谈一下我的个人粗浅经验 因为当时学校教的是Pascal语言 所以我对C语言并不是太熟手 下面的观点或者代码如有错漏之处希望高手们放小弟一马:)
一:将C语言的程序编译成DLL供Delphi调用 这种方法过于简单 而且需要额外带一个DLL文件 所以不在本文的讨论范围之内
二:直接转换C语言代码到DELPHI代码
C语言的函数格式与Delphi不同 它们是函数返回类型在前 函数声明在后 对于没有任何返回类型的函数则定义为VOID类型
例如:Delphi中函数function MyFunction:(intIN:integer):Bool;相应的C语言代码就变成Bool MyFunction(int intIN);又例如procedure MyProcedure;====>void MyProcedure;采用这种方法 一般要求对C语言比较熟悉 我一般是采用这种方法 下面是我收集整理的自己常用的Delphi与C之间的类型对应表 其中左边是C类型 右边是对应的Delphi类型:
以下是引用片段 ABC > TABC ACCEL > TAccel ATOM > TAtom BITMAP > TBitMap BITMAPCOREHEADER > TBitmapCoreHeader BITMAPCOREINFO > TBitmapCoreInfo BITMAPFILEHEADER > TBitmapFileHeader BITMAPINFO > TBitmapInfo BITMAPINFOHEADER > TBitmapInfoHeader BOOL > Bool CBT_CREATEWND > TCBT_CreateWnd CBTACTIVATESTRUCT > TCBTActivateStruct CHAR > Char CHAR > PChar CLIENTCREATESTRUCT > TClientCreateStruct COLORREF > TColorRef PAREITEMSTRUCT > TCompareItemStruct STAT > TComStat CREATESTRUCT > TCreateStruct CTLINFO > TCtlInfo CTLSTYLE > TCtlStyle CTLtype > TCtltype DCB > TDCB DDEAACK > TDDEAck DDEADVISE > TDDEAdvise DDEDATA > TDDEData DDEPOKE > TDDEPoke DEBUGHOOKINFO > TDebugHookInfo DELETEITEMSTRUCT > TDeleteItemStruct DEVMODE > TDevMode DOUBLE > Double DRAWITEMSTRUCT > TDrawItemStruct DWORD > LongInt ENUMLOGFONT > TEnumLogFont EVENTMSG > TEventMsg FARPROC > TFarProc FIXED > TFixed FLOAT > Single GLYPHMETRICS > TGlyphMetrics HANDLE > THandle HANDLETABLE > THandleTable HARDWAREHOOKSTRUCT > THardwareHookStruct HELPWININFO > THelpWinInfo INT > Integer KERNINGPAIR > TKerningPair LOGBRUSH > TLogBrush LOGFONT > TLogFont LOGPALETTE > TLogPalette LOGPEN > TLogPen LONG > LongInt LONG DOUBLE > Extended LONG INT > LongInt LPSTR > PChar LPWSTR > PWideChar MAT > TMat MDICREATESTRUCT > TMDICreateStruct MEASUREITEMSTRUCT > TMeasureItemStruct MENUITEMTEMPLATE > TMenuItemTemplate MENUITEMTEMPLATEHEADER > TMenuItemTemplateHeader METAFILEPICT > TMetaFilePict METAHEADER > TMetaHeader METARECORD > TMetaRecord MINMAXINFO > TMinMaxInfo MOUSEHOOKSTRUCT > TMouseHookStruct MSG > TMsg MULTIKEYHELP > TMultiKeyHelp NCCALCSIZE_PARAMS > TNCCalcSize_Params NEWTEXTMETRIC > TNewTextMetric OFSTRUCT > TOFStruct OUTLINETEXTMETRIC > TOutlineTextMetric PAINTSTRUCT > TPaintStruct PALETTEENTRY > TPaletteEntry PANOSE > TPanose PATTERN > TPattern POINTFX > TPointFX PSTR > PChar PWSTR > PWideChar RASTERIZER_STATUS > TRasterizer_Status RGBQUAD > TRGBQuad RGBTRIPLE > TRGBTriple SEGINFO > TSegInfo SHORT > SmallInt SHORT INT > SmallInt SIZE > TSize TEXTMETRIC > TTextMetric TPOINT > TPoint TRECT > TRect TTPOLYCURVE > TTTPolyCurve TTPOLYGONHEADER > TPolygonHeader UINT > Word UNSIGNED > Word UNSIGNED CHAR > Byte UNSIGNED INT > Word UNSIGNED LONG > LongInt(DWORD) UNSIGNED LONG INT > LongInt UNSIGNED SHORT > Word UNSIGNED SHORT INT > Word VOID > Pointer WINDOWPLACEMENT > indowPlacement WINDOWPOS > indowPos WNDCLASS > ndClass WORD > Word
lishixinzhi/Article/program/Delphi/201311/24758
数据库窗体专家和数据库 *** 作台(DBD)
Delphi为用户开发简单的数据库应用程序提供了一个开发工具叫做 数据库窗体专家 (Database Form Expert) 在Delphi系统菜单Tool菜单下可以找到
数据库窗体专家能够自动生成简单的数据库应用程序中所必须完成的许多任务 它还可以生成基于单个数据库表的应用程序窗体或基于主要──明细型多个数据库表的应用程序窗体 数据库窗体专家能够自动完成的任务如下
● 放置数据库部件到窗体中(TDataSource部件)
● 为数据集部件(TTable TQuery)和磁盘上的数据库建立连接
● 建立数据源(TDataSource)与数据控制部件的连接 数据源(TDataSource)与 数据访问部件(TTable TQuery)的连接
● 为TQuery部件编写SQL语句
● 为窗体中的部件定义Tab顺序
数据库 *** 作台(DBD)是数据库维护和数据定义工具 程序设计人员利用它可以查询 连接 建立 重构 索引 修改和拷贝数据库表 包括Pà€aradox和dBASE文件和基于 SQL语言的数据库表 而且在使用DBD *** 作Paradox或dBASE的表时 用户不必拥有 Paradox 或dBASE数据库管理系统 DBD还可以把一种格式的数据和数据字典拷贝成另一种格式 例如 你可以将一个dBASE的表拷贝到远程的SQL服务器上的一个数据库中去 有关DBD详细描述 请参看 数据库 *** 作台(DBD)的使用
Delphi数据库应用程序的开发方法和步骤
概述
用Derphi用开数据库应用程序 虽然与开发其他应用程序有相似之处 但是也有一些重要的区别 我们必须要加以注意
利用Delphi的客户/服务器功能 程序设计者可以在本地数据库上或远程数据库服务器上开发客户/服务器模式的应用程序 Delphi 的一个强有力的功能之一是可以将基于本地桌面数据库系统的应用程序很容易地修改成客户/服务器模式的应用 一个Delphi 数据库应用程序访问的是本地数据库还是远程SQL数据库服务器上的数据库 这对于最终用户是完全透明的 即数据库的物理位置对最终用户是透明的 当数据库的物理位置发生变化时 用户界面不必随之变化
因为数据库应用程序的是依赖于它所访问的数据库的 所以在开发数据库应用程序之前必须要建立一个完善的数据库即数据定义 数据定义应当是开发数据库应用程序的一部分 但它超出了书本的范围 有关数据定义的内容 请参看关系数据库设计方面的资料 在我们用Derphi开发一个数据库应用程序时 可能有下列四种情况
数据库不存在或者必须要重新定义 使用DBD为本地数据库定义Paradox或dBASE 数据库表 使用Delphi提供的服务器开发工具如Windows ISQL或DBD定义本地或远程SQL数据库务器上的数据库
数据库在桌面数据库系统中或局域网上(如Paradox或dBASE) 而且BDE 数据库和应用程序在同一台机器上 这是典型的独立应用
数据库在桌面数据库系统中 但是用户要把它改变到SQL数据库服务器中去 这种情况我们在附录C中详细讨论
数据库在SQL数据库服务器中 而且应用程序将到SQL数据库服务器中去访问数据库 这是一个标准的客户/服务器应用
有关开发客户/服务器应用程序的详细内容 参看 客户/服务器应用 一章
数据库应用程序的开发步骤
数据库应用程序的最终目标就是为用户提供一个满足其长期需要的软件产品 因此 成功地开发一个数据库应用程序的关键之一是要详细地定义用户的需求 然后再围绕用户的需求进行开发 数据库应用程序的一般开发的三个基本步骤如下
● 系统设计
● 系统实现
● 系统运行和维护
在这个三个基本步骤中 都包含着数据库的开发和应用程序界面的开发两大类任务 对于一个客户/服务器模式的应用 数据库和应用界面的区别就更明显一些 因为它们运行在不同的平台之上 而且使用的 *** 作系统都常常不一样 如(一个Unix环境的服务器和Windows环境的客户机)
系统设计
系统设计阶段应当根据用户的需求 明确地描述数据库(数据库服务器端)和应用界面(客户机端)实现的功能 即决定哪些功能由服务器端实现 哪些功能由客户机端实现 对于客户/服务器应用程序 许多功能既可以在服务器端实现又可以在客户端实现的 例如一个复杂的数学变换功能既可以由客户端的应用程序实现 也可以由服务器端的存贮过程实现 服务器和客户端应用程序功能的划分往往取决于应用程序运行的硬件环境 例如 如果客户端是低档的PC机 服务器端是高档的工作站 那么大量的计算由服务器完成是比较理想的
系统实现
系统实现阶段的主要任务是使用Delphi提供的工具和部件以及Pascal语言实现系统设计阶段的设想 并进行调试
在系统实现阶段 最好使用数据库的一个备份数据库 这个备份的数据库与原数据库具有相同的结构 但其中的数据库只是原数据库中的一部分 至所以不在原数据库上开发应用程序 是因为考虑到没有调试好的应用程序可能会破坏数据库中的数据或者妨碍数据库的正常 *** 作
如果应用程序是基于远程SQL数据库服务器的 在系统实现阶段可以采用两种方法
● 在本地InterBase服务器上 使用数据库的备份数据库进行开发和调试
● 在远程服务器上 使用数据库的备份数据库进行开发和调试
第一种方法优越性在于 它是独立于服务器的 而不至于影响服务器的其它的 *** 作 而且不消耗服务器的资源不增加网络的负担 它的不利的方面是开发出来的应用程序只能在标准的SQL服务器上使用和调试 第二种方法能够使程序设计人员直接感受到服务器的特性 但它在调试阶段要消耗网络和服务器的资源 这种方法具有一定的危险性 程序中的错误可能会导致服务器的瘫痪
系统运行和维护
一个应用系统性能的优劣 效率的高低始终应当由用户来做出判决 应用程序在运行过程中 用户会提出一些新的需求和建议 根据用户需求的变化 应当对应用程序做一定的修改 使其进一步地得到完善和提高
交付数据库应用程序
交付数据库应用程序意味着将它交付给最终用户 并且提供应用程序运行所需的软件 非数据库应用程序往往只需要一个EXE文件 而数据库应用程序要包括下列几类文件
● 数据库应用程序生成的EXE文件和DLL文件(如果有的话)
● 必要的辅助文件(如Readme文件或HLP联机帮助文件)
● 支持访问数据库的BDE 有时也称为IDAPI
● 用于打印输出报表的ReportSmith报表工具
● 如果应用中使用了VBX控件 还要包括VBX和BIVBXII DLL
安装BDE
在交付数据库应用程序时 必须同时在运行应用程序的机器上安装BDE Delphi 本身包含可再安装的BDE 在准备数据库应用程序安装盘时 同时从Delphi中复制一份BDE 到最终用户的机器中 BDE中包含访问多种数据库系统的驱动程序 为了节省磁盘空间 在安装BDE时 可以只安装应用程序必须的驱动程序 例如 如果我们的应用程序只需要访问dBASE数据库文件 那么在安装BDE时 只需安装dBASE的驱动程序就行了 要访问Paradox数据库 BDE至少需要 KB的磁盘空间 BDE主要包括下列文件 请参看DEPLOY TXT文件
lishixinzhi/Article/program/Delphi/201311/25177
以上就是关于win7,64位,delphi使用VFW *** 作摄像头,如何根据硬件ID查找其句柄全部的内容,包括:win7,64位,delphi使用VFW *** 作摄像头,如何根据硬件ID查找其句柄、在Delphi编程中使用C语言代码[1]、DELPHI基础教程:Delphi开发数据库应用程序概述(二)[2]等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)