Q&A

  • 동적배열 다시질문.... ㅠㅠ
어떠한 문자열을 글자수(byte) 수 만큼 Socket으로 전송하려 합니다..
문자열을 담는 변수는 array 형 char로 처리합니다...

정적(Static)배열로 했을 경우는 제대로 전송이 되지만...
글자수 만큼 보내야 하므로 정적(Dynamic)배열을 쓰려 합니다...

그래서 기존의
   digitString : array[0..9] of char;      // size : 10 byte
에서
   digitString : array of char;            // size : 4 byte

와 같이 선언한후  
'123456' 이라는 문자를 할당하고 처리하면
첫번째의 경우는 123456 이 제대로 나오지만..6byte가 전송되어야 하는데 10byte가 가서 뒤에 4byte가 더 보내지고..
두번째의 경우는 값도 이상하고 그뒤 데이타도 밀려서 이상한값이 나옵니다..

글자수 만큼 보내야 할 경우  어떤 형태로 저장 해야 하며 어떻게 처리해야 하는지 자세히좀 알려주세요..

더이상 갈굼은 싫어요..  ㅠㅠ
2  COMMENTS
  • Profile
    한원희 2003.02.19 20:40
    안녕하세요. 한원희입니다.

    보통 버퍼를 크게 잡아 놓고, 버퍼에 쓰인 양(글자수)만큼 데이터를 소켓으로 보내지 않나요? 오히려, 아래와 같이 버퍼를 실행중에 글자수 만큼 계속 할당을 한다면, 메모리를 할당하는 작업으로 인해서 오버헤드가 더 커질까 우려되는 군요.

    이상. 허접한 답변이었습니다.

  • Profile
    맑은물 2003.02.21 07:41
    var
    s: pchar;  //null 종료 문자열 포인터
    i: integer;
    aaa : array of char;
    begin
    s := 'delphi';
    i := StrLen(s);
    ShowMessage(inttostr(i));
    SetLength(aaa,i);  //동적배열 할당
    end;

    이게 맞는지 몰겠네요~~~~~~~~~~~~~~~^^