procedure TfrmMain.comport1ReceiveData(Sender: TObject; DataPtr: Pointer;
DataSize: Cardinal);
var
tmp:string;
begin
SetLength(tmp, DataSize);
Move(DataPtr^, tmp[1], DataSize);
G_data:=G_data+tmp; //전역변수에 이어 붙이기
if (ord(G_data[length(G_data)-1])=$0D) and (ord(G_data[length(G_data)])=$0A) then
G_data:=''; //전역변수 클리어
end;
이렇게 한번 해보시죠
04학번 님이 쓰신 글 :
: procedure TfrmMain.comport1ReceiveData(Sender: TObject; DataPtr: Pointer;
: DataSize: Cardinal);
: var
: tmp:string;
: begin
: tmp := stringOfChar(' ', DataSize );
: move( DataPtr^, pchar(tmp)^, DataSize );
: G_data:=G_data+tmp; //전역변수에 이어 붙이기
:
: if (ord(G_data[length(G_data)-1])=$0D) and (ord(G_data[length(G_data)])=$0A) then
: G_data:=''; //전역변수 클리어
:
: end;
:
: 이렇게 comport를 통해서 데이터를 받았습니다. 처음엔 메모에 이 데이터들이 맞게 오나 보려고 뿌려보았습니다. 그런데 계속 켜놓으니 윈도우 작업관리자의 프로세스 메모리가 계속 늘어 나는 것입니다. 그래서 메모장 때문에 그러려니 하고 메모장 뿌리는 부분를 삭제 했습니다. 그런데도 동일한 증상입니다 ㅜ
: 전역변수를 클리어 했는데 과연 왜그럴까요?
|