꼭 좀 부탁드립니다. 이제 막 프로그램을 시작한 초보입니다.
불쌍한 저에게 꼭 답변해 주시길바래요.
정보입력관리툴을 만들고 있습니다.
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;
자세한 내용은 검증해보지는 않았지만
대충 보니 함수 사용이 약간 이상하네요...
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;
>