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

C++빌더 Q&A
C++Builder Programming Q&A
[19965] [질문]버튼을 이용한 캐리지리턴 입력
멋쟁이 [pegasus] 1604 읽음    2002-07-09 20:50
시리얼 포트제어를 할려구 컴포넌트(nrComm-www.deepsoftware.ru)를 하나써서 프로그램을 짰는데요.
제공해주는 델파이 소스에서는 그냥 #13(캐리지리턴)을 변수에 지정해두고 스트링에 붙이면 입력이되는군요.

그러니깐 소스가 아래와 같은 겁니다.

var
  Form1: TForm1;

implementation
uses unit2;
{$R *.DFM}
Var
  Buff:string='';
  EndOfString:char=#13;<---------------여기서 캐리지리턴을 부여해주고
  MyThread:TMyThread;

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  nrCOmm1.Active:=CheckBox1.Checked;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  nrComm1.ConfigDialog;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  nrCOmm1.SendString(Edit1.Text+EndOfString);<-----버튼이 눌리면 에디트에 입력된 스트링에다가 리턴을 붙여서 날리는 거죠.
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  MyThread:=TMyThread.Create(True);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  MyThread.Free;
end;

procedure TForm1.CheckBox2Click(Sender: TObject);
begin
  if CheckBox2.Checked
     then MyThread.Resume
     else MyThread.Suspend;
end;

procedure TForm1.nrComm1AfterReceive(Com: TObject; Buffer: Pointer;
  Received: Cardinal);
var i:integer;
    ch:char;
begin
  for i:=0 to Received-1 do begin
    ch:=PChar(Buffer)[i];
    if ch=EndOfString then begin
      ListBox1.Items.Add(Buff);
      Buff:='';
    end else Buff:=Buff+ch;
  end;
end;

end.


문제는 제가 C++빌더를 쓰는 관계로 델파이로 된 이 부분을 빌더로 바꾸고 싶은데, 그냥

nrComm1->SendString(Edit1->Text+"\n");

해서는 작동을 하질 않는군요.
그래서 '\n', VK_RETURN을 돌려가며 붙여봤지만 여전히 감감무소식이구요.

디버그 하면서 보니깐 스트링의 끝 부분에 \n 이 들어같것은 분명한데...

그래서 꽁수를 써본다고 strcopy,strcat을 써서 그냥 CString상태로 끝에 \n을 붙여봤는데, 이것두 안되더군요.

혹시 이런문제의 해결방법을 아시면 조언을 부탁드립니다.

죄송.. 실력이 워낙에 허접하다보니 이런 글로 게시판 복잡하게 만듭니다.

현재는

__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    nrComm1->ConfigDialog();       
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
    nrComm1->Active=!(nrComm1->Active);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
    nrComm1->Active=false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
    AnsiString strSending;
    char retChar[2];
    char* szBuffer = new char[(EditStrToSend->Text).Length()];
    retChar[0]='\n';
    retChar[1]='\n';
    StrCopy(szBuffer,EditStrToSend->Text.c_str());
    StrCat(szBuffer, retChar);
    strSending=szBuffer;
    delete [] szBuffer;
    nrComm1->SendString(strSending);
}
//---------------------------------------------------------------------------
이렇게 고치는데까지 해보다가 열받아서 머리 찟고 있는 중입니다.


고수님들 헬미요...

+ -

관련 글 리스트
19965 [질문]버튼을 이용한 캐리지리턴 입력 멋쟁이 1604 2002/07/09
19966     Re:[질문]버튼을 이용한 캐리지리턴 입력 @@ 972 2002/07/09
19967         Re:Re:[질문]버튼을 이용한 캐리지리턴 입력 멋쟁이 895 2002/07/09
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.