다시 질문을 올립니다.
### 작업의 조건
[ 하나 ]
클라리언트가 서버에 텍스트 데이타를 송신하고,
즉시 서버로 부터 자알~ 받았다는 전송확인을 텍스트 데이타로 받음.
[ 둘 ]
수신 데이타의 특정 위치에서 10 바이트를 읽어와서 3 ~ 5개 디비 테이블을 쿼리하고, 수정하고, 저장 함.
송/수신 내용을 로그화일로 기록함 (예 : c:\LOG_FILE\20060409.txt)
송신 데이타를 DB에 저장함.
수신 데이타를 DB에 저장함.
[ 셋 ]
위의 작업 '하나' 와 '둘' 은 송/수신된 텍스트의 라인 수 만큼 계속 반복되어 수행 함.
While EOF(수십건 혹은 수백건) do
Begin
End;
### 질문
[ 하나 ]
위에서 명기한 [둘] 의 작업을 아래의 예와 같이 TClientHandleThread.Execute 의 Synchronize(HandleInput)으로 처리 하는게 올바른 것인지,
[ 둘 ]
아니면 Synchronize와는 전혀 상관이 없이 Send_Message 프로시져를 호출한 다음에 처리를 하는것이 올은 것인지.
### 여러분의 고견을 기다립니다.
감사합니다.
Procedure Send_Message
begin
.
.
WriteBuffer(aBuffer, SizeOf(aBuffer), TRUE);
.
.
.
end;
procedure TClientHandleThread.Execute;
begin
while not Terminated do
begin
if not ClientFrmMain.Client.Connected then
begin
Terminate;
ClientFrmMain.Client.Disconnect;
end
else
try
ClientFrmMain.Client.ReadBuffer(CB, 300);
Synchronize(HandleInput);
except
end;
end;
end;
//=========================================================================
// 서버측으로 부터 들어오는 텍스트 데이타를 로그화일로 기록
// 수신한 텍스트 데이타를 근거로 쿼리, 수정, 저장 닥업등 수행
//=========================================================================
procedure TClientHandleThread.HandleInput;
begin
// 텍스트 데이타 수신 (업무 A 에 해당하는)
if ((Copy(CB.Comm_Message, 20, 4) = '0810') then
begin
수신 데이타 A 에 대한 로그 작성
쿼리 작업..
수정 작업..
저장 작업..
end;
// 텍스트 데이타 수신 (업무 B 에 해당하는)
if ((Copy(CB.Comm_Message, 20, 4) = '0100') then
begin
수신 데이타 B 에 대한 로그 작성
쿼리 작업..
수정 작업..
저장 작업..
end;
end;
//=========================================================================
//서버와 Connect 함.
//=========================================================================
Procedure TClientFrmMain.ClientConnect;
begin
서버로 연결작업...
End;