Q&A

  • 동적배열구조가 정적 배열과 다른가여?
안녕하세여?



SendBuffer : array of Byte;

SendBuffer2 : array[0..3] of Byte;



이렇게 있을때..



SetLength( SendBuffer , 4 );



for i := 0 to 3 do

begin

SendBuffer[i] := i + 65;

SendBuffer2[i] := i + 65;

end;





Socket.SendBuffer( SendBuffer , Length(SendBuffer);

Socket.SendBuffer( SendBuffer2 , Length(SendBuffer2);



이렇게 자료를 보냈을경우에.. 받는 쪽이 하드웨어인데..

UChar배열로 받습니다.

동적으로 배열을 잡고 보내면.. 데이터가 바이트수는 일치하는데.

깨지네요.

아래에 있는 것은 정확이 데이터가 가구요..



동적배열과 정적배열이 어떤 차이가 있는지 궁금하구요..

또. SendBuffer[0]로 파람을 넘겼을때. 포인터가 SendBuffer랑 어떻게

차이가 있는지 해서 도움을 구합니다..

그럼.. ( 또.. 관련 자료를 어디서 읽어 볼수 있는지 가르쳐 주시면.. ㅠ.ㅠ)



그럼 고수님들의 도움을....

1  COMMENTS
  • Profile
    최용일 2001.05.18 02:00
    안녕하세요. 최용일입니다.



    동적배열과 정적배열은 완전히 다른구조의 데이터형입니다. 동적배열은 string, interface처럼 참조카운트와 범위(scope)에 의해 메모리 할당/해제가 자동으로 이루어지는 데이터형입니다.



    데이터의 크기가 일정하지 않다면 GetMem을 이용해서 메모리할당을 해서 사용하세요...



    var

    SendBuffer: PByteArray; // PByteArray = pointer to array[0..32767] of Byte;

    I: Integer;

    begin

    GetMem(SendBuffer, 크기);

    for I := 0 to 3 do

    SendBuffer^[I] := i + 65;

    ......

    Socket.SendBuffer(SendBuffer^ , 크기);

    ......

    FreeMem(Sendbuffer, 크기);

    end;



    ^^ 항상 즐코하세요...



    정종구 wrote:

    > 안녕하세여?

    >

    > SendBuffer : array of Byte;

    > SendBuffer2 : array[0..3] of Byte;

    >

    > 이렇게 있을때..

    >

    > SetLength( SendBuffer , 4 );

    >

    > for i := 0 to 3 do

    > begin

    > SendBuffer[i] := i + 65;

    > SendBuffer2[i] := i + 65;

    > end;

    >

    >

    > Socket.SendBuffer( SendBuffer , Length(SendBuffer);

    > Socket.SendBuffer( SendBuffer2 , Length(SendBuffer2);

    >

    > 이렇게 자료를 보냈을경우에.. 받는 쪽이 하드웨어인데..

    > UChar배열로 받습니다.

    > 동적으로 배열을 잡고 보내면.. 데이터가 바이트수는 일치하는데.

    > 깨지네요.

    > 아래에 있는 것은 정확이 데이터가 가구요..

    >

    > 동적배열과 정적배열이 어떤 차이가 있는지 궁금하구요..

    > 또. SendBuffer[0]로 파람을 넘겼을때. 포인터가 SendBuffer랑 어떻게

    > 차이가 있는지 해서 도움을 구합니다..

    > 그럼.. ( 또.. 관련 자료를 어디서 읽어 볼수 있는지 가르쳐 주시면.. ㅠ.ㅠ)

    >

    > 그럼 고수님들의 도움을....