C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[16488] ^^님 답변 중 ...
김성진.kark [kark] 1485 읽음    2002-03-19 01:56
에구, ^^ 님 답변중에 수정할 부분이 있어서 글을 올립니다.

pascal에도 포인터형이 있습니다.

(아래 예제는 Object Pascal Language Guide에서 가져왔습니다.)

var
X,Y : Integer;  // X and Y are Integer variables
P: ^Integer;    // P points to an Integer
begin
X := 17;        // assign a value to X
P := @X         // assign the address of X to P
Y := P^         // dereference P; assign the result to Y
end;


^^ 님이 쓰신 글 :
: pointer로 정의해 보세요.
: 참고로 C++ Builder 내에서는 클래스를 직접적으로 정의하여 사용하는 방식이 아니라 포인터를 이용한 접근방식을 사용하거든요. 그리고 pascal에서는 pointer형이 없습니다.
:
: TMessageItem *mi;    <= 이렇게...
:
:
:
: 홍지곤 님이 쓰신 글 :
: :
: : 델파이에서 이렇게 선언 된 것을 빌더로 고치는 중인데 한가지 막히는
: : 부분이 있습니다.
: :
: : procedure TMainForm.MsgSimulator1StopRecord(Sender: TObject);
: : var
: :    i  : integer;
: :    mi : TMessageItem;   <------------- 막히는 부분
: :    s  : string;
: : begin
: :    StopBut.Enabled := False;
: :
: :    for i := 0 to MsgSimulator1.Messages.Count-1 do begin
: :       mi := MsgSimulator1.Messages[i];
: :
: :       s := Format('Msg: %3d  X: %4d  Y: %4d  Key: %4.4x  Delay: %4d', [integer(mi.Msg), mi.PosX, mi.PosY, mi.VkKey, mi.Delay]);
: :       Memo1.Lines.Add(s);
: :    end;
: : end;
: :
: : end.
: :
: : //---------------------------------------------------------------------------------
: : void __fastcall TForm1::MsgSimulator1StopRecord(TObject *Sender)
: : {
: :
: :    int i;
: :    TMessageItem mi; ----------->이렇게 했더니 되지 않습니다.
: :    String s;
: :
: :    StopBut->Enabled = False;
: :
: :
: :     for (i=0; i=MsgSimulator1->Messages->Count-1; i++)
: :         mi = MsgSimulator1->Messages[i];
: :         s = Format("Msg: %3d  X: %4d  Y: %4d  Key: %4.4x  Delay: %4d", [int(mi->Msg), mi->PosX, mi->PosY, mi->VkKey, mi->Delay]);
: :         Memo1->Lines->Add(s);
: : }
: :
: : //-----------------------------------------
: :
: : TMessageItem 이게 *.pas에서 *.hpp로 바뀐 것을 보니
: : TCollectionItem 클래스로 되어있는것 같습니다.
: : 어떻게 MsgSimulator1StopRecord 부분에서 선언해야
: : 하는지요? 답변 부탁드립니다.
: :
: : //-- user supplied -----------------------------------------------------------
: :
: : namespace Msgsimulator
: : {
: : //-- type declarations -------------------------------------------------------
: : #pragma option push -b-
: : enum TWMMessage { mmMouseDown, mmMouseUp, mmMouseMove, mmKeyDown, mmKeyUp };
: : #pragma option pop
: :
: : class DELPHICLASS TMessageItem;
: : class PASCALIMPLEMENTATION TMessageItem : public Classes::TCollectionItem
: : {
: :     typedef Classes::TCollectionItem inherited;
: :    
: : protected:
: :     #pragma pack(push, 1)
: :     tagEVENTMSG em;
: :     #pragma pack(pop)
: :    
: :     TWMMessage FMsg;
: :     unsigned FDelay;
: :     int FX;
: :     int FY;
: :     int FKey;
: :     int FHWND;
: :     Controls::TMouseButton FButton;
: :     void __fastcall Fill_EM_From_Props(void);
: :     void __fastcall Fill_Props_From_EM(void);
: :    
: : public:
: :     __fastcall virtual TMessageItem(Classes::TCollection* Collection);
: :     __property int HWND = {read=FHWND, write=FHWND, nodefault};
: :    
: : __published:
: :     __property TWMMessage Msg = {read=FMsg, write=FMsg, nodefault};
: :     __property int PosX = {read=FX, write=FX, nodefault};
: :     __property int PosY = {read=FY, write=FY, nodefault};
: :     __property int VkKey = {read=FKey, write=FKey, nodefault};
: :     __property unsigned Delay = {read=FDelay, write=FDelay, nodefault};
: :     __property Controls::TMouseButton Button = {read=FButton, write=FButton, nodefault};
: : public:
: :     #pragma option push -w-inl
: :     /* TCollectionItem.Destroy */ inline __fastcall virtual ~TMessageItem(void) { }
: :     #pragma option pop
: :    
: : };
: :
: : 이 밑에 부분은 생략
: :
: :
: :
: : //---------------------------------------------
: :
: :
: : 그럼..감사합니다..

+ -

관련 글 리스트
16467 [질문]선언하는 건데요, 어떻게 선언해야 하는지요? 홍지곤 1555 2002/03/18
16480     Re:[질문]선언하는 건데요, 어떻게 선언해야 하는지요? ^^ 1641 2002/03/18
16488         ^^님 답변 중 ... 김성진.kark 1485 2002/03/19
16495             Re:^^님 답변 중 ... ^^ 1453 2002/03/19
16539                 Re:Re:^^님 답변 중 ... 김성진.kark 1414 2002/03/20
16496                 Re:Re:^^님 답변 중 ... 지나가는 사람 1504 2002/03/19
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.