2011-08-21 42 views
-3
太多的實際參數

請以下幫助:SQL 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; 

類:

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

好吧,我一直在通過你格式不好的代碼進行研究,我想我發現了這個問題。儘管如此,您的問題並不容易:正如我所說的,您的代碼顯示的格式不佳,錯誤信息也可能是錯誤的。如果代碼已經格式化,並且字面上報告了錯誤,那麼問題就會非常明顯。

您的構造函數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); 
+0

哇,非常感謝,我一直batteling這個一個星期!!! ...修正 – joHno

+0

對不起的代碼形式,im我從南非的一個孩子 – joHno

+0

我已經希望你來自南非,因爲像「wagwoord」等名字,但即使是孩子們也可以正確格式化。

2

難以企及的代碼的錯誤信息,但我認爲你正在使用/創建登錄對象錯誤。

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

好了,雖然我不認爲它解決了太多實際參數錯誤的問題... –

+0

我從來沒有見過這個錯誤信息。它看起來不像德爾福。或者它沒有被正確引用。沒有課程程序,德爾福也不會提到一條線。 –

+0

@Rudy:構造函數是一個類方法(有點)。但是確實沒有錯誤的字面引用。 –