|
sizeof(TExample) 는 8 이란 값을 리턴합니다. (sizeof(AnsiString)은 => 4 Byte)
통신용 구조체에는 AnsiString을 사용하면 안됩니다.
char array를 사용하세요.
ㅋㅋ 님이 쓰신 글 :
: 서버..
: typedef struct
: {
: AnsiString a;
: AnsiString b;
: }TExample; // 구조체 정의
:
: TExample Ex;
: Ex.a = "aaaa";
: Ex.b = "bbbb";
: Cnt = sizeof(TEx)+1;
: Buff = new BYTE[Cnt];
:
: // Buff에 넣어준다.. Buff[0]은 명령어...
: CopyMemory(&Buff[1], &Ex, Cnt);
:
: 그리고 어쩌구, 저쩌구.. 보냄...(SendBuf() 함수 이용)
: //---------------------------------------------------------------
: 클라이언트...
: 어쩌구 저쩌구 받음... ( ReceiveBuf() 함수 이용)
:
: Cnt = sizeof(TEx) + 1;
: CopyMemory(&Ex, &Data[1], Cnt); // 구조체에... 다시 메모리 복사...
:
: if(Ex.a.Length() > 0) // "" <--- 구조체에 빈 문자열이 복사돼네요..
: ListBox1->Items->Add(Ex.a);
: //---------------------------------------------------------------
:
: 간략하게.. 소스를 요약해 봤습니다...
:
: 제가 궁금한 건... 받는 쪽에서 보내는 쪽 데이터를 확실하게 다 받습니다...
:
: 근데... CopyMemory(&Ex, &Data[1], Cnt); 이 부분에서... 구조체 변수 a 와 b에
:
: 자꾸만 "" <--- 이런식으로... 빈 문자열이 찍히 더군요...
:
: 해결책이 없을 까요??
:
: 문자열부분을 char형 배열로 바꿔서 통신해야 돼는 건가요??
:
: 아니면.. ReceiveText() <-- 이 함수를 이용해야 하는 건가요??
:
: 근데.. 함수를 바꾸기에는 구조적으로 좀 문제가 있습니다..
:
: 왜 그런지 당췌 이유를 알수가 없더군요...
:
: 정말 급합니다...
|