이리 쉬운것도 모르는 제가 여러분들 도움을 받아 프로그램을 완성해 가고 있습니다.
진심으로 감사드립니다.^^
권익수 님이 쓰신 글 :
: 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으로 만들 수 있는 방법이 있으면 알려주시면 감사하겠습니다.
|