Q&A

  • 소켓통신에서 Integer나 float값전송방법......
음... 제가요, 클라이언트 소켓에서 서버로부터 받은

Integer나 float값을 받아서 그걸 변수에 넣는 것을 하고있습니다.

근데요, 이게 값을 받으면 나오긴 나오는데, 올바른 Integer값이

아니라는 메세지창을 띄우면서 메모장에만 뜨고, 변수에는 값이

들어가지 않습니다.

아래는 소스입니다.

<전역변수>

Degrees는 Integer로 선언했습니다.



procedure TForm1.ClientSocketRead(Sender: TObject;

Socket: TCustomWinSocket);

begin

Memo1.lines.add(Socket.ReceiveText);

Degrees := StrtoInt(Socket.ReceiveText);

// 소켓으로 받은 스트링값을 Interger로 변환해서 저장

if Degrees = 0 then

label4.Caption := '정면'

else if Degrees < 0 then

begin

Degrees := -Degrees;

label4.Caption := '좌측'+floattostr(Degrees)+'도 회전';

Degrees := -Degrees;

end

else if Degrees > 0 then

begin

label4.Caption := '우측'+floattostr(Degrees)+'도 회전';

end;

END {RotateImage};

end;



이게 소스구요.

보시다시피 서버로부터 받은 Integer값만큼 회전했다는 메세지를

출력하는 것입니다. 그런데 memo장에는 값이 나오는데, label에는

아무런 값이 나오지 않습니다. 그러면서 올바른 Integer값이 아니라는 메세지창만 뜨는 것이죠....



고수님들의 답변을 기다리겠습니다......





1  COMMENTS
  • Profile
    윤신호 2001.05.05 03:14
    처리순서를 바꾸어보시기바랍니다.

    Degrees := StrtoInt(Socket.ReceiveText);

    Memo1.lines.add(Degrees);

    Socket.ReceiveText는 어딘가에 그 값을 넘기고나면 데이타가 사라져버리더라구요.

    저도 경험이 있는지라..

    암튼 먼저 받아내시고 그 받은걸로 자료 활용하시면 됩니다.



    좋은 하루 되세요.







    최은규 wrote:

    > 음... 제가요, 클라이언트 소켓에서 서버로부터 받은

    > Integer나 float값을 받아서 그걸 변수에 넣는 것을 하고있습니다.

    > 근데요, 이게 값을 받으면 나오긴 나오는데, 올바른 Integer값이

    > 아니라는 메세지창을 띄우면서 메모장에만 뜨고, 변수에는 값이

    > 들어가지 않습니다.

    > 아래는 소스입니다.

    > <전역변수>

    > Degrees는 Integer로 선언했습니다.

    >

    > procedure TForm1.ClientSocketRead(Sender: TObject;

    > Socket: TCustomWinSocket);

    > begin

    > Memo1.lines.add(Socket.ReceiveText);

    > Degrees := StrtoInt(Socket.ReceiveText);

    > // 소켓으로 받은 스트링값을 Interger로 변환해서 저장

    > if Degrees = 0 then

    > label4.Caption := '정면'

    > else if Degrees < 0 then

    > begin

    > Degrees := -Degrees;

    > label4.Caption := '좌측'+floattostr(Degrees)+'도 회전';

    > Degrees := -Degrees;

    > end

    > else if Degrees > 0 then

    > begin

    > label4.Caption := '우측'+floattostr(Degrees)+'도 회전';

    > end;

    > END {RotateImage};

    > end;

    >

    > 이게 소스구요.

    > 보시다시피 서버로부터 받은 Integer값만큼 회전했다는 메세지를

    > 출력하는 것입니다. 그런데 memo장에는 값이 나오는데, label에는

    > 아무런 값이 나오지 않습니다. 그러면서 올바른 Integer값이 아니라는 메세지창만 뜨는 것이죠....

    >

    > 고수님들의 답변을 기다리겠습니다......

    >

    >