帮我看下这段代码哪里有隐含错误?多谢
delphi中无法自动完成。提示代码有错。[Pascal Error] uVisitTraf.pas(1): Unable to invoke Code Completion due to errors in source code
我知道代码可能有错,但是编译能通过也能正确运行。我自己也看不出实在郁闷了。
多谢。代码见下方。
//----------------------------------
// wh
// 2005/08/31
//
//-----------------------------------
unit uvisittraf;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, winsock, Grids, DBGridEh, DBSumLst, DB, ADODB;
type
IPstrAry=array of string;
TSrcDstTraffrm = class(TForm)
cbbVisitTrafSrcDstYMD: TRadioGroup;
grbVisitTrafStatBySrcIP: TGroupBox;
lblSrcDst: TLabel;
edtSrcDstaddr: TEdit;
rgrSrcDstIPTraf: TRadioGroup;
GroupBox2: TGroupBox;
Label19: TLabel;
Label20: TLabel;
Label21: TLabel;
Label22: TLabel;
Label23: TLabel;
cbbVisitTrafficYear: TComboBox;
cbbVisitTrafficMonth: TComboBox;
cbbVisitTrafficDay: TComboBox;
cbbVisitTrafficWeek: TComboBox;
btnSrcDstTrafQry: TButton;
btnSrcDstTrafExit: TButton;
DBGridEh1: TDBGridEh;
DBSumList1: TDBSumList;
lblSrcDstTrafSum: TLabel;
btnVisitTrafMore: TButton;
IPDataAQ: TADOQuery;
IPDataDS: TDataSource;
procedure cbbVisitTrafSrcDstYMDClick(Sender: TObject);
procedure rgrSrcDstIPTrafClick(Sender: TObject);
procedure btnSrcDstTrafExitClick(Sender: TObject);
procedure btnSrcDstTrafQryClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
public
FResultIPAry:array of string; //全局变量,用于保存查询得到的IP地址
{ Public declarations }
end;
var
SrcDstTraffrm: TSrcDstTraffrm;
implementation
uses umain, udatamodule, uIPTrafMoreInfo;
{$R *.dfm}
procedure TSrcDstTraffrm.cbbVisitTrafSrcDstYMDClick(Sender: TObject);
begin
case cbbVisitTrafSrcDstYMD.ItemIndex of
0: //按日查询
begin
cbbVisitTrafficDay.Enabled:=true;
cbbVisitTrafficMonth.Enabled:=true;
cbbVisitTrafficWeek.Enabled:=false;
end;
1:
begin
cbbVisitTrafficDay.enabled:=false;
cbbVisitTrafficWeek.Enabled:=false;
cbbVisitTrafficMonth.Enabled:=true;
end;
2:
begin
cbbVisitTrafficDay.Enabled:=false;
cbbVisitTrafficMonth.Enabled:=false;
cbbVisitTrafficWeek.Enabled:=false;
end;
3: //按周查询
begin
cbbVisitTrafficMonth.Enabled:=false;
cbbVisitTrafficDay.Enabled:=false;
cbbVisitTrafficWeek.Enabled:=true;
end;
end; //end_case
end;
procedure TSrcDstTraffrm.rgrSrcDstIPTrafClick(Sender: TObject);
begin
if rgrSrcDstIPTraf.ItemIndex=0 then
lblSrcDst.Caption:='源IP地址'
else lblSrcDst.Caption:='目的IP地址';
end;
procedure TSrcDstTraffrm.btnSrcDstTrafExitClick(Sender: TObject);
begin
self.Close;
end;
procedure TSrcDstTraffrm.btnSrcDstTrafQryClick(Sender: TObject);
var
inittime,strSQL:string;
convertedtime,temptime:int64;
querycount:integer;
begin
case cbbVisitTrafSrcDstYMD.ItemIndex of
0: //按日
begin
inittime:=cbbVisitTrafficYear.Text+'-'+cbbVisitTrafficMonth.Text+'-'+cbbVisitTrafficDay.Text;
convertedtime:=MainForm.convertunixeproctime(inittime);
temptime:=convertedtime+86400;
end;
1:
begin
inittime:=cbbVisitTrafficYear.Text+'-'+cbbVisitTrafficMonth.Text+'-1';
convertedtime:=MainForm.convertunixeproctime(inittime);
temptime:=convertedtime+2592000;
end;
2: //按年
begin
inittime:=cbbVisitTrafficYear.Text + '-1-1';
convertedtime:=MainForm.convertunixeproctime(inittime);
temptime:=convertedtime+31536000;
end;
else //按周
begin
inittime:=cbbVisitTrafficYear.Text + '-1-1';
convertedtime:=MainForm.convertunixeproctime(inittime);
convertedtime := convertedtime + (strtoint(cbbVisitTrafficWeek.Text)-1)*604800;
temptime:=convertedtime+604800;
end;
end;//end of case
//判断输入的IP地址是否合法
case mainform.isipaddrint(edtsrcdstaddr.text) of
0: begin //正确的源IP地址
if rgrSrcDstIPTraf.ItemIndex=0 then //按源IP地址查询
strSQL:=format('select srcaddr,dstaddr,prot,srcport,dstport,dpkts,doctets '
+'from flow where unix_secs>= %d and unix_secs<=%d '
+'and srcaddr=''%s''',[convertedtime,temptime,edtsrcdstaddr.Text])
else
strSQL:=format('select srcaddr,dstaddr,prot,srcport,dstport,dpkts,doctets '
+'from flow where unix_secs>= %d and unix_secs<=%d '
+'and dstaddr=''%s''',[convertedtime,temptime,edtsrcDstaddr.Text]);
datamodule1.ADOQuerySrcDstTraf.Close;
datamodule1.ADOQuerySrcDstTraf.SQL.Clear;
datamodule1.ADOQuerySrcDstTraf.SQL.Add(strsql);
datamodule1.ADOQuerySrcDstTraf.Open;
querycount:=datamodule1.ADOQuerySrcDstTraf.RecordCount;
if querycount=0 then showmessage('不存在符合条件的记录!')
else begin
DataModule1.DataSourceSrcDstTraf.DataSet.Fields[0].DisplayLabel:='源IP地址';
DataModule1.DataSourceSrcDstTraf.DataSet.Fields[1].DisplayLabel:='目的IP地址';
DataModule1.DataSourceSrcDstTraf.DataSet.Fields[2].DisplayLabel:='协议号';
DataModule1.DataSourceSrcDstTraf.DataSet.Fields[3].DisplayLabel:='源端口号';
DataModule1.DataSourceSrcDstTraf.DataSet.Fields[4].DisplayLabel:='目的端口号';
DataModule1.DataSourceSrcDstTraf.DataSet.Fields[5].DisplayLabel:='分组数';
DataModule1.DataSourceSrcDstTraf.DataSet.Fields[6].DisplayLabel:='字节数';
btnvisittrafmore.Enabled:=true; //显示更多信息
end;//end_else
end; //end_case_0
1: begin
showmessage('IP地址不能为空,请检查后重新输入!'); //没有设置源IP地址
edtsrcdstaddr.SetFocus;
end;
else begin
showmessage('IP地址不合法,请检查后重新输入!'); //源IP地址错误
edtsrcdstaddr.SetFocus;
end; //end_of_1
end;//end of case
end;
procedure TSrcDstTraffrm.FormCreate(Sender: TObject);
begin
cbbvisittrafficmonth.Enabled:=true;
cbbvisittrafficday.Enabled:=true;
end;
end.
问题点数:20、回复次数:8Top
1 楼konhon(优华)回复于 2005-11-18 17:02:34 得分 0
重開一下Delphi行不行呀.Top
2 楼laobalu(努力学习中……不懂的东西很多)回复于 2005-11-18 17:25:58 得分 0
不行啊。奇怪编译能通过。运行也没问题,这个隐含错误是出在什么地方呢。Top
3 楼g961681(技术庸人(情商太低))回复于 2005-11-18 18:30:57 得分 0
新建的工程中能用不?Top
4 楼g961681(技术庸人(情商太低))回复于 2005-11-18 18:32:29 得分 10
估计不是代码问题,是delphi环境问题。Top
5 楼dongliu(一沙一世界,一花一天堂)回复于 2005-11-18 18:46:59 得分 10
光看是很难看出来的,是不是别的单元有问题?Top
6 楼laobalu(努力学习中……不懂的东西很多)回复于 2005-11-18 18:47:55 得分 0
环境能有什么问题呢?
其它单元是好的。就是这个单元有问题。Top
7 楼g961681(技术庸人(情商太低))回复于 2005-11-18 19:22:45 得分 0
那就不明白了。
反正只好自己取尝试了,把特殊的类型,特殊的使用方法去掉,看看了。
一般遇到你这种情况,我也不会去找原因的,能编译运行就ok了~Top
8 楼laobalu(努力学习中……不懂的东西很多)回复于 2005-11-19 18:55:58 得分 0
汗一个。这样啊。总是提示错误总是很讨厌的。Top




