제목과 동일하게 받는 부분에서 구조체 선언해서 1..2까지는 길이이고
그 다음은 구분자를 둬서 정보를 받는 형식인데
코드해석이 어렵네요.ㅠㅠ
알기 쉽게 주석 달아주실 분 해주실수 있으신가요ㅠㅠ
procedure TCltForm.ClientRead(Sender: TObject; Socket: TCustomWinSocket);
type
PHeader = ^THeader;
THeader = record
iLen : Array [1..2] of Char;
iCode : Char;
end;
var
aStr, aData : String;
aLen : Integer;
begin
fRecvStr := fRecvStr + Socket.ReceiveText;
while(Length(fRecvStr) >= Sizeof(THeader)) do begin //THeader가 작아야하니까
aLen := StrToInt(PHeader(fRecvStr[1]).iLen); //aLen 타입을 씌워서 pheader로
if Length(fRecvStr) >= aLen + Sizeof(PHeader(1).iLen) then begin //사이즈를 하기 위해 가상 1
aData := Copy(fRecvStr, Sizeof(THeader) + 1, aLen - Sizeof(THeader));
case PHeader(fRecvStr[1]).iCode of
'1' : CltChB1.Checked := StrToBool(aData);
'2' : CltChB2.Checked := StrToBool(aData);
'3' : CltChB3.Checked := StrToBool(aData);
'4' : CltCBox.ItemIndex := StrToInt(aData);
'5' : CltPBar.Position := StrToInt(aData);
'6' : CltRecvMemo.Lines.Add(aData);
'7' : CltSBar.Position := StrToInt(aData);
end;
Delete(fRecvStr, 1, aLen + Sizeof(PHeader(1).iLen));
end else
Break;
end;
end;