Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[15435] 소켓통신에서 read로 받는 부분에 대한 구조체 선언인데요 이 구조체 사용에 대해 설명부탁드립니다..
델파이초보 [] 2050 읽음    2015-03-23 13:20



제목과 동일하게 받는 부분에서 구조체 선언해서 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;

+ -

관련 글 리스트
15435 소켓통신에서 read로 받는 부분에 대한 구조체 선언인데요 이 구조체 사용에 대해 설명부탁드립니다.. 델파이초보 2050 2015/03/23
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.