Проблема SQL OOP: слишком много фактических параметров на выходе - PullRequest
0 голосов
/ 21 августа 2011

Пожалуйста, помогите со следующим:

ОШИБКА: слишком много фактических параметров в строке процедуры вызова класса.

Основной блок:

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;

КЛАСС:

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 ]

4 голосов
/ 21 августа 2011

ОК, я пробираюсь через ваш плохо отформатированный код и думаю, что нашел проблему.Ваш вопрос не облегчил, однако: как я уже сказал, ваш код показывает плохое форматирование и сообщение об ошибке, вероятно, тоже неправильно.Если бы код был отформатирован, а ошибка сообщалась буквально, проблема была бы довольно очевидной.

Ваш конструктор TLogin.Create() и ваш метод TLogin.toetslog() являются частными .Если вы попытаетесь вызвать их из другого устройства, они не будут доступны.Таким образом, из основного блока единственным допустимым конструктором является Create без параметров.Если вы вызовете 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);
2 голосов
/ 21 августа 2011

Трудно сопоставить сообщение об ошибке с кодом, но я думаю, что вы используете / создаете объект Login неправильно.

  //Login.create(epos,wagwoord,bepos,bwagwoord);
  Login := TLogin.create(epos,wagwoord,bepos,bwagwoord);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...