SQL OOP问题:输出中的实际参数太多

时间:2011-08-21 11:33:16

标签: delphi oop

请帮助解决以下问题:

  

错误:调用类过程行的实际参数太多。

主要单位:

procedure TForm1.btnbtbtn1Click(Sender: TObject);
var
  bwagwoord,bemail :boolean ;
  epos,wagwoord,safvoer :String ;
begin
  Form2.qryreg.Close;
  form2.qryreg.SQL.Text := 'select * from registertb ';
form2.qryreg.open ;

epos := edt1.text ;
wagwoord := edt2.text ;
safvoer := ' ';
bemail :=form2.qryreg.locate ('Email',epos,[]);
bwagwoord := form2.qryreg.Locate('Wagwoord',wagwoord,[]);


Login.create(epos,wagwoord,bepos,bwagwoord);
Login.toetslog(safvoer);
showmessage(safvoer);
end;

CLASS:

unit cls_login;

interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Menus, StdCtrls, Buttons, math, ExtCtrls;
type
Tlogin = class(Tobject)

private

Fepos :string ;
fwagwoord :string ;
Fbepos : Boolean;
fbwagwoord : Boolean;


Constructor Create(epos,wagwoord:String;bepos, bwagwoord: boolean);
procedure toetslog(var safvoer :string );
public
end;
implementation

{ Tlogin }
constructor Tlogin.Create(epos, wagwoord: String;bepos, bwagwoord: boolean);
begin
fepos := epos ;
fwagwoord := wagwoord ;
fbepos := bepos;
fbwagwoord := bwagwoord;
end;
procedure Tlogin.toetslog( var safvoer :String );
begin

if (fbepos = True) and (fbwagwoord = True)
then
begin
safvoer := 'Welcome '+' '+fepos
 end
else
safvoer := 'SORRY VERKEERD HEHE'+' '+fwagwoord ;
end;

end.    

2 个答案:

答案 0 :(得分:4)

好的,我一直在浏览你格式错误的代码,我想我发现了问题。但是,你的问题并不容易:正如我所说,你的代码显示格式不佳,错误信息也可能是错误的。如果代码已经格式化,并且字面上报告了错误,则问题会非常明显。

您的构造函数TLogin.Create()和您的方法TLogin.toetslog() 都是私有的。如果您尝试从其他单元呼叫它们,则无法访问它们。因此,从主单元中,唯一有效的构造函数是Create without parameters。如果您使用参数调用Create,则会收到错误"Too many parameters on call to..."或类似错误。

这样做:

type
  TLogin = class(TObject)
  private
    Fepos: string;
    Fwagwoord: string ;
    Fbepos: Boolean;
    Fbwagwoord: Boolean;
  public
    constructor Create(epos, wagwoord: string; bepos, bwagwoord: Boolean);
    procedure ToetsLog(var safvoer: string);
  end;

以这种方式调用构造函数:

  Login := TLogin.Create(epos, wagwoord, bepos, bwagwoord);

答案 1 :(得分:2)

很难将错误消息与代码匹配,但我认为您正在使用/创建Login对象错误。

  //Login.create(epos,wagwoord,bepos,bwagwoord);
  Login := TLogin.create(epos,wagwoord,bepos,bwagwoord);