먼저 소스를 올리겠습니다.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DB, ADODB, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
type --> 레코드형 선언
AgentInfo = record
AgentName : Array of String;
AgentID : Array of Integer;
temp : Integer;
end;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
var
AgentData : AgentInfo;
i : Integer;
begin
ADOConnection1.Connected := False;
ADOConnection1.Connected := True;
ADOQuery1.Active := False;
ADOQuery1.Active := True;
ShowMessage(IntToStr(ADOQuery1.RecordCount)); --> 폼생성시 값을 보고... 제대로 나오는 값
with AgentData do
begin
SetLength(AgentName,ADOQuery1.RecordCount);
SetLength(AgentID, ADOQuery1.RecordCount);
temp := ADOQuery1.RecordCount;
for i := 0 to ADOQuery1.RecordCount - 1 do
begin
AgentName[i] := ADOQuery1.FieldByName('AgentName').AsString;
AgentID[i] := ADOQuery1.FieldByName('AgentID').AsInteger;
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
AgentData : AgentInfo;
p : ^Integer;
begin
p := @AgentData.temp;
ShowMessage(IntToStr(p^));
With AgentData do
begin
ShowMessage(IntToStr(temp)); --> 버튼을 클릭했을경우에 값을 보고.... 요상 야릇한 값이 출력
end;
end;
end.
폼을 생성했을때하고 버튼을 클릭했을때의 값이 서로 다릅니다.
이런식으로는 구현이 안되는 지요?
된다면 어떤 식으로 접근을 하는 알고 십습니다.
어떠한 조언도 감사합니다.
그럼 감사합니다. 꾸벅~~ (--)(__)
type --> 레코드형 선언
AgentInfo = record
AgentName : Array of String;
AgentID : Array of Integer;
temp : Integer;
end;
TForm1 = class(TForm)
Button1: TButton;
private
public
test : AgentInfo; <----- 여기다 어디에서 읽을수 있게 선언하세요.
end;
이렇게 선언하고
값을 읽을때는
showMessage(IntToStr(test.temp)); 하면 됩니다
값을 입력할때는
test.temp := 3; 이런식으로요....