各位大佬:
小弟在编程过程中遇到如此问题,百思不知如何解决,请各位大佬指教.
用明华非接触式读卡器(USB)读4442卡,其中FUNCTION中有length,但在FORM中还有一个数字键盘主要为在触摸屏上输入用(procedure TForm7.FormShow(Sender: TObject);),运行时在含有LENGTH语句中报错(missing operator or semicolom),但这估计不会是分号的问题,我将function语句删除,程序正常.估计是function中的length和程序中的length不相同,更要命的是在前几个FORM中都有类似的小键盘程序,是算是删除了本FORM中的程序,报错就到前FORM中的类似语句上(相同的报错信息),请大佬帮助解决,非常感激!
unit Unit7;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, DB, DBTables, ExtCtrls;type
  TForm7 = class(TForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Panel1: TPanel;
    Panel2: TPanel;
    Panel3: TPanel;
    Panel4: TPanel;
    Panel5: TPanel;
    Panel6: TPanel;
    Panel7: TPanel;
    Panel8: TPanel;
    Panel9: TPanel;
    Panel10: TPanel;
    Panel11: TPanel;
    Panel12: TPanel;
    Panel13: TPanel;
    Panel14: TPanel;
    GroupBox2: TGroupBox;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Edit4: TEdit;
    Label5: TLabel;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    procedure FormShow(Sender: TObject);
    procedure Panel3Click(Sender: TObject);
     private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form7: TForm7;
data1,data2,data3,data4,data5,data6:Array[0..256]of char;
  hexdata1,hexdata2:Array[0..256]of char;  password1:Array[0..3]of char;
  password:array[0..8]of char;  icdev:longint;
  st:integer;
 // password:pchar;
  length:smallint;
  offset:smallint;
  counter:smallint;
  proval:array[0..3]of char;//pchar;
  status:integer;
  dest,source:array[0..16]of char;  proval1:array[0..7]of char;//  operate sle 4442
function swr_4442(icdev: longint;offset:smallint;length:smallint;data1:pchar):smallint;stdcall;
far;external 'MWIC_32.dll'name 'swr_4442';
function srd_4442(icdev: longint;offset:smallint;length:smallint; data1:pchar):smallint;stdcall;
far;external 'MWIC_32.dll'name 'srd_4442';
function prd_4442(icdev: longint;length:smallint;data1:pchar):smallint;stdcall;
far;external 'MWIC_32.dll'name 'prd_4442';
function pwr_4442(icdev: longint;offset:smallint;length:smallint;data1:pchar):smallint;stdcall;
far;external 'MWIC_32.dll'name 'pwr_4442';
function chk_4442(icdev: longint):smallint;stdcall;
far;external 'MWIC_32.dll'name 'chk_4442';function csc_4442(icdev: longint;length:smallint;password:pchar):smallint;stdcall;
far;external 'MWIC_32.dll'name 'csc_4442';
function wsc_4442(icdev: longint;length:smallint; password:pchar):smallint;stdcall;
far;external 'MWIC_32.dll'name 'wsc_4442';
function rsc_4442(icdev: longint;length:smallint; password:pchar):smallint;stdcall;
far;external 'MWIC_32.dll'name 'rsc_4442';
function rsct_4442(icdev: longint;counter:pchar):smallint;stdcall;
far;external 'MWIC_32.dll'name 'rsct_4442';  //use general function
  //function usb_ic_init(port: smallint;baud:longint): longint; stdcall;
  //far;external 'Mwic_32.dll' name 'usb_ic_init';
  function usb_ic_init(): longint; stdcall;
  far;external 'mwic_32.dll' name 'usb_ic_init';
  function usb_auto_init(): longint; stdcall;
  far;external 'Mwic_32.dll' name 'usb_auto_init';
  function usb_ic_exit(icdev: longint):smallint;stdcall;
  far;external 'MWIC_32.dll' name 'usb_ic_exit';
  function get_status(icdev: longint;status:pchar):smallint;stdcall;
  far;external 'MWIC_32.dll' name 'get_status';  function cmp_dvsc(icdev:longint;length:smallint;password:pchar):smallint;stdcall;
  far;external 'MWIC_32.dll' name 'cmp_dvsc';
  function setsc_md(icdev: longint;mode:smallint):smallint;stdcall;
  far;external 'MWIC_32.dll'name 'setsc_md';
  function srd_dvsc(icdev: longint;length:smallint;password:pchar):smallint;stdcall;
  far;external 'MWIC_32.dll'name 'srd_dvsc'
  function swr_dvsc(icdev: longint;length:smallint;password:pchar):smallint;stdcall;
  far;external 'MWIC_32.dll'name 'swr_dvsc';  function turn_off(icdev: longint):smallint;stdcall;
  far;external 'MWIC_32.dll'name 'turn_off';
  function turn_on(icdev: longint):smallint;stdcall;
  far;external 'MWIC_32.dll'name 'turn_on';
  function auto_pull(icdev: longint):smallint;stdcall;
  far;external 'MWIC_32.dll'name 'auto_pull';
  function srd_ver(icdev: longint;length:smallint;ver:pchar):smallint;stdcall;
  far;external 'MWIC_32.dll'name 'srd_ver';
  function dv_beep(icdev: longint;time:smallint):smallint;stdcall;
  far;external 'MWIC_32.dll'name 'dv_beep';  function asc_hex(asc:pchar;hex:pchar;len:smallint):smallint;stdcall;
  far;external 'MWIC_32.dll'name 'asc_hex';
  function hex_asc(hex:pchar;asc:pchar;len:smallint):smallint;stdcall;
  far;external 'MWIC_32.dll'name 'hex_asc';  function ic_encrypt(key:pchar;source:pchar;len:smallint;dest:pchar):smallint;
  stdcall;far;external 'MWIC_32.dll'name 'ic_encrypt';
  function ic_decrypt(key:pchar;dest:pchar;len:smallint;source:pchar):smallint;
  stdcall;far;external 'MWIC_32.dll'name 'ic_decrypt';implementationuses Unit6;
 var
 cpos,linelength:integer;
{$R *.dfm}
procedure TForm7.FormShow(Sender: TObject);
begin
edit2.SetFocus ;
edit1.Text:=form6.edit1.text;
edit2.Text :='';
edit3.Text:=form6.edit2.text;
edit4.Text:='';end;
procedure TForm7.Panel3Click(Sender: TObject);
 var
 panel3_s1:string;
begin
  edit2.ClearSelection;
 panel3_s1:=panel3.Caption;
 edit2.Text:=edit2.Text+panel3_s1;
edit2.selstart:=length(edit2.text);
 edit2.sellength:=length(edit2.text);
end;end.

解决方案 »

  1.   

    代码太长,Length出错只可能是你传入的参数错误。
      

  2.   

    或者说不是Length出错,而是赋值错误。
      

  3.   

    会不会有一个自己实现的函数也叫length?
      

  4.   

    sz_haitao:
    您说的很对,我估计就是FUNCATION中的LENGTH和delphi中的length名称相同,但又不能去除一个,这如何是好?
      

  5.   

    length(edit2.text); 
    length:smallint; 
    够乱,把定义名字换下试试
      

  6.   

    将function中的length改名?请具体点,THANKYOU
      

  7.   


      如果是同名函数参数冲突,可跟进去看看究竟调用的是哪个函数,如果确认是函数调用错误,用你调用
    的单元做前缀区分如:SysStem单元的System.Length()
      

  8.   


    procedure TForm7.Panel3Click(Sender: TObject); 
    var 
      panel3_s1:string; 
    begin 
        edit2.ClearSelection; 
        panel3_s1:=panel3.Caption; 
        edit2.Text:=edit2.Text+panel3_s1; 
        edit2.selstart:=System.length(edit2.text); 
        edit2.sellength:=System.length(edit2.text); 
    end; 
      

  9.   


    干吗非要用Length做函数名?
      

  10.   

    你在变量定义的位置放了一个 length:smallint; 你吧这个变量改名在试
      

  11.   

    Length是Delphi的一个保留字,不能用这个名字作为变量名或对象名称,必须替换掉。