Q&A

  • 타이머 문제 일까요?
프로그램에서 일정 시간 간격으로 파일의 새로운 데이타를 읽어서 db에 저장해야 합니다.
예를 들어 1분 간격으로 텍스트 파일에 접근해서 새롭게 추가된 데이타를 읽어서 db에 저장해야죠.
그런데 Timer사용했었는데요.  테스트중에 실행,종료,실행,종료 반복하다보니
시스템 자원이 바닥났다고? 나오고 디비에 데이타가 들어가질않네요.
뭐가 문제 일까요?
소스는 다음과 같아요.
procedure TForm1.Timer1Timer(Sender: TObject);
var
F1: TextFile;
S: String[255];
startdate:TDateTime;
tmpstmp:TTimeStamp;
today,currtime:TDateTime;
List: TStringList;
i   : integer;
tYear,tMonth,tDay,tHour,tMin,tSec,MSec:Word;
date,time,value1, value2,year,temp,hh,mm : string;

begin
   S:='';
   Table1.Open;

   AssignFile(F1, 'c:/pc208w/test1.dat');
   Reset(F1);
   i := 0;
   try
     while not Eof(F1) do
     begin
       Readln(F1,S);
       List := TStringList.Create;
       List.CommaText := s;
       year   := List[1];
       date   := List[2];          
       time   := List[3];
       value1 := List[4];
  
      startdate := EncodeDate(1899,12,30);
       tmpstmp := DateTimeToTimeStamp(startdate);
       tmpstmp.Date := tmpstmp.Date + StrToInt(date);
       today := TimeStampToDateTime(tmpstmp);
       DecodeDate(today,tYear,tMonth,tDay);
       Label1.Caption := IntToStr(i);
      //DecodeTime(StrToInt(time),tHour,tMin,tSec,MSec);
       //currtime := EncodeTime(tHour,tMin,tSec,MSec);
       if Length(time)=3 then
       begin
         hh:='0'+Copy(time,0,1);

         mm := Copy(time,2,2);
       end
       else if Length(time)=4 then
       begin
         hh := Copy(time,0,2);
         mm  := Copy(time,3,2);
       end
       else
        begin
         hh  := '00';
         mm  := '00';
       end;

       today := EncodeDate(StrToInt(year),tMonth,tDay);
  //     currtime := EncodeTime(tHour,tMin,0,0);
       table1.Insert;
       table1['Date'] := today;
       table1['Time'] :=hh + ':'+ mm;
       table1['Value1'] := value1;
      // table1['Value2'] := value2;
       table1.Post;
       S:='';
       date   := '';
       time   := '';
       value1 := '';
      // value2 := '';
      
   end;
   finally
     CloseFile(F1);
     Table1.Close;
   end;

타이머 간격은 30초로 되 있어요.
end;
2  COMMENTS