别笑,写好一个类后,如何调呢?
一时手痒
自己写了一个类(封装了微软的TAdoQuery)
完是完成了
可是其他程序引用时却不停报错
一检查,发现不小心类中有明显错误
引思:
//**********************************************************************
写好一个类后怎么调试呢?????
它只是一个单元呀
//**********************************************************************
就如同写一个dll后还可用RUN->parameters设置Host Application来调试一样?
为了拯救一个初学类的人,大家高抬贵手写几笔吧?
问题点数:100、回复次数:20Top
1 楼VisualLion(狮子)回复于 2004-07-02 13:55:26 得分 10
将这个单元放到包里管理,打开这个包后,可以用RUN->parameters设置Host Application来调试.Top
2 楼monglihong(难为)回复于 2004-07-02 14:02:35 得分 0
还有一问题,是怎么加载类的呢?
我直接将单元的源程序文件拷贝(如jkym)到实现程序的目录下
再在相关模块的
interface
uses jkym;
行不行?Top
3 楼zpan1978(原始社会好)回复于 2004-07-02 14:11:36 得分 10
其实你只要把类的单元文件加到你的工程目录下或者lib目录下就可以了
tools下的第一个选项,有个lib的页Top
4 楼monglihong(难为)回复于 2004-07-02 14:15:02 得分 0
to:zpan1978(原始社会好)
没找到呢?
我的类是没有控件的,
我的MSN是:dkx_mong@hotmail.com
那位兄弟加我到MSN上指教吧!Top
5 楼JavaD(一竿残照(the way of delphi))回复于 2004-07-02 14:19:16 得分 10
虚拟数据,并测试输入和应该得到的结果和实际得到的结果是否一致,
txxx = class,
那么你就写点程序来,
txxx.Create;
assert(txxx.prop1='adf','');
assert(txxx.prop2='adf','');
assert(txxx.prop3='adf','');
assert(txxx.prop4='adf','');
.......
然后运行你的这个测试程序
你可以看看DUnit
Top
6 楼ThenLong(完美组合=Delphi/C++)回复于 2004-07-02 14:26:04 得分 0
创建类的实例】
跟踪其构造、方法调用等内部实现解决问题
Top
7 楼monglihong(难为)回复于 2004-07-02 14:47:54 得分 0
现在最大的问题是:
我是新建单元写的这个类,
可是打死它也加不到其他工程中去?
why???
unit Jkym;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, ADODB, DB,
DBGrids,StdCtrls,System;
{============================================================================
FindYM Class
============================================================================}
type
TJkym = class(TObject)
private
QueryTemp: TADOQuery;
{ Private declarations }
protected
{ Protected declarations }
public
{ Public declarations }
function findNext(strFZ,strYM:String;cboYM:TComboBox):Boolean;
function findPrior(strFZ,strYM:string;cboYM:TComboBox):Boolean;
function Setconn(conn:TADOConnection):Boolean;
published
{ Published declarations }
end;
implementation
//函数功能:设置连接
function TJkym.Setconn(conn:TADOConnection):Boolean;
begin
try
QueryTemp.Connection:=conn;
Result:=True;
except
Result:=False;
end;
end;
//函数功能:查询前一级掩码
function TJkym.findNext(strFZ,strYM:String;cboYM:TComboBox):Boolean;
var str,strsql:String;
i:Integer;
begin
try
cboYM.Clear;
if Length(strym)<4 then
Result:=False
else
begin
str:=copy(strYM,1,Length(strYM)-5);
strsql:='select * from jkymb where strFZBH='''+strFZ+''''+
' and strJKBH='''+str+'''';
QueryTemp.Active:=false;
QueryTemp.SQL.Text:=strsql;
QueryTemp.Active:=true;
while not QueryTemp.eof do
begin
cboYM.Items.Add(QueryTemp.fieldbyname('strJKBH').AsString);
QueryTemp.Next;
end;
end;
except
Result:=False;
end;
end;
//函数功能:查询后一级掩码
function TJkym.findPrior(strFZ,strYM:string;cboYM:TComboBox):Boolean;
var str:String;
begin
try
cboYM.Clear;
if Length(strym)<4 then
Result:=False
else
begin
str:=str+'-____';
strsql:='select * from jkymb where strFZBH='''+strFZ+''''+
' and strJKBH like '''+str+'''';
QueryTemp.Active:=false;
QueryTemp.SQL.Text:=strsql;
QueryTemp.Active:=true;
while not QueryTemp.eof do
begin
cboYM.Items.Add(QueryTemp.fieldbyname('strJKBH').AsString);
QueryTemp.Next;
end;
end;
except
Result:=False;
end;
end;
end.Top
8 楼monglihong(难为)回复于 2004-07-02 15:02:59 得分 0
如果写好的类,只能以源代码的方式整个单元加载到程序中去!
还有什么意义?
以一个单元的形式写好类后
//**************************************************
究竟如何加载?
//**************************************************Top
9 楼yq3woaini(哈哈镜 选择好心情)回复于 2004-07-02 15:39:17 得分 0
detTop
10 楼VisualLion(狮子)回复于 2004-07-02 15:41:11 得分 10
设置好应用程序的搜索路径,用use语句引用。Top
11 楼deepWATERblue(深水蓝)回复于 2004-07-02 15:55:51 得分 0
UP.Top
12 楼JavaD(一竿残照(the way of delphi))回复于 2004-07-02 16:02:01 得分 10
unit Form1;
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids,Math,Printers,Jkym//加上它
;Top
13 楼emeng(叮当猫)回复于 2004-07-02 16:17:19 得分 0
是呀,uses中加入你的单元就可以了Top
14 楼monglihong(难为)回复于 2004-07-02 17:58:00 得分 0
如是这样
我写的类对开发人员还有什么秘密可言
他们不全都看见了????
封装的意思又何在?
Top
15 楼VisualLion(狮子)回复于 2004-07-05 08:20:58 得分 10
uses语句应用的是*.dcu文件Top
16 楼YAMABACK(不要把我当Michael,我只是会投篮)回复于 2004-07-05 08:27:32 得分 10
在测试类的时候,最好是不要安装,用uses语句引用这个单元即可Top
17 楼welllove88(寒林)回复于 2004-07-05 08:29:52 得分 10
没那么麻烦!你自己写的一个类 就可以像引用一个窗口一样引用 然后跟踪调试就好了Top
18 楼cjfden(虚心学习)回复于 2004-07-05 08:47:44 得分 10
upTop
19 楼WuChenCan(雨中男孩)回复于 2004-07-05 08:51:32 得分 0
建一个窗体,针对类的每个成员进行测试也可以啊!Top
20 楼alexanda2000(书生活)回复于 2004-07-05 09:54:08 得分 10
你不想让别人看见你的代码,就把它开发成组件罗。Top




