아래와 같은 텍스트화일(정확하게는 유닉스서버에서 끌어온 자료)을
읽어서 파라독스 테이블에 입력시킬려구 하는데요..
어떻게 해야할지를 모르겠군요..--;
자세히 설명해 보겠습니다.
일정시간을 주기로 생성되는 파일이 있습니다.
파일명은 ROKO60_dduuss의 형식이구요..여기서 dduuss는 일자,시간,분입니다.
그리고 한개의 레코드 끝은=로 표현되구요 구분자는 #입니다.
아래 파일에서 처음 두 372 81000 하구 ROKO60 RKPH 260448부분은 제외하구 그 밑부분부터 넣어야 하구요..(이부분은 파일마다 변경됩니다.)
일정시간이 되면..자동으로 파일을 불러다가 테이블어 넣고 싶습니다.
그리고..또..데이타가 처리되는 모습이 안보였으면..좋겠거든요..
이것도 어떻게 처리해야할지 모르겠어요..
372 81000
ROKO60 RKPH 260448
1999#2#26#5#184#2422000#1999#2#26#5#30#홍길동#NE-SE#8-12#1.5-2.5#NE-SE#10-14#2 - 3#문자열이 들어감 #=
375 81000
ROKO60 RKPH 260448
1999#2#27#5#184#2422000#1999#2#26#5#30#아무개#NW-NE#14-18#3-4#NW-NE#14-18#3-4#문자열이 들어감#=
몇일안에 처리해야 한는데..흠..고수님들의 답변부탁드리겠습니다.
그럼 이만..수고하십시요..
그리고 텍스트파일을 담당하는 부분과 문자열을 처리하는 부분, 요렇게 3가지만 해주면
되겠네요. 그래셔! 무대뽀로 함 만들어 보았는디... 참고만 하십시오.
(타이머 부분은 카피한것입니다.)
---
unit Utim;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls,mmSystem, StdCtrls;
const
USR_TIMER_ELAPSED = WM_USER+100;
type
TForm1 = class(TForm)
Timer1: TTimer;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure myjob();
private
{ Private declarations }
FTimerID: UINT;
tInterval : UINT;
procedure EditCallback(var M : TMessage); message USR_TIMER_ELAPSED;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TimerProc(uTimer, uMessage : UINT; dwUser, dw1, dw2 : DWORD); stdcall;
begin
PostMessage(dwUser,USR_TIMER_ELAPSED,0,0);
// 멀티미디어 타이머 콜백 함수에는 대부분의 API가 사용 불가하다.
// 그러므로 다시 메시지를 사용자 메시지 루틴으로 돌려야 한다.
end;
procedure TForm1.FormCreate(Sender: TObject);
var
CommTimeouts : TCommTimeOuts;
TimeCaps : TTimeCaps;
begin
// 타이머 설정
tInterval := 600000; // 타이머 주기 설정 :10분
if timeGetDevCaps(@TimeCaps,sizeof(TimeCaps)) <> TIMERR_NOERROR then
raise Exception.Create('
// 타이머 디바이스에 대한 정보를 얻어 온다.
if tInterval < TimeCaps.wPeriodMin then
tInterval := TimeCaps.wPeriodMin // 실제 가능한 호출 주기보다 작으면
else
if tInterval > TimeCaps.wPeriodMax then
tInterval := TimeCaps.wPeriodMax; // 실제 가능한 호출 주기보다 크면
timeBeginPeriod(tInterval); // 타이머 주기를 지정한다.
FTimerID := timeSetEvent(tInterval,tInterval,@TimerProc,integer(handle),
TIME_PERIODIC);
// 타이머를 설정한다. 콜백 함수를 지정하고, TIME_PERIODIC를 사용하여
// 주기적으로 계속 호출되게 만든다.
if FTimerID = 0 then begin
timeEndPeriod(tInterval);
raise Exception.Create('
Close;
Exit; // 에러 처리 루틴
end;
end;
procedure TForm1.EditCallback(var M : TMessage);
begin
myjob() //원하는 job호출.당근 10분마다 처리되겠지요?
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
if FTimerID <> 0 then begin
timeKillEvent(FTimerID); // 타이머를 해제한다.
timeEndPeriod(tInterval); // 타이머 주기를 해제한다.
end;
end;
procedure TForm1.myjob();
var
a:string;
ps:byte;
f:textfile;
begin
assignfile(f,'c:abc.txt');
reset(f);
readln(f,a); //세번째 항목이 원하는 부분이므로...
readln(f,a);
readln(f,a);
closefile(f);
while a<>'=' do begin
ps:=pos('#',a);
showmessage(copy(a,1,ps-1)); //여기서 데이터를 처리하던가 아님 배열등으로...
a:=copy(a,ps+1,length(a));
end;
end;
end.
---
왕초보 wrote:
> 아래와 같은 텍스트화일(정확하게는 유닉스서버에서 끌어온 자료)을
> 읽어서 파라독스 테이블에 입력시킬려구 하는데요..
> 어떻게 해야할지를 모르겠군요..--;
>
> 자세히 설명해 보겠습니다.
> 일정시간을 주기로 생성되는 파일이 있습니다.
> 파일명은 ROKO60_dduuss의 형식이구요..여기서 dduuss는 일자,시간,분입니다.
> 그리고 한개의 레코드 끝은=로 표현되구요 구분자는 #입니다.
>
> 아래 파일에서 처음 두 372 81000 하구 ROKO60 RKPH 260448부분은 제외하구 그 밑부분부터 넣어야 하구요..(이부분은 파일마다 변경됩니다.)
>
> 일정시간이 되면..자동으로 파일을 불러다가 테이블어 넣고 싶습니다.
> 그리고..또..데이타가 처리되는 모습이 안보였으면..좋겠거든요..
> 이것도 어떻게 처리해야할지 모르겠어요..
>
>
> 372 81000
>
> ROKO60 RKPH 260448
>
> 1999#2#26#5#184#2422000#1999#2#26#5#30#홍길동#NE-SE#8-12#1.5-2.5#NE-SE#10-14#2 - 3#문자열이 들어감 #=
>
>
> 375 81000
>
> ROKO60 RKPH 260448
>
> 1999#2#27#5#184#2422000#1999#2#26#5#30#아무개#NW-NE#14-18#3-4#NW-NE#14-18#3-4#문자열이 들어감#=
>
>
> 몇일안에 처리해야 한는데..흠..고수님들의 답변부탁드리겠습니다.
> 그럼 이만..수고하십시요..