Q&A

  • 객체 생성에 관하여...
자꾸 제가 무식한 질문만 해대서... 죄송합니다 ㅡㅜ
왜 있자나요 --;


unit Unit3;

interface

uses
  SysUtils, Classes, DB, FMTBcd, DBXpress, SqlExpr, ADODB;

type
  TDataModule3 = class(TDataModule)

    ADOConnection1: TADOConnection; <-- 이부분
    ADOQuery1: TADOQuery;                <-- 이부분

  private
    { Private declarations }
  public
    { Public declarations }
    SQL : string;
    procedure gProc_AdoConnect();
    procedure gProc_AdoDisConnect();

    function  gFunc_isInteger(pStr:String):Boolean;
  end;

var
  DataModule3 : TDataModule3;

implementation

{$R *.dfm}

procedure TDataModule3.gProc_AdoConnect();
begin
    if ADOConnection1.Connected then
    begin
        ADOConnection1.Close;
    end;

    ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;' +
                                   'User ID=Admin;' +
                                   'Data Source=.\rice.mdb;' +
                                   'Mode=Share Deny None;' +
                                   'Extended Properties="";' +
                                   'Jet OLEDB:System database="";' +
                                   'Jet OLEDB:Registry Path="";' +
                                   'Jet OLEDB:Database Password="";' +
                                   'Jet OLEDB:Engine Type=5;' +
                                   'Jet OLEDB:Database Locking Mode=1;' +
                                   'Jet OLEDB:Global Partial Bulk Ops=2;' +
                                   'Jet OLEDB:Global Bulk Transactions=1;' +
                                   'Jet OLEDB:New Database Password="";' +
                                   'Jet OLEDB:Create System Database=False;' +
                                   'Jet OLEDB:Encrypt Database=False;' +
                                   'Jet OLEDB:Don''t Copy Locale on Compact=False;' +
                                   'Jet OLEDB:Compact Without Replica Repair=False;'+
                                   'Jet OLEDB:SFP=False';
    try
        ADOConnection1.Open;
    except

    end;
end;

procedure TDataModule3.gProc_AdoDisConnect();
begin
    if ADOConnection1.Connected then
    begin
        ADOConnection1.Close;
    end;
end;

function TDataModule3.gFunc_isInteger(pStr:String):Boolean;
var
    StrInt:String;
    valInt:Integer;
    TEMP_INT:Integer;
begin
    valInt := StrToIntDef(pStr,TEMP_INT);
    Result := (IntToStr(valInt) = pStr) or (valInt <> TEMP_INT);
end;

end.


옵션에서 이 화일을 자동생성하게 해놓으면.
Application.CreateForm(TDataModule3, DataModule3);

이런 코드가 생성되면 객체가 떠있게 됩니다. (맞져--ㅋ)
여기서 궁금한점이 있습니다.

상위코드나 .dpr 코드에는 ADOConnection 이나..
ADOQuery 객체를 생성한 코드는 없습니다.

제가 이해한것으로는 --;;
대략 has a 관계라고 보여지는데 --ㅋ;;

제가 지금가지 생각없이 하다가 보니까 --ㅋ

ADOConnection1 : TADOConnection;
이란 코드는 TADOConnection 타입의 변수를 선언했다라고만
생각했습니다.

default 접근한정자를 가지는..

그러나 하다보니 -- create 한 곳은 보이지 않고 --;
ADOConnection1. 하면 멤버가 주르륵 나오고 --;;

그래서 ADOConnection1 과 ADOQuery1 변수를
private 와 public 필드에 옮겨놨더니 --;;

오류가 뜨더군요 --;;
EclassNotFound --z 뭐 이런 --;;

너무 주절주절이네요 --;;

궁금한것은

type
  TDataModule3 = class(TDataModule)

    ADOConnection1: TADOConnection; <-- 이부분
    ADOQuery1: TADOQuery;                <-- 이부분

  private
    { Private declarations }
  public
    { Public declarations }
    SQL : string;
    procedure gProc_AdoConnect();
    procedure gProc_AdoDisConnect();

    function  gFunc_isInteger(pStr:String):Boolean;
  end;

이부분에서 ADOConnection1 의 객체는 TDatamodule3 객체가 생성될때
자동생성되는것인가 -- default 접근한정자의 변수선언'만'이 아니고...?
입니다..

죄송합니다 ㅡㅡ;
책에도 어물쩍 넘어간거 같아서 ㅡ_ㅡ;;
너무 궁금해서 --ㅋ

알려주시면 감사하겠습니다.






2  COMMENTS
  • Profile
    최용일 2004.05.19 21:23
    안녕하세요. 최용일입니다.

    님이 말씀하신 부분은 아주 특별한 published영역입니다. 그 부분은 폼파일 리소스(.dfm)에 저장되어 폼이 생성될때 자동으로 생성되고 해제될때 같이 해제됩니다.

    나머지 영역은 프로그래머가 직접 생성, 해제(해제는 안해주셔도 될 때도 있습니다.)를 해주셔야 합니다.

    질문 제목은 질문내용을 요약해서 적어주세요...

    http://www.delphi.co.kr/zboard/view.php?id=qanda&page=1&sn1=&divpage=7&sn=off&ss=on&sc=on&select_arrange=headnum&desc=asc&no=29528

    ^^ 항상 즐코하세요...

    >자꾸 제가 무식한 질문만 해대서... 죄송합니다 ㅡㅜ
    >왜 있자나요 --;
    >
    >
    >unit Unit3;
    >
    >interface
    >
    >uses
    >  SysUtils, Classes, DB, FMTBcd, DBXpress, SqlExpr, ADODB;
    >
    >type
    >  TDataModule3 = class(TDataModule)
    >
    >    ADOConnection1: TADOConnection; <-- 이부분
    >    ADOQuery1: TADOQuery;                <-- 이부분
    >
    >  private
    >    { Private declarations }
    >  public
    >    { Public declarations }
    >    SQL : string;
    >    procedure gProc_AdoConnect();
    >    procedure gProc_AdoDisConnect();
    >
    >    function  gFunc_isInteger(pStr:String):Boolean;
    >  end;
    >
    >var
    >  DataModule3 : TDataModule3;
    >
    >implementation
    >
    >{$R *.dfm}
    >
    >procedure TDataModule3.gProc_AdoConnect();
    >begin
    >    if ADOConnection1.Connected then
    >    begin
    >        ADOConnection1.Close;
    >    end;
    >
    >    ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;' +
    >                                   'User ID=Admin;' +
    >                                   'Data Source=.\rice.mdb;' +
    >                                   'Mode=Share Deny None;' +
    >                                   'Extended Properties="";' +
    >                                   'Jet OLEDB:System database="";' +
    >                                   'Jet OLEDB:Registry Path="";' +
    >                                   'Jet OLEDB:Database Password="";' +
    >                                   'Jet OLEDB:Engine Type=5;' +
    >                                   'Jet OLEDB:Database Locking Mode=1;' +
    >                                   'Jet OLEDB:Global Partial Bulk Ops=2;' +
    >                                   'Jet OLEDB:Global Bulk Transactions=1;' +
    >                                   'Jet OLEDB:New Database Password="";' +
    >                                   'Jet OLEDB:Create System Database=False;' +
    >                                   'Jet OLEDB:Encrypt Database=False;' +
    >                                   'Jet OLEDB:Don''t Copy Locale on Compact=False;' +
    >                                   'Jet OLEDB:Compact Without Replica Repair=False;'+
    >                                   'Jet OLEDB:SFP=False';
    >    try
    >        ADOConnection1.Open;
    >    except
    >
    >    end;
    >end;
    >
    >procedure TDataModule3.gProc_AdoDisConnect();
    >begin
    >    if ADOConnection1.Connected then
    >    begin
    >        ADOConnection1.Close;
    >    end;
    >end;
    >
    >function TDataModule3.gFunc_isInteger(pStr:String):Boolean;
    >var
    >    StrInt:String;
    >    valInt:Integer;
    >    TEMP_INT:Integer;
    >begin
    >    valInt := StrToIntDef(pStr,TEMP_INT);
    >    Result := (IntToStr(valInt) = pStr) or (valInt <> TEMP_INT);
    >end;
    >
    >end.
    >
    >
    >옵션에서 이 화일을 자동생성하게 해놓으면.
    >Application.CreateForm(TDataModule3, DataModule3);
    >
    >이런 코드가 생성되면 객체가 떠있게 됩니다. (맞져--ㅋ)
    >여기서 궁금한점이 있습니다.
    >
    >상위코드나 .dpr 코드에는 ADOConnection 이나..
    >ADOQuery 객체를 생성한 코드는 없습니다.
    >
    >제가 이해한것으로는 --;;
    >대략 has a 관계라고 보여지는데 --ㅋ;;
    >
    >제가 지금가지 생각없이 하다가 보니까 --ㅋ
    >
    >ADOConnection1 : TADOConnection;
    >이란 코드는 TADOConnection 타입의 변수를 선언했다라고만
    >생각했습니다.
    >
    >default 접근한정자를 가지는..
    >
    >그러나 하다보니 -- create 한 곳은 보이지 않고 --;
    >ADOConnection1. 하면 멤버가 주르륵 나오고 --;;
    >
    >그래서 ADOConnection1 과 ADOQuery1 변수를
    >private 와 public 필드에 옮겨놨더니 --;;
    >
    >오류가 뜨더군요 --;;
    >EclassNotFound --z 뭐 이런 --;;
    >
    >너무 주절주절이네요 --;;
    >
    >궁금한것은
    >
    >type
    >  TDataModule3 = class(TDataModule)
    >
    >    ADOConnection1: TADOConnection; <-- 이부분
    >    ADOQuery1: TADOQuery;                <-- 이부분
    >
    >  private
    >    { Private declarations }
    >  public
    >    { Public declarations }
    >    SQL : string;
    >    procedure gProc_AdoConnect();
    >    procedure gProc_AdoDisConnect();
    >
    >    function  gFunc_isInteger(pStr:String):Boolean;
    >  end;
    >
    >이부분에서 ADOConnection1 의 객체는 TDatamodule3 객체가 생성될때
    >자동생성되는것인가 -- default 접근한정자의 변수선언'만'이 아니고...?
    >입니다..
    >
    >죄송합니다 ㅡㅡ;
    >책에도 어물쩍 넘어간거 같아서 ㅡ_ㅡ;;
    >너무 궁금해서 --ㅋ
    >
    >알려주시면 감사하겠습니다.
    >
    >
    >
    >
    >
    >
    >
  • Profile
    이종석 2004.05.19 22:34
    감사드립니다.
    질문제목에 더 신경쓰겠습니다.

    감사합니다 ^^