|
우선 다음과 같은 코드를 보시죠.
AnsiString s;
s = "1";
ShowMessage(IntToStr(sizeof(s)));
s = "12";
ShowMessage(IntToStr(sizeof(s)));
결과는 어떻게 될까요? 1, 2 로 나오는 것이 아니가 4, 4, 로 나옵니다.
즉 string의 길이가 sizeof가 될 수는 없다는 얘기지요.
struct정의를 다음과 같이 해 보시면 될 겁니다.
typedef struct MyRec
{
char FName[255];
char LName[255];
} TMyRec;
AyanamiRei 님이 쓰신 글 :
: 소켓으로 구조체를 주고 받으려고 하는데요.
: 보낼때 에러 나는것도 아니고
: 받을때 에러 나는것도 아닌데..값이 제대로 안들어 오네여..
:
:
: 서버쪽에서 이렇게 보내구요..
: typedef struct MyRec
: {
: AnsiString FName, LName;
:
: } TMyRec;
: typedef TMyRec* PMyRec;
:
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
: PMyRec temp;
: temp = new TMyRec;
: temp->FName ="test1";
: temp->LName = "test2";
: ss->Socket->Connections[0]->SendBuf(temp,sizeof(temp)); //ss는 서버소켓입니다.
: }
:
: //////////////////////////////////////////////////////////////////////////
: //클라이언트쪽은 다음과 같이 받았습니다.
:
:
: void __fastcall TForm1::csRead(TObject *Sender, TCustomWinSocket *Socket)
: { //cs는 클라이언트소켓입니다.
: PMyRec temp;
: temp = new TMyRec;
: Socket->ReceiveBuf(temp,Socket->ReceiveLength());
: ShowMessage(temp->FName);
: ShowMessage(temp->LName);
: }
:
: ////////////////////////////////////////////////////////////////////////
:
: 왜 안되는지....ㅡ.ㅜ
: 도움좀 주세요...
:
:
: 방금 다시 테스트 해본결과..
: 구조체의 스트링을 int로 바꾸니까 잘 갑니다.
: 구조체에 스트링을 넣으면 그 정확한 크기를 알수 없어서
: 제대로 전송은 못하는것 같습니다..ㅜ.ㅜ
: 어떻게 방법이 없는지요..
: 오늘 하루 종이 이거 잡고 끙끙 거리고 있습니다..
: 도움의 손길을..^^
:
|