TBytes 초기화는 그냥 nil 지정하면 됩니다.
ex) l_tmp := nil;
길이 지정은 SetLength를 이용하시면 되고요.
IdGlobal.pas 에 보면 TBytes와 동일한 형태의 TIdBytes가 선언되어있는데, IdGlobal에 TIdBytes 관련 함수들이 많이 있습니다.
참고하시면 개발하는데 도움이 많이 될 겁니다.
김수정 님이 쓰신 글 :
: TUDP소켓을 통해 다수의 피시에 파일을 전송하려 하는데
: 여러가지 문제로 고생하다 civilian님의 덕분에 어느정도 해결이 되었습니다.
: civilian님 다시 한 번 감사드립니다.
:
: 이번엔 TBytes타입 때문에 고생하고 있는데요.
:
: TUDP소켓으로는 대용량파일을 한번에 전송할 수 없어
: 파일을 MemoryStream에 담아 8192바이트씩 나누어 전송합니다.
:
: Indy10을 사용하고 있어 IdUDPClient1.SendBuffer(AData) 이렇게 데이터를 전송할때
: AData가 TBytes타입입니다.
:
: 그런데 8192바이트씩 나누어 전송하다가 파일의 끝부분이 되면
: 나머지부분이 8192바이트가 되지 않기 때문에 나머지 부분만 전송해야 하는데요.
:
: 문제는 TBytes타입은 용량이 모자라면 자동으로 늘려주지만
: 용량이 작아지는 경우에는 자동으로 줄여주지 않기 때문에
: 파일의 끝부분을 저장하고 남는 부분에는
: 이전에 담아 두었던 값들이 그대로 남아 전송이 됩니다.
:
: 그래서 TBytes에 담겨진 데이터를 전송하고 나면 TBytes의 길이를 초기화 해야 할것 같은데
: 초기화할 방법을 찾지 못하고 있습니다.
:
: TBytes를 사용하고 난 다음 TBytes의 길이를 0으로 만들 수 있는 방법이 있으면 알려주시면 감사하겠습니다.
|