소켓통신에서 서버쪽에 구조체를 보내는 데 다들 아시다시피 제가 실력이 워낙
미천하야 이렇게 질문을 올립니다. 다름이 아니오라.
(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)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번구조체형으로 선언하고 쓰시면 될 것 같네요...
도움이 되었으면 좋겠습니다.