Q&A

  • 구조체에 대한 포인터를 어떻게 해줘야..?
Temp : PChar;

s_ch : struct_A;

begin



s_ch.name := '길동';

s_ch.Age := 21;

s_ch.Addr := '모름';

s_ch.Sex := 'M';



GetMem(Temp, sizeof(struct_A));

copymemory(Temp,@s_ch, sizeof(struct_A));

..............

이런식으로 했는데 말입니다..스토리 상으로는 Temp를 열어봤을때 신상 정보들이

들어왔어야 하는데 아무것도 들어있지 않습니다..

문제가 있었다면 틀림없이 copymemory에서 인자값(혹은 포인터)가 잘못 되었을꺼 같은데..도무지 뭐가 문제인지를 모르겠군요..

고수님들 한수 지도 좀 해주십시요..

도통 모르겠습니다..^^;;;;;;;;





3  COMMENTS
  • Profile
    kuma 2001.12.12 01:51
    음 이런식으로 해보세요....

    var

    Temp: array of char;

    AA: struct_A;

    begin

    AA.name := '길동';

    AA.Age := 21;

    AA.Addr := '모름';

    AA.Sex := 'M';



    Setlength( Temp, sizeof( struct_A ) );

    // GetMem( Temp, sizeof(struct_A));

    copymemory( Temp, @AA, sizeof(struct_A) );



    음 답변이
  • Profile
    델초 2001.12.12 02:01
    감사합니다..곰님..^^



    덕분에 쉽게 해결되었습니다..

    그런데 말입니다..setLength를 하게 되면 이것도 동적 할당이라서 나중에 메모리를 풀어주어야 하는지요..풀어주어야한다면 어떻게 해야되는지..



    그리고 array of char는 ShowMessage의 형태로 볼수 없나요?



    죄송합니다..얼마안된 초보라서 부족한게 너무 많네요..



    어엿비 여기시어 좀 갈쳐주십시요..꾸벅..



    kuma wrote:

    > 음 이런식으로 해보세요....

    > var

    > Temp: array of char;

    > AA: struct_A;

    > begin

    > AA.name := '길동';

    > AA.Age := 21;

    > AA.Addr := '모름';

    > AA.Sex := 'M';

    >

    > Setlength( Temp, sizeof( struct_A ) );

    > // GetMem( Temp, sizeof(struct_A));

    > copymemory( Temp, @AA, sizeof(struct_A) );

    >

    > 음 답변이
  • Profile
    kuma 2001.12.12 02:20
    음 메모리 해제 안하셔도 되구요....

    var

    Temp: array of char;

    AA: struct_A;

    BB: struct_A;

    begin

    AA.name := '길동';

    AA.Age := 21;

    AA.Addr := '모름';

    AA.Sex := 'M';



    Setlength( Temp, sizeof( struct_A ) );

    // GetMem( Temp, sizeof(struct_A));

    copymemory( Temp, @AA, sizeof(struct_A) );





    copymemory( @BB, Temp, sizeof( struct_A ) );



    showmessage( inttostr( sizeof( struct_A ) ) + ':' + inttostr( sizeof( Temp ) ) );

    end;



    해서 BB를 확인해 보시든가요...

    아님 showmessage( strPas( @Temp[0] ) );

    하심 되는데 널종결까지만 보여서 다 안보여요...

    문자는 널종료까지만 카피되요...



    답변이