Q&A

  • ^의 의미가 ㅇ어덯게 되는건지요?
1)
    TR_STRUCT = Packed Record              
        DataLen        : Array [1.. 3] of char;
        TPCode         : Array [1.. 5] of char;
    end;

ss : ^TR_STRUCT

위의 ss에는 어떤 것이 할당될수 ㅇ있는건가요 ^TR_STRUCT
의 의미가무언가요?

2)
Move(PChar(DATA)^,PChar(@D1001)^,Length(DATA));
이것은 PChar(DATA)^ 와  PChar(@D1001)^ 가 ㅇ어떻게 할당이 ㄷ되는건가요? 의미를 잘 모르겠습니다.
1  COMMENTS
  • Profile
    이중철 2003.10.11 01:54
    포인터 연산은 무지 많이 합니다.

    꼭 공부하셨으면 합니다.

    질문내용을 건축을 예로 들면서 설명할께요

    건축을 할때 건축도면 또는 설계서 있죠

    이게 바로 Struncture 입니다.

        TR_STRUCT = Packed Record              
            DataLen        : Array [1.. 3] of char;
            TPCode         : Array [1.. 5] of char;
        end;


    그럼 건축물은 무엇일까요

    A : TR_STRUCT;

    여기서 A가 바로 건축물입니다.

    그리고 님이 가지고 있는 수첩있죠

    그곳의 주소란이 바로 Pointer 입니다.

    ss : ^TR_STRUCT;

    건축물에는 주소가 있죠 이것이 Adress이고
      
    표현은 @A  로 표현합니다.

    그럼 당신의 주소란에 주소를 적어넣을까요

    ss := @A;

    건축물의 내용을 싶어요 어떻게 하면 될까요

    DataLen이라는 내용을 볼까요 ^^

    A.DataLen  <= A건축물의 DataLen의 내용

    ss^.DataLen <= ss에 할당되어있는 주소의 건축물의 DataLen의 내용

    자 이제 이해가 되셨는지 모르겠네요
    ^^ 아무리 보아도 설명 무지 잘했다 (자화자찬 ㅋㅋ)

    Move(PChar(DATA)^,PChar(@D1001)^,Length(DATA));

    PChar(DATA)^

    에서 이 내용이 무엇일까요

    DATA <= 추측컨데 이것은 스트링 변수인듯 합니다

    델파이에서 스트링변수는 무엇일까요

    일반적인  s : string; 은 포인터 변수입니다.

    s := '나는 천재인다';

    이러면 자동으로 메모리 할당하여 데이타를 집어넣고 그 주소를

    s에 넣습니다.

    PChar(DATA) => DATA라는 스트링변수(포인터)를 Char Pointer

    로 형변환 하라는 의미입니다.

    또한 PChar(DATA)^ 은 Char Pointer 로 형변환 지칭하는 주소의

    데이타(또는 공간)라는 의미 입니다.

    PChar(@D1001)^

    D1001 은 아마 특정 Structure로 된 건축물로 예상됩니다.

    @D1001 은 그 건축물(변수 또는 Object 표현자유^^)의 주소이고

    PChar(@D1001) 은 그주소를 Char Pointer로 바꾸고

    PChar(@D1001) 은 Char Pointer 로 형변환 지칭하는 주소의

    데이타(또는 공간)라는 의미 입니다.

    설명이 잘되었는지 모르겠네요 그럼 즐코 하시고 ㅂㄴ