|
파스칼에도 포인터는 있습니다.
그리고 시기적으로 따지면 파스칼이 C보다 좀 먼저 나왔답니다.
^^ 님이 쓰신 글 :
:
: ^^
: 제가 몰 잘못 알고 있나요 ?
: Object Pascal에는 포인터형이 있는데, Pascal에는 없는 걸루 아는데....
: C언어가 나오고, C언어 자체의 자유분방함때문에 배우는데 어려움이 많아서 이를 보다 쉽게 만들고자 만든 언어가 pascal로 알고 있습니다. 그래서 C언어에서 가장 많이 틀리는 ;(세미콜론) 규칙을 보다 강화하고, 어려운 포인터 개념을 도입하지 않은 것으로 알고 있습니다.
:
:
:
: 김성진.kark 님이 쓰신 글 :
: : 에구, ^^ 님 답변중에 수정할 부분이 있어서 글을 올립니다.
: :
: : 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
: : : :
: : : : };
: : : :
: : : : 이 밑에 부분은 생략
: : : :
: : : :
: : : :
: : : : //---------------------------------------------
: : : :
: : : :
: : : : 그럼..감사합니다..
|