Q&A

  • [급한 질문]꼭 좀 부탁드립니다.....
꼭 좀 부탁드립니다. 이제 막 프로그램을 시작한 초보입니다.

불쌍한 저에게 꼭 답변해 주시길바래요.



정보입력관리툴을 만들고 있습니다.

DB는 MySQL을 쓰구요(Linux환경의 MySQL임다.)

아래의 소스는 DB에 접속하는 Login부분입니다.

함수를 써서 다음폼에두 쓸려구 그러는데...

맞는지요...

어느 부분이 틀렸는지 꼭 좀 가르쳐 주시길 바랍니다.



함수쓰는 방법을 가르쳐 주셔두 됩니다.

꼭 좀 부탁드리겠습니다.



unit login;



interface



uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

_libmysq, StdCtrls, buttons, Grids, DBgrids;



type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

edtuid: TEdit;

edtupasswd: TEdit;

btnlogin: TButton;

btncancel: TButton;

procedure connecting(connected: Integer);

procedure btnloginClick(Sender: TObject);

procedure btncancelClick(Sender: TObject);



private

{ Private declarations }

public

{ Public declarations }

end;



var // 변수와 형 선언

Form1: TForm1;

mysqlrec: mysql; // MySQL 함수

connected: Boolean; // 변수

connecting: Boolean;





implementation



uses newlist, logout, step5show;



{$R *.DFM}





procedure connecting(connected: Boolean);

var

host, suser, spasswd: string;

uid, upasswd: string;

DB: string;

retval: Integer;

presults: pmysql_res; //results의 포인터

results: mysql_res;

prow, crow: pmysql_row; //열의 포인터

query: string;

begin

uid:= edtuid.Text;

upasswd:= edtupasswd.Text;



host:= '';

suser:= '';

spasswd:= '';



mysql_connect(@mysqlrec, PChar(host), PChar(suser), PChar(spasswd));



connected:= true;

DB:= 'silvia_venture';

retval:= mysql_select_db(@mysqlrec,PChar(DB));



begin

query:='select * from login where id='''+uid+''' and

pass='''+upasswd+'''';//(한줄임)

presults:= nil;



mysql_query(@mysqlrec, PChar(query));

presults:= mysql_store_result(@mysqlrec);

results:= presults^;



prow:= mysql_fetch_row(presults);



if prow = nil then

begin

MessageDlg('사용자 ID와 Password가 맞지않습니다.' + chr(13)+ chr(13) +

'사용자 ID 와 Password를 확인하신 후, 다시 시도 하세여!',mtError,[mbok],0);



edtuid.Text:= '';

edtupasswd.Text:= '';

edtuid.setfocus;

mysql_close(@mysqlrec);

end;



if prow <> nil then

begin

form1.hide;

form2.show;

end;

end;



end;



function CheckConnect: Boolean;

begin

CheckConnect:= false;

if connecting then

CheckConnect:= true

else

connecting(CheckConnect);

end;



procedure TForm1.btnloginClick(Sender: TObject);

begin

connecting:= true;

CheckConnect;

end;



1  COMMENTS
  • Profile
    돌머리 2000.09.22 19:13
    안녕하세요 김동원입니다.

    자세한 내용은 검증해보지는 않았지만

    대충 보니 함수 사용이 약간 이상하네요...



    type

    TForm1 = class(TForm)

    Label1: TLabel;

    Label2: TLabel;

    Label3: TLabel;

    edtuid: TEdit;

    edtupasswd: TEdit;

    btnlogin: TButton;

    btncancel: TButton;

    procedure connecting(connected: Integer);

    // 실제 함수와 다르게 선언되어 있음

    // procedure connecting(connected: Boolean);

    // 사용자 함수는 지금처럼 쓰셔도 상관은 없지만

    // 아래 영역에 설정하는 것이 좋을듯 싶습니다.

    // private

    // { 현재 폼에서만 사용할 경우 }

    // public

    // { 다른폼에서도 사용할 경우 }

    //

    -----------------------------------------------------

    procedure TForm1.btnloginClick(Sender: TObject);

    begin

    connecting:= true;

    // 잘 못 사용된 함수

    // connection(true);

    CheckConnect;

    end;





    함수를 사용하기 위해서는 사용하겠다고 선언한 함수와

    실제 함 수가 같은 형태이어야 합니다.

    사용함에 있어서도 마찮가지고요..



    도움이 되셨으면합니다...



    이은정 wrote:

    > 꼭 좀 부탁드립니다. 이제 막 프로그램을 시작한 초보입니다.

    > 불쌍한 저에게 꼭 답변해 주시길바래요.

    >

    > 정보입력관리툴을 만들고 있습니다.

    > DB는 MySQL을 쓰구요(Linux환경의 MySQL임다.)

    > 아래의 소스는 DB에 접속하는 Login부분입니다.

    > 함수를 써서 다음폼에두 쓸려구 그러는데...

    > 맞는지요...

    > 어느 부분이 틀렸는지 꼭 좀 가르쳐 주시길 바랍니다.

    >

    > 함수쓰는 방법을 가르쳐 주셔두 됩니다.

    > 꼭 좀 부탁드리겠습니다.

    >

    > unit login;

    >

    > interface

    >

    > uses

    > Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

    > _libmysq, StdCtrls, buttons, Grids, DBgrids;

    >

    > type

    > TForm1 = class(TForm)

    > Label1: TLabel;

    > Label2: TLabel;

    > Label3: TLabel;

    > edtuid: TEdit;

    > edtupasswd: TEdit;

    > btnlogin: TButton;

    > btncancel: TButton;

    > procedure connecting(connected: Integer);

    > procedure btnloginClick(Sender: TObject);

    > procedure btncancelClick(Sender: TObject);

    >

    > private

    > { Private declarations }

    > public

    > { Public declarations }

    > end;

    >

    > var // 변수와 형 선언

    > Form1: TForm1;

    > mysqlrec: mysql; // MySQL 함수

    > connected: Boolean; // 변수

    > connecting: Boolean;

    >

    >

    > implementation

    >

    > uses newlist, logout, step5show;

    >

    > {$R *.DFM}

    >

    >

    > procedure connecting(connected: Boolean);

    > var

    > host, suser, spasswd: string;

    > uid, upasswd: string;

    > DB: string;

    > retval: Integer;

    > presults: pmysql_res; //results의 포인터

    > results: mysql_res;

    > prow, crow: pmysql_row; //열의 포인터

    > query: string;

    > begin

    > uid:= edtuid.Text;

    > upasswd:= edtupasswd.Text;

    >

    > host:= '';

    > suser:= '';

    > spasswd:= '';

    >

    > mysql_connect(@mysqlrec, PChar(host), PChar(suser), PChar(spasswd));

    >

    > connected:= true;

    > DB:= 'silvia_venture';

    > retval:= mysql_select_db(@mysqlrec,PChar(DB));

    >

    > begin

    > query:='select * from login where id='''+uid+''' and

    > pass='''+upasswd+'''';//(한줄임)

    > presults:= nil;

    >

    > mysql_query(@mysqlrec, PChar(query));

    > presults:= mysql_store_result(@mysqlrec);

    > results:= presults^;

    >

    > prow:= mysql_fetch_row(presults);

    >

    > if prow = nil then

    > begin

    > MessageDlg('사용자 ID와 Password가 맞지않습니다.' + chr(13)+ chr(13) +

    > '사용자 ID 와 Password를 확인하신 후, 다시 시도 하세여!',mtError,[mbok],0);

    >

    > edtuid.Text:= '';

    > edtupasswd.Text:= '';

    > edtuid.setfocus;

    > mysql_close(@mysqlrec);

    > end;

    >

    > if prow <> nil then

    > begin

    > form1.hide;

    > form2.show;

    > end;

    > end;

    >

    > end;

    >

    > function CheckConnect: Boolean;

    > begin

    > CheckConnect:= false;

    > if connecting then

    > CheckConnect:= true

    > else

    > connecting(CheckConnect);

    > end;

    >

    > procedure TForm1.btnloginClick(Sender: TObject);

    > begin

    > connecting:= true;

    > CheckConnect;

    > end;

    >