错误提示 [错误] U_dwxx.pas(34): Unsatisfied forward or external declaration: 'TF_dwxx.Length'
[致命错误] Project.dpr(6): Could not compile used unit 'U_dwxx.pas'
源文件 
unit U_dwxx;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, Grids, DBGrids;type
  TF_dwxx = class(TForm)
    DBGrid1: TDBGrid;
    Panel1: TPanel;
    Edit1: TEdit;
    Edit2: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Panel2: TPanel;
    Label5: TLabel;
    Edit3: TEdit;
    Button4: TButton;
    Button5: TButton;
    RadioGroup1: TRadioGroup;
    procedure Button5Click(Sender: TObject);
    procedure DBGrid1CellClick(Column: TColumn);
    procedure Button4Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    function string_long_JB(s:string):string;
    function string_long_MX(s:string):string;
    function Length(s:string):integer;
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  F_dwxx: TF_dwxx;implementationuses DM;{$R *.dfm}procedure TF_dwxx.Button5Click(Sender: TObject);
begin
with U_DM.ADOQuery_dwxx do
  begin
 close;
 sql.clear;
 sql.add('select F_DWBM,F_DWMC from T_DWXX');
 open;
 end;
end;procedure TF_dwxx.DBGrid1CellClick(Column: TColumn);
beginEdit1.Text:=U_DM.adoquery_dwxx.fieldbyname('F_DWBM').asstring  ;
Edit2.Text:=U_DM.adoquery_dwxx.fieldbyname('F_DWMC').asstring   ;end;
 procedure TF_dwxx.Button4Click(Sender: TObject);
 var
  s:string;
 beginwith U_DM.ADOQuery_dwxx do  begin
  if Edit3.Text='' then
   begin
    showmessage('请输入查询信息!') ;
   end
   else
   begin
 s:= 'select F_DWBM,F_DWMC from T_DWXX where F_DWBM='''+Edit3.text+'''' ;
 close;
 sql.clear;
 sql.add(s);
 open;
 end;
end;
 end;procedure TF_dwxx.Button1Click(Sender: TObject);
{
var
  t: string;begin
 with U_DM.ADOQuery_dwxx do begin
  t:='insert into T_DWXX(F_DWBM,F_DWMC) values(''' + Edit1.Text + ''','''+ Edit2.text +''')';
  close;
  sql.clear;
  sql.add(t);
  open;
  end;
end;  }
begin
try
 with  U_DM.ADOQuery_dwxx do
 begin
  close;
  sql.clear;
  sql.add('select * from T_DWXX');
  open;
 end;
  U_DM.adoconnection1.beginTrans; //开始事务
  U_DM.ADOQuery_dwxx.Insert;
  U_DM.ADOQuery_dwxx.fieldbyname('F_DWBM').asstring:=Edit1.Text;
  U_DM.ADOQuery_dwxx.fieldbyname('F_DWMC').asstring:=Edit2.text;
  U_DM.ADOQuery_dwxx.fieldbyname('F_DMJB').asstring:=self.string_long_JB(Edit1.Text);
  U_DM.ADOQuery_dwxx.fieldbyname('F_DWMX').asstring:=self.string_long_MX(Edit1.Text);
  U_DM.ADOQuery_dwxx.post;
  U_DM.adoconnection1.commitTrans;  //提交事务
  with  U_DM.ADOQuery_dwxx do
   begin
   close;
   sql.clear;
   sql.add('select * from T_DWXX');
   open;
   end;
   U_DM.ADOQuery_dwxx.close;
   U_DM.ADOQuery_dwxx.open;   except
    U_DM.adoconnection1.RollbackTrans;
   end;    end; function TF_dwxx.string_long_JB(s:string):string;  var
    long:integer;begin
  begin
    long:= system.Length(s);
    if long=3 then
      begin
        result:=inttostr(1);
      end
      else
      if long=2 then
      begin
        result:=inttostr(2);
      end
      else
      if long=9 then
        begin
         result:=inttostr(3);
        end;
  end;
end;function TF_dwxx.string_long_MX(s:string):string;  var
    long_1:integer;begin
  begin
    long_1:= system.Length(s);
    if long_1=3 then
      begin
        result:=inttostr(0);
      end
      else
      if long_1=2 then
      begin
        result:=inttostr(0);
      end
      else
      if long_1=9 then
        begin
         result:=inttostr(1);
        end;
  end;
end;
end.
产生的原因是什么?如何解决?

解决方案 »

  1.   

      with  U_DM.ADOQuery_dwxx do
       begin
       close;
       sql.clear;
       sql.add('select * from T_DWXX');
       open;
       end;
       U_DM.ADOQuery_dwxx.close;
       U_DM.ADOQuery_dwxx.open;

    这两行是不是多余了。
    function Length(s:string):integer;
    这个函数,你定义,但是并没有去实现它,所有报错了,你把这行删除掉
      

  2.   


    function TF_dwxx.string_long_MX(s:string):string;  var
        long_1:integer;begin
      begin
        long_1:= Length(s);
        if long_1=3 then
          begin
            result:=inttostr(0);
          end
          else
          if long_1=2 then
          begin
            result:=inttostr(0);
          end
          else
          if long_1=9 then
            begin
             result:=inttostr(1);
            end;
      end;
    end;
    end.
     这里有使用 length();
      

  3.   

    length这个函数系统已经提供了.
    另外你定义没实现是报这个错误的.
      

  4.   

    把这个拿掉 length直接可以使用的 不需要你再去定义了 function Length(s:string):integer;