📄 delphifqa.htm
字号:
提供Windows 3.1模拟环境(emulation)的作业系统下执行, 如OS/2 Warp, Windows NT等. Borland也宣布将推出支援Windows 95的32位元版本. 据小道消息说现在购买Delphi 1.0 版的使用者或许可以免费升级至32位元版本, 但我却不这麽认为. 目前也知道Delphi 1.0 并不能正确地在Windows 95的热身版上执行. 在Delphi上编译出来的应用程式都是Windows 3.1的16位元码, 而Borland表示现有的 Delphi应用程式不需要修改即可在32位元版本的Delphi上重新编译成为32位元码的应用 程式. Francis Whiteley <whiteley@croughton.win-uk.net>指出在Delphi内的readme.txt中 有写道:"Delphi已经在Windows 3.1, Windows for Workgroups 3.11, Windows NT 3.5, OS/2 Warp,以及最近一版的Windows 95热身版下测试过. 注意, 在Microsoft推出 Windows 95的正式版本之前, 我们并不建议您发行在Windows 95环境下使用的大型的 (large-scale)资料库应用系统." 3.2 那些原始码管理工具(source management tools)相容於Delphi? Delphi Client/Server版即内含与PVCS联结的能力. 另外, 他应该也能够与大多数非语 言描述(non-language-specific)式的原始码管理工具协同工作. 由於Delphi的form是以 非文字(non-text)格式来储存, 因此该原始码管理工具必需具有处理二进位资料(binary data)的能力才有办法与Delphi协同工作. 如果您的原始码管理工具无法处理二进位资料的话, Rick Thompson <rat@ab00.larc. nasa.gov>有指出:"根据User's Guide 94-95页内所描述, 您可以将form档案以text的格 式储存, 以便以其它方式来编辑该档案或进行版本控制的目的. ASCII格式的form档案还 是能够被Delphi载入并还原回*.DFM格式." 据Chuck Lownie <chuck@mks.com>说:"MKS Source Integrity(MKS SI是仅次於PVSC, 拥 有超过35000位使用者的 PC/PCLAN 原始码管理工具)也将提供与Delphi整合的能力. 目 前这项整合的能力将只在MKS Source Integrity内提供, 但未来这项能力将直接合并於 Delphi内, 就如同PVCS一般." 3.4 我能够从C或C++程式中呼叫用Delphi发展的程式码吗? Delphi本身即具有产生DLL档的能力. 而其所产生的DLL也能够由C, C++, Visual Basic, Powerbuilder, 或是其它具有呼叫标准Windows DLL能力者来呼叫. 有一个具有资料库处 理能力(database-capable)的DLL□例就放在DEMOS\DB\DLL目录下. 就我所知道一些Windows程式设计语言的情况来说, 要对DLL进行除错(debug)不是件容易 的事, 而且您若写得不够严谨, 也很容易将您的系统给当掉. 所以记得要常常将您的程 式save起来. 3.5 有那些已知的协力厂商(third-party)的产品能够(或不能够)在Delphi中使用? 下面以'软体名称/厂商/测试人员/评论'的格式来介绍: Orpheus/TurboPower Software/graham@mhn.org/Orpheus(译注: Orpheus是太阳神 Apollo之子)是一套原生VBX元件(也就是Orpheus内的所有元件都是货真价实的Delphi元 件, 而不是以VBX的型态来滥竽充数), 也包含了其原始程式. 他目前还在beta-test的阶 段, 预计在五月推出. 他拥有一个text editor能够处理高达16Mb的文字资料, 还有一个 无限长度的list box, 智慧型的资料输入栏位(data entry fields), 允许您使用多个计 时器(timer)而不消耗任何Windows系统资源的计时器timer pool, spinners, 垂直式的 tabbed notebook, 以及其它高达24种澈底强化Delphi的元件可供使用. (译注: Orpheus据Turbopower Software表示将於六月底於美国地区正式推出. 国内的凤 庭软体也已取得TurboPower Software全系列产品的台湾区代理权, 另外亦代理美国 ShoreLine公司的VisualPro-1以及VisualPro-2两套VCL元件以及InfoPower公司的资料库 处理VCL元件, 您可迳向凤庭软体/林志强先生洽询. Tel:(02)545-5216, FAX:(02)514- 0377, BBS:(02)545-6091, E-mail:photin@c2.hinet.net) Crystal Reports VBX/Crystal Services/graham@mhn.org/包含在Visual Basic内的这 个VBX也能够Delphi内工作. 我还未测试过其它的版本是否也能够与Delphi一起工作. 其内定的类别(class)名称, TReport, 会与ReportSmith内建於Delphi内的类别名称相 冲突, 所以我将它改名为TCrystalReport. Spread-VBX 2.0/FarPoint Systems/graham@mhn.org/当我试著要载入Spread-VBX时, Delphi马上就当掉了, 跟著整著系统也无法继续动作. 我想这应该就代表Spread-VBX与 Delphi并不相容. Visual Basic's Grid/Microsoft/graham@mhn.org/虽然其内定的类别名称, TGrid, 也 会与Delphi内建的类别名称相冲突, 但在我将VB的TGrid改名为TVBGrid後, 也能够在 Delphi内使用. 我只是试著装装看它能不能够在Delphi内动作而已; 其实Delphi内建的 grid要比VB内的好. VBTools 3D Calendar/MicroHelp/graham@mhn.org/它也可以在Delphi内工作, 但是只要 您将它装进Delphi後, 它就变成没有与资料存取相关(data-aware)的能力. VBTools Card Deck/MicroHelp/graham@mhn.org/可以动作 VBTools Dice/MicroHelp/graham@mhn.org/可以动作 Data Widgets/Sheridan Software/graham@mhn.org/可以让它在Delphi内工作, 以及做 排序; 但是却失去了与资料联结的能力(data connectivity), 这样有什麽用呢?? Hey, you!!我知道您已经将一些VBX装到Delphi内使用. 请e-mail到graham@mhn.org告 诉我您正在使用的VBX, 好让这份资料更完整. ------------------------------ 4.有关资料库的问题 4.1 我如何利用Delphi来存取一个资料库? 一般来说, 您必须先进入"BDE Config"内为您所要联结的资料库建立别名(alias), 这样 可以避免让您在程式中必需硬性指定该资料库所在路径的困扰; 您只要针对其别名来工 作即可. 接著您至少要在form内放入三个元件: 一个Query或是Table元件用来与该资料 库的别名做沟通并获取一些资料; 一个DataSource元件来做为Query或Table与使用者介 面元件之间的沟通桥梁; 以及至少一个用来做资料存取的元件(译注: 即真正提供使用者 编修与浏览资料的使用者介面元件). 如果您曾经花上个把小时来使这几个元件之间能够确实联结起来的话, 不管您做的工作 是否能够有具体的反应呈现出来, 您可以试试将Query或是Table元件的"Active"属性设 定为"True", 这样将可在设计时期即让其开启(open)该资料库并将其中的资料反应在您 建立的使用者介面上. 4.2 Delphi支援後端应用(back-end)吗?(本问题语意不明) Delphi Desktop版本身并不直接支援後端应用, 但是对Local InterBase则是例外, 当 然也包括BDE(Borland Database Engine)本身. Delphi Client/Server版则直接支援 Oracle, Sybase, Informix, 以及InterBase. 但对两种版本而言, 您都能够利用协力 厂商的ODBC驱动程式来联结到您想要联结的系统. 4.3 Delphi包含那些与资料存取相关(data-aware)的控制元件? Steve Teixeira <steixeir@borland.com>指出: 两种Delphi的版本都拥有下列同样的与资料存取相关的元件: TDBGrid (资料格(data grid)) TDBEdit (与资料存取相关的编辑元件(edit control)) TDBNavigator (具有功能按键指示对资料, 以引导使用者对table做存取的引导 器(navigator)元件) TDBLabel (标签元件(label control)) TDBMemo (对编辑文字群集(text blobs)很有用的多列式编辑元件(multiline editco TDBImage (可显示图形栏位(graphic fields)的元件) TDBRadioButton and TDBCheckBox (这些就不用解释了吧!!) TDBListBox, TDBComboBox, TDBLookupListBox, TDBLookupComboBox 4.4 我可以使用我自已所拥有的ODBC(Open DataBase Connectivity) drivers吗?(本问 题语意不明) 一般来说, 可以. 我尚未碰到过无法与Delphi协同工作的ODBC驱动程式. 但从另一方面 来看, 我并未真正试过其它外来的ODBC驱动程式. 4.5 Delphi能够使用与资料存取相关的VBX吗? Delphi只支援Level 1的VBX元件. 这也就表示那些与资料存取相关的VBX元件"无法"在 Delphi内工作. 通常, 支援Microsoft Visual C++的VBX应该都可以在Delphi内使用,而 且某些与资料存取相关的VBX其实设计得能够在Delphi内使用, 但Delphi却无法存取它 们的资料属性. 您可以参考在第3.5节的VBX相容性列表. 4.6 我如何为一个Paradox的表格(table)撰写"更改密码"(change password)的函式? 在Delphi的VCL内并无法做到这样的事情. 这对我来说是相当严重的一项缺失. 但或许 您能够透过DBIPROCS以及DBITYPES这两个unit来与BDE直接沟通, 以达到这项目的. 您 可以呼叫DbiDoRestructure, 但是您得把它"相当多的"变数设为零, 以使它原封不动地 保留那些原先的值. 我就拥有这样的程式, 但列在这□似乎太长了点. 如果您需要的话, 您可以e-mail到<graham@mhn.org>向我索取. 4.7 为什麽当我对一个TFieldDefs呼叫Add method时, 系统会发出错误讯息? 因为文件上所述的是错误的. 应该还有一个布林(boolean)值来确认这个栏位是否被索 求(required). TFieldDefs.Add的正确宣告如下面所列: procedure Add(const Name: string; DataType: TFieldType; Size: Word; Required: Boolean); 4.8 能告诉我把Delphi和一个Microsoft Access的资料库联结起来的步骤吗? David Zaret <zaretd@il.us.swissbank.com>列出了下面的步骤: 下面所列的是我将我的Delphi app.联结到Access资料库的步骤: 1.执行主群组内的控制台. 2.启动ODBC图示, 以开启"Data Source"视窗. 3.点选(click)"Add..."键以增加新的data source, 选择"Access Data". 4.接著键入一个独一无二的"Data Source Name" (您要怎麽叫它都可以 ---- Description项目填不填皆可). 5.接著点选"Select Database"以选择您所要使用的资料库档案. 6.关闭"Data Source"视窗. 7.开启Delphi程式群组内的"Database Engine Configuration"以进入"BDE Configuration Utility"画面. 8.点选"New ODBC Driver"键. 9.在"SQL Link Driver"内填入一个名称 ---- 再一次提醒您, 随便您要怎麽叫它 都可以. 10.在"Default ODBC Driver"内选择"Access Data". 11.在"Default Data Source Name"内, 选择您在控制台内所填入的名称. 12.接著进入Aliases页(从下面的tab选择进入即可)以建立一个新的别名(alias). 13.点选"New Alias"键. 14.给它个别名吧!! 15.在"Alias Type"内选择ODBC_[您在步骤11给的名称]. 16.选择File|Save将设定存起来. 17.关闭BDE Configuration Utility视窗. 18.接著在您的project中 ---- (我知道有[很多种方法可以进行到下一步, 不过 这□所写的是我的方法): a)加入一个TDatabase元件 1)将AliasName属性设定为您先前定义的新别名. 2)DatabaseName属性中则随便给个名字. 3)LoginPrompt设为False(如果您不想要许可检查(permission checking) 的话). b)加入一个TQuery元件 1)将DatabaseName属性设定为您在步骤a.2)所设的名称. c)加入一个TDataSource元件 1)将DataSet属性放入前面TQuery的Name. 到此就算大功告成了!!您就拥有一个可使用SQL叙述的(SQL-ready), 与资料存取 相关的form了!! 4.9 我如何在程式中操作资料? 有时我们会想要以写程式的方式来对资料库做操作, 而不想牵涉到有关form或是使用者 介面的细节. 为了达到这个目的, 您就必须宣告TDatabase, TTable以及/或是TQuery这 几个类别的变数, 并且在程式中设定它们的属性 ---- 就如同您在设计时期(design time)时所做的一样. 记得要在您的uses中含括进来DB以及DBTables这两个unit, 不然 在编译时将会得到"Unknown idetifier"这个错误讯息. ------------------------------ 5.有关程式设计上的问题 5.1 我能够利用Delphi产生什麽样的目的格式(target formats)? Delphi会产生Windows 3.1格式的EXE档以及DLL档. 我也听说过可以用Delphi产生VBX, 但是我还不晓得该怎麽做. 至於DOS格式的EXE档则没办法产生. (译注: 关於利用Delphi制做VBX的方法, 您可以到ftp.borland.com的/pub/techinfo/ techdocs/language/delphi/vbx内抓取bpvbx.zip回来参考. 该篇文章原连载於 The Pascal Magazine上.) 5.2 我建立了一个用来测试Delphi的project, Delphi会产生出那些个档案?
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -