如何连接多个工程文件(50分)

  • 主题发起人 waterfish
  • 开始时间
W

waterfish

Unregistered / Unconfirmed
GUEST, unregistred user!
在开发过程中,总是一个模块一个模块地开发,每个模块都用一个工程文件管理
起来,并且每个模块都有自己的数据模块及主Form。但是到了所有模块都开发
完成后,我需要将所有的模块联接到一起,但是这里在delphi里就出现了很多
错误信息,比如说数据库控件同名,Form同名等等,搞得很头痛。请问大家是
否有解决这些即麻烦又头痛的问题的好方法呢?
 
D

dwwang

Unregistered / Unconfirmed
GUEST, unregistred user!
如果各个模块最终要连在一起,就应该在一开始
用一个Project,而不会分成多个,也不会有多个主Form。

如果各个project目标是多个分开运行的EXE,
又不存在连在一起的问题,所以请将问题再讲明确一点。
 
H

huizhang

Unregistered / Unconfirmed
GUEST, unregistred user!
按模块开发,调试不是不可以, 但是对于一个较大的项目来讲就应该多少有一点组织,
至少每一个窗体,数据表都应该等等都应该有一个特定的名字. 如你所做的每一块都
图方便使用系统缺省分配的名字, 自然结果一团糟.

我想一旦造成了目前的情况,绝对没有捷径可走. 唯一能做的是, 回到各个分项目中
去, 用Object Inspector给每一个窗体改一个名称,然后另存为特定的名字. 对于数
据表则可以公用一个数据模块(DataMoudle), 将用到的Table,datasource加入到
DataMoudle并且另起名字. 还有那些public变量... 所有代码必须做相应的的变化才行.

早知如此, 何必当初! 总之一句话, 从头来过.
 
W

waterfish

Unregistered / Unconfirmed
GUEST, unregistred user!
以上问题确实是由于一开始使用Delphi编程经验不足而至,现在窗体同名等问题已经
基本上解决了,我只是希望各位能够提供一个好的方法管理Delphi程序。例如象
Foxpro中的项目管理器就是一个比较好的管理方法。
 
W

waterfish

Unregistered / Unconfirmed
GUEST, unregistred user!
还有一个问题,嘻嘻,可能看上去很简单,但是我懒得查书:如何在delphi程序里
执行另一个已编绎成Exe的delphi程序.
 
D

dwwang

Unregistered / Unconfirmed
GUEST, unregistred user!
如果用Delphi4的话,项目管理会改善很多,
不过我还是不喜欢Delphi4,华而不实的东西太多,
都是叫微软给带坏的!

真正想搞大规模软件开发,还是用PVCS好一点,
Delphi又内置支持。

另外那个问题,有个Execute还是什么的函数,
其实就是WinAPI,调什么EXE都行。
我的程序里前两天还被迫用过,可惜懒得记这种功能:)
明儿早上要是还没人回答,再贴给你。
再贴给你。
 
S

Sunset

Unregistered / Unconfirmed
GUEST, unregistred user!
HINSTANCE ShellExecute(
HWND hwnd, // handle to parent window
LPCTSTR lpOperation, // pointer to string that specifies operation to perform
LPCTSTR lpFile, // pointer to filename string
LPTSTR lpParameters, // pointer to string that specifies executable-file parameters
LPCTSTR lpDirectory, // pointer to string that specifies default directory
INT nShowCmd // whether file is shown when opened
);
 
Z

z

Unregistered / Unconfirmed
GUEST, unregistred user!
用 shellexecute或winexec,看你怎样调用程序,再决定使用哪个。
 

曹晓钢

Unregistered / Unconfirmed
GUEST, unregistred user!
我是这样解决的:

1。在一个大的工程中,总是要进行人员管理、权限管理和数据管理。

在SQL库中,建立一个全局控制表,专门用来管理人员权限:

TABLE_CONTROL:
(PK) id char(10)
personID char(10) ---> pk, point to person table
rights1
rights2
...

TABLE_RIGHT
(PK) RIGHTID CHAR(10)
ModuleName char(30) --->模块标题
xxx
xxx

这样,就可以表示 某某,经理,管理某部门,调阅某档案,
签发某文件,签字付帐 等关系。

2。做一个总控程序,登录过后就去查控制表,决定有那些工作此人允许做,
列出这些工作。如何做的好看又有效是编程者的事。
这个主控程序是通用的,可以在所有的系统集成工程中使用。

3。每一个模块编译成一个EXE或者DLL,供主控程序调用。
编写模块是一件很好办的事。
首先,整理好所有的Form,提取几种基本的类型,比如FrmBasicInput,
FrmQuery,FrmGetMessage之类,写成模版。

如FrmBasicInput, 可以只有一个TDataBase,TTable,TDatasource,TDBGrid
,但是要把诸如登陆,错误处理,程序界面等等都做好(这些本身也可以做成
FrmBasic) ,在具体写程序时就简单了,可以从它继承,只要改TTable的属性
和Grid的标题就可以了.

如果要改这些基本的东西,就只需要改FrmBasicInput,所有的都可以改过来。
这也是Delphi最强大的地方,用VB不能做到,因为VB不是面向对象的。

如此这般,一个大的工程就做完了。
再把这些底层完善一下,这些Basic Form是放之四海而皆准的,写下一个工程
就方便了。一个公司的“经验”,其实就在这些类库里了。文档一定要做好。

一个Team,应该有一个系统分析员,来分析系统层次,建立数据库;
一个高级程序员来划分模块,写任务说明书;一堆程序员来根据说明书写模块.
这个工程的水平和适用性,就体现在这个系统分析员手里;工期进度,掌握在高
级程序员手里.系统的鲁棒性和稳定性,掌握在编写底层类库的程序员手里。
这样,程序质量就可以控制了。

这个问题,我这样回答,其实涉及的是软件工程方面的事了,可以去上Borland
的课,很有用的。(呜呜,我还没上过)

这一方面,台湾要做的比大陆好得多,比如联栓科技做的一套完全开发工具,
从数据库设计开始就替你做了,买他的产品就等于买了一套这样的类库。

不过事实证明,自己做这样的工作可能更好,更切合自己的实际。

希望有帮助。

(50分好象少了点,我连看家本事都写出来了).
 

曹晓钢

Unregistered / Unconfirmed
GUEST, unregistred user!
调用EXE,用CreateProcess最标准,Winexec等都是调它的.
有好几个套件里都有这种控件,如AHM Freeset.
 
W

waterfish

Unregistered / Unconfirmed
GUEST, unregistred user!
谢谢各位对于工程的看法。其实对于现在国内软件工程的开发方法,我也觉得很有问题。就拿我们公司来说吧,总是打一枪走一个地方,从来没有从中总结出象样的开发
方法来。而且开发工具也不好好地选用。我现在开发这个项目使用delphi都是我们
和老总讲数讲回来的(由于后台使用的是oracle数据库,所以公司极力主张使用oracle公司本身的开发工具。所以,对于这个项目的成败关乎着自己是否还能再在这
间公司呆下去。
至于开发方法,很感谢曹晓钢先生的提示。但是,在我们这个公司里从系统分析员到
程序员都是要我们自己一脚踢(人工又不见有双份)。唉,真是考起自己了,平心而论
自己确实还不够资格做系统分析员,所以,有时候都不知道使用什么好的分析方法才能构造出一个好的系统数学模型。
希望大家能给些提示我吧,至于分数,其实我的分数已经很少了,嘻嘻,还想问多两
条问题,所以真是难为了各位了。
 
A

aimingoo

Unregistered / Unconfirmed
GUEST, unregistred user!
哈哈,贪心不足的Waterfish:
合并多个prj,你可能要考虑file/add to project...,这样会给你减省点麻烦。
Delphi4可以同时管理多个prj,也许会对你有好处。不过我不喜欢用d4,它象一
只螃蟹。——等到那些人还没死时,我再吃吧。
推荐使用ExecuteFile()来调用.exe,这比用api轻松,除非你要控制这个进程句
柄,否则记ShellExecute()的一堆参数实在辛苦。ExecuteFile()函数在
delphi/demos/doc/FilManEx/FmxUtils.PAS单元中。
50分??看你怎么分。^-^老曹好象费劲不小。
 
D

dwwang

Unregistered / Unconfirmed
GUEST, unregistred user!
奇怪,今天怎么这么热闹,一大堆老问题都翻腾出来了,
可是没见到什么新办法.

这么多问题留在那里,到底是提问者太贪心,还是怎么回事儿?
 
C

CJ

Unregistered / Unconfirmed
GUEST, unregistred user!
今天天气好告诉你
许多朋友都说了,你的开发方法有一些不对,但是既然这样做了,用以下方法:
对每个模块都用唯一控件名名(用TEXT方式浏览窗体,然后用REPLACE,把所有控件的名称改为 模块名+控件名)。
至于其它我也不知道你遇到了什么问题。
 

曹晓钢

Unregistered / Unconfirmed
GUEST, unregistred user!
国际上业已把软件工程标准化了,从建模开始.
我记得曾经在nease上找到UML的资料,中文的,很不错.
好像是~jeddbook还是什么,记不得了.

讲的很完整,实在是不可多得. 我现在上不了nease了,那位有心人能
down过来?
 
顶部