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
[13051] [질문] Indy 10에서 Buffer를 사용하여 송/수신할 때...
푸른솔 [seejune] 2331 읽음    2009-12-18 11:27
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를 사용하여 송/수신할 때... 반영재 2118 2009/12/18
13054         Re:Re:[질문] Indy 10에서 Buffer를 사용하여 송/수신할 때... 푸른솔 3713 2009/12/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.