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
[13053] Re:[질문] Indy 10에서 Buffer를 사용하여 송/수신할 때...
반영재 [ycom] 2117 읽음    2009-12-18 11:32
TInfo = record
     Name: string[40];
     num: byte;
   end;

이렇게 Name의 Size를 지정해서 해보세요.

푸른솔 님이 쓰신 글 :
: TInfo = record
:     Name: string;
:     num: byte;
:   end;
:
: 위와 같이 구조체를 선언하고 Client -> Server로 보낼 때
: var
:   Info: TInfo;
:
:     TCPClient.Connection.IOHandler.Write(RawToBytes(Info, SizeOf(Info)));
:
: 이렇게 보내고 서버의 Excute 이벤트에서 아래와 같이 받습니다..
: var
:   Buffer: TIDBytes;
:   Info: TInfo;
:
:     AContext.Connection.IOHandler.ReadBytes(Buffer, SizeOf(Info));
:     BytesToRaw(Buffer, Info, SizeOf(Info));
:
: 이것을 메모장에 찍어보면
:     Memo.Lines.Add('Name: ' + IntToStr(Info.num));   // 찍힘...
:     Memo.Lines.Add('Name: ' + Info.Name);  // 안 찍힘..
: Num은 찍히는데 즉, 숫자는 잘 찍히는데 문자형은 찍히지 않고 죽어 버리는 것 같습니다.
: Client에서 구조체를 못 보낸 것인지 아니면 서버에서 못 받은 것인지를 모르겠습니다.
:
: 그런데 구조체내의 변수를 모두 숫자형으로 하면 잘 됩니다. 문자형이 포함되면 안됩니다.
: Buffer가 Byte형이라 그런 것으로 생각되는데 문자형이 포함된 구조체를 보내고 받는 방법은
: 없는지요? 여러번 시행착오 끝에 여기까지는 알아냈는데 해결방법은 찾지를 못하겠군요...
: 이번에 Indy를 처음 사용해 보는지라.....
: 조언을 부탁드립니다...
:
: 델파이2009 + Indy 10.5.7 버전이고, 구조체를 사용하지 않고 WriteLn, ReadLn를 사용하면
: 이상없이 잘 됩니다. 구조체를 꼭 사용하고 싶어서.....
:
: 감사합니다..

+ -

관련 글 리스트
13051 [질문] Indy 10에서 Buffer를 사용하여 송/수신할 때... 푸른솔 2331 2009/12/18
13053     Re:[질문] Indy 10에서 Buffer를 사용하여 송/수신할 때... 반영재 2117 2009/12/18
13054         Re:Re:[질문] Indy 10에서 Buffer를 사용하여 송/수신할 때... 푸른솔 3712 2009/12/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.