Q&A

  • 인디 서버로 구성을 해봤는데요..에러가 발생합니다
type
    TCommBlock = record  
                 Msg : array[1..5000] of Byte;
    end;

이렇게 선언을 해주고

Execute 에서

AThread.Connection.ReadBuffer (CommBlock, SizeOf(CommBlock));

이렇게 받아오는데 데이타가 클라이언트로 부터 넘어올때는 1000 바이트가 넘어올지 몇바이트가 넘어올지는 가변적입니다..

위와같이 하니까 에러가 발생하는데 무엇이 문제인가요
궁금합니다

6  COMMENTS
  • Profile
    이강석 2008.12.17 18:37
    단순히 위에 코드만 적어주시면 어떤 부분에서 에러나 나는지 익셉션이 나는건지 알 수가 없을거 같은데.....좀 자세히 소스코드를 적어주시면 안되나요?
  • Profile
    윤박사 2008.12.17 19:09
    If Not AThread.Terminated And AThread.Connection.Connected Then Begin

    Try

    AThread.Connection.ReadBuffer (CommBlock, SizeOf(CommBlock));


    MsgWrite(MemoMDT, 'Data 수신성공 ');

    AThread.Terminate;
    Except
    MsgWrite(MemoMDT, ' Data 수신실패 ');
    End;
    end;

    Execute 부분에 위와같이 구성했는데 CommBlock.Msg 값이 얼마가 넘어올지 모르기때문에 5000 으로 잡은겁니다
    테스트시에 클라이언트에서 보내는 양만큼 똑같이 해주면 에러가 안나는데
    데이타가 가변적으로 넘어와서...어찌 해야할지..참고로 클라이언트에서 넘어올때 데이타의 길이 정보는 같이 넘어옵니다
  • Profile
    최용일 2008.12.17 23:27
    서버쪽 소스같은데... AThread.Terminate;는 왜하시는지 모르겠네요... 이유가 있겠죠...

    암튼... 서버쪽에서 데이터가 들어오면 임시로 만든 버퍼에 계속해서 쌓아두고 일정길이가 차면 데이터를 처리하시면 될것 같네요.
  • Profile
    이강석 2008.12.17 23:38
    음...ReadBuffer말고 ReadLn으로 읽으셔서...구조체의 맨마지막에 종료문자코드를 주시고 읽으시면 안되나요??

    Cmd := AThread.Connection.ReadLn(FOOTER);

    Const
    FOOTER = #13#14;

  • Profile
    이강석 2008.12.17 23:40
    type
    TCommBlock = record
    Msg : array[1..5000] of Byte;
    FOOT : arry[1..2] of Char;
    end;

    물론 헤더도 포함하시면 더 좋을거 같고요..

    위에처럼 종료코드를 넣어서 하시면 데이터길이 얼마든지 관계없이 읽을 수 있지 않을까해서요....
  • Profile
    이정욱 2008.12.18 04:15
    근데.. 왜 Record로 하셨는지..... 위 같은 식이라면 그냥..
    var
    Msg : array[1..5000] of Byte;
    로 선언하고 Msg 를 이용하면 되는데요..

    근데 5000바이트가 들어오면 쓰레드를 강제 종료 시켜 버리시는군요...
    • 김현철
    • 2008.12.18 19:42
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 난난난난
      2008.12.19 02:24
      일반적으로는 메모안에서 enter를 치면 다음칸으로 나옵니다. 님의 경우는 화면에 KeyPreview := True...
    • 김현철
      2008.12.19 18:02
      답글 감사합니다! 님의 얘기대로 했더니... 메모에서 포커스가 없어졌습니다. 포커스가 다음으로 이동...
    • 이강석
      2008.12.18 18:21
      페이지 틀린 곳의 버튼 speed1이고 누르려고 하는 버튼이 speed2라면 speed1Click이벤트 코딩하는 부분...
    • 전봉수
      2008.12.18 20:36
      // 입력탭의 수정 스피드버튼 실행 및 에디터에 값 넣기 IF PAGECONTROL1.ActivePage = TABSHEET1 THEN ...
    • 이강석
      2008.12.18 02:42
      구분되어 있는 다른 스피드 버튼을 눌러지게 한다는 말이 혹시 현재 탭 말고 다른 탭에 있는 버튼을 어떤...
    • 이정욱
      2008.12.18 04:11
      그냥 그 이벤트 호출 해주시면 되는데요.... 만약 Button1Click 로 되어있다면, Button1Click(Button1) ...
    • 전봉수
      2008.12.18 05:32
      이강석님 이정욱님 답변감사합니다. 이강석님 말씀 대로 입니다. "단" 어떤 시점이 아니고 수동으로 눌...
    • 홍성락
      2008.12.18 07:39
      말씀하신걸 직역하면 어떤 스피드 버튼을 클릭하는게 아니라 눌러진 상태로 만든다는 말씀이시지요. 1. ...
    • 전봉수
      2008.12.18 11:25
      홍성락님 답변 감사합니다. 저의 질문을 다른방향으로 이해시신것 같씁니다. 제가질문 들인것은 스피드...
    • 홍성락
      2008.12.18 18:25
      그렇다면 위의 이정욱님 말씀대로하면 될건데요...같은 폼이라면 아무리 페이지컨트롤로 나뉜다하여도 같...
    • 전봉수
      2008.12.18 20:35
      // 입력탭의 수정 스피드버튼 실행 및 에디터에 값 넣기 IF PAGECONTROL1.ActivePage = TABSHEET1 THEN ...
    • 꼬꼬마
    • 2008.12.17 23:45
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.18 01:40
      Cells에 들어가는 값이 Row, Column순입니다. 이것만 잘 맞추시면 될것같은데요... idx변수가 요일을 나...
    • 꼬꼬마
      2008.12.18 21:43
      근데요// 어떤식으로 해야 되는거져? 일자에 기준으로 데이터를 뿌려주려고 하는데; 이거 생각보다 잘...
    • 최용일
      2008.12.19 02:16
      글쎄요... 그렇게 말씀하시면 더이상 할 말이 없는데요... 데이터들이 들어가야 할 셀의 위치를 다 알고...
    • 홍성락
      2008.12.17 22:42
      Message.WParam의 내용값이 문자렬 시작 주소라서 그냥 DataStr:= PChar(Message.WParam); 또는 DataSt...
    • 최용일
      2008.12.17 23:22
      WM_USER로는 문자열을 받기 힘들건데요... 양쪽 프로세스 간의 주소쳬계들이 달라서 전송을 해봤자 쓸 수...
    • 이정욱
      2008.12.18 04:13
      아니면 소켓 놓고.. 127.0.0.1 로컬로 문자 주고 받으셔도...ㅡㅡ;
    • 김현철
    • 2008.12.17 15:22
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.17 20:01
      쿼리 자체를 안한다면 모를까... 쿼리한 필드를 없앨 수는 없구요... 업데이트할 때 TUpdateSQL을 써서 ...
    • 김현철
      2008.12.17 20:44
      현재 사용하고있는 컴퍼넌트가 dbexpress에 있는 것을 사용하다보니... TUpdateSQL를 쓰기에는 좀..... ...
    • 윤박사
    • 2008.12.17 09:07
    • 6 COMMENTS
    • /
    • 0 LIKES
    • 이강석
      2008.12.17 18:37
      단순히 위에 코드만 적어주시면 어떤 부분에서 에러나 나는지 익셉션이 나는건지 알 수가 없을거 같은데....
    • 윤박사
      2008.12.17 19:09
      If Not AThread.Terminated And AThread.Connection.Connected Then Begin Try ...
    • 최용일
      2008.12.17 23:27
      서버쪽 소스같은데... AThread.Terminate;는 왜하시는지 모르겠네요... 이유가 있겠죠... 암튼... 서...
    • 이강석
      2008.12.17 23:38
      음...ReadBuffer말고 ReadLn으로 읽으셔서...구조체의 맨마지막에 종료문자코드를 주시고 읽으시면 안되...
    • 이강석
      2008.12.17 23:40
      type TCommBlock = record Msg : array[1..5000] of Byte; ...
    • 이정욱
      2008.12.18 04:15
      근데.. 왜 Record로 하셨는지..... 위 같은 식이라면 그냥.. var Msg : array[1..5000] of Byte; ...
    • 최용일
      2008.12.17 19:17
      델파이7은 Update1까지 나와 있습니다. 설치해주시면 될것같네요... 관련 파일은 코드기어 홈페이지에 ...
    • 맥스
      2008.12.18 00:04
      최 용 일 님 ^^ Update1 해주는거랑 안해주는거..차이 많이 나나여 ?
    • 최용일
      2008.12.18 05:27
      글쎄요... 차이에 대해선 생각해본적이 없어서... 그래도 여러가지 버그들도 고쳐졌고 했으니까 Update...
    • phono
      2008.12.18 18:40
      update1을 패치해 주지 않으면.. ado 와 연동되는 TAdo 쿼리의 sql.add 같은 펑션 사용하여 쿼리문...
    • 맥스
      2008.12.18 19:49
      phono님.. update1 패치 다운로드 꽁짜 맞아여? 불법 델파이를 써서요 ;;
    • lee, js
    • 2008.12.17 03:29
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 밴댕이
    • 2008.12.17 02:53
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.17 04:34
      TCanvas.TextOut보다는 API의 ExtTextOut이나 DrawText/DrawTextEx같이 글자를 클립핑해서 쓸 수 있는 함...
    • 이강석
      2008.12.17 18:40
      열때 오류가 발생하는건 대부분 컴포넌트를 사용한 소스를 컴포넌트가 없는 상태에서 열때 날거 같긴한데...
    • 구창민
      2008.12.16 01:11
      안녕하세요... BringToFront 와 SendToBack 을 이용해 보세요.. 즐거운 프로그래밍 하시구요~
    • 이강석
      2008.12.17 23:44
      패스워드나 암호를 login.cgi로 넘길때 login_id.Text나 login_pw.Text는 에디트일거 같은데 단순한 문자...
    • 귀여운대빵
      2008.12.18 02:35
      앗^^ 답변 감사합니다. 아래방식으로 해결되었습니다. procedure setcookies; var i, count:int...
    • 양용성
      2008.12.13 03:21
      오라클에 트랜잭션이 생겼는지 검사하는 방법은 연결이 끊었을 경우나 트랜잭션이 있는지 확인하려고 ...
    • 허수진
    • 2008.12.13 00:26
    • 0 COMMENTS
    • /
    • 0 LIKES
    • cell
    • 2008.12.12 18:48
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 바람
      2008.12.12 19:36
      Procedure Val 과 혼동되는건 아닌지요 변수명 Val을 딴 이름으로 바꿔보세요
    • 김현철
    • 2008.12.12 02:45
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.12.12 03:14
      에러메세지로 보면 아웃룩이 설치안되어 있는것 같네요... 방법1,2둘다 별 차이없구요. 반드시 Micros...
    • 김현철
      2008.12.12 03:33
      답글 감사합니다. 여러 글을 읽는 중에 봤음에도 불구하고 정확히 이해를 못해서 헤매고 있었네여! 자...
    • 최용일
      2008.12.12 03:55
      델파이7이면 FastNet컴포넌트(TNMSMTP) 대신에 Indy 9버전이 기본으로 들어가 있을건데요... Indy로 메...
    • 김현철
      2008.12.12 04:40
      최용일님... 혹시 http://www.delphi.co.kr/zboard/view.php?id=tips&no=1395 기억하시나여? 좋은 샘...
    • 최용일
      2008.12.12 06:06
      파일 첨부 기능만 추가하시면 되겠네요...
    • 남호성
    • 2008.12.12 00:56
    • 0 COMMENTS
    • /
    • 0 LIKES