Q&A

  • 소켓통신입니다. 구조체 안에 구조체와 인티저값 설정
소켓통신에서 서버쪽에 구조체를 보내는 데 다들 아시다시피 제가 실력이 워낙

미천하야 이렇게 질문을 올립니다. 다름이 아니오라.



(1)TDvrCmdMsg = record

opcode : Array[0..1]of Char;

sender : Array[0..1]of Char;

rpid : Integer;

reserved : Array[0..1]of Char;

data : Array[0..570]of Char

end;//SendRecord



(2)TDvrCmdRecord = record

Cmd : Integer;

Tid : Array [0..49]of Char;

Flag : Array[0..1]of Char;

data : Array[0..511]of Char;

end;//CommandRecord



1번과 2번 구조체가 있습니다.

보낼때 1번구조체의 Data에 2번 구조체를 넣어서 보내야하는데 이게 점 걸리고요

Integer값으로 잡혀있는 멤버변수에

StrPCopy로 Edit박스의 값을 넣으니 에러가 나는군요 형변환을 했는데도 그러네요..

항상 고생하시는데 이렇게 질문같지도 않은 질문으로 항상 속을 썩여드리는 저를

용서하시고요 꼭 점 답변 부탁드립니다.



구조체 값을 채우는 방식은 지금 이렇게 하는데 한번 봐주시고 1번구조체의 Data에

2번구조체를 채우는것을 어찌하여야할지 점 길이라도 꼭 열어주십시오



1번구조체 DvrCommand : TDvrCmdMsg;

2번구조체 DvrCmdData : TDvrCmdRecord;

begin

ZeroMemory(@DvrCmdData,Sizeof(DvrCmdData));

With DvrCmdData do begin

StrPCopy(Cmd,StrToInt(CmdEdit.Text));

+==========================================여기서 형이 다르다는데

integer 값은 StrPCopy 가 안되나요?

StrPCopy(Tid,TidEdit.Text);

StrPCopy(Flag,FlagEdit.Text);

StrPCopy(data,DataEdit.Text);

end;

ZeroMemory(@DvrCommand,Sizeof(DvrCommand));

With DvrCommand do begin

StrPCopy(opcode,EditOp.Text);

StrPCopy(sender,SenderEdit.Text);

StrPCopy(rpid,StrToInt(RpId.Text));

StrPCopy(reserved,ReservedEdit.Text);

StrPCopy(data, 여기에 2번의 구조체를 넣어야하는데...어찌할지..));

end;

end;



1번 구조체의 마지막 멤버는

꼭 스트링으로 넣어야하는지라 ..어찌해야할지 모르겠습니다. 어쩌면 좋져? ㅠㅠ

1  COMMENTS
  • Profile
    sk3958 2001.10.30 01:44
    aparadin wrote:

    > 소켓통신에서 서버쪽에 구조체를 보내는 데 다들 아시다시피 제가 실력이 워낙

    > 미천하야 이렇게 질문을 올립니다. 다름이 아니오라.

    >

    > (1)TDvrCmdMsg = record

    > opcode : Array[0..1]of Char;

    > sender : Array[0..1]of Char;

    > rpid : Integer;

    > reserved : Array[0..1]of Char;

    > data : Array[0..570]of Char

    > end;//SendRecord

    >

    > (2)TDvrCmdRecord = record

    > Cmd : Integer;

    > Tid : Array [0..49]of Char;

    > Flag : Array[0..1]of Char;

    > data : Array[0..511]of Char;

    > end;//CommandRecord

    >

    > 1번과 2번 구조체가 있습니다.

    > 보낼때 1번구조체의 Data에 2번 구조체를 넣어서 보내야하는데 이게 점 걸리고요

    > Integer값으로 잡혀있는 멤버변수에

    > StrPCopy로 Edit박스의 값을 넣으니 에러가 나는군요 형변환을 했는데도 그러네요..

    > 항상 고생하시는데 이렇게 질문같지도 않은 질문으로 항상 속을 썩여드리는 저를

    > 용서하시고요 꼭 점 답변 부탁드립니다.

    >

    > 구조체 값을 채우는 방식은 지금 이렇게 하는데 한번 봐주시고 1번구조체의 Data에

    > 2번구조체를 채우는것을 어찌하여야할지 점 길이라도 꼭 열어주십시오

    >

    > 1번구조체 DvrCommand : TDvrCmdMsg;

    > 2번구조체 DvrCmdData : TDvrCmdRecord;

    > begin

    > ZeroMemory(@DvrCmdData,Sizeof(DvrCmdData));

    > With DvrCmdData do begin

    > StrPCopy(Cmd,StrToInt(CmdEdit.Text));

    > +==========================================여기서 형이 다르다는데

    > integer 값은 StrPCopy 가 안되나요?

    > StrPCopy(Tid,TidEdit.Text);

    > StrPCopy(Flag,FlagEdit.Text);

    > StrPCopy(data,DataEdit.Text);

    > end;

    > ZeroMemory(@DvrCommand,Sizeof(DvrCommand));

    > With DvrCommand do begin

    > StrPCopy(opcode,EditOp.Text);

    > StrPCopy(sender,SenderEdit.Text);

    > StrPCopy(rpid,StrToInt(RpId.Text));

    > StrPCopy(reserved,ReservedEdit.Text);

    > StrPCopy(data, 여기에 2번의 구조체를 넣어야하는데...어찌할지..));

    > end;

    > end;

    >

    > 1번 구조체의 마지막 멤버는

    > 꼭 스트링으로 넣어야하는지라 ..어찌해야할지 모르겠습니다. 어쩌면 좋져? ㅠㅠ



    일단 에러가 나는 부분의 StrPCopy의 인자가 모두 형이 다르군요.. 델파이 도움말을 보시면 나와 있구요..

    그리구 2번구조체의 Cmd는 Integer형이니까 그냥 Cmd := StrToInt(EditOp.Text)하면 되지 않나요?

    또 1번 구조체의 data멤버에 2번구조체를 넣으시려면 그냥 1번구조체의 data멤버를 2번구조체형으로 선언하고 쓰시면 될 것 같네요...

    도움이 되었으면 좋겠습니다.