Q&A

  • [급질문]텍스트파일처리..도저히 모르겠어요..꼭좀 답변주세요..
아래와 같은 텍스트화일(정확하게는 유닉스서버에서 끌어온 자료)을

읽어서 파라독스 테이블에 입력시킬려구 하는데요..

어떻게 해야할지를 모르겠군요..--;



자세히 설명해 보겠습니다.

일정시간을 주기로 생성되는 파일이 있습니다.

파일명은 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#문자열이 들어감#=





몇일안에 처리해야 한는데..흠..고수님들의 답변부탁드리겠습니다.

그럼 이만..수고하십시요..

1  COMMENTS
  • Profile
    깨구락지 2000.12.05 00:36
    원하시는 일을 처리하려면 타이머 컴포넌트가 반드시 필요하겠군요.

    그리고 텍스트파일을 담당하는 부분과 문자열을 처리하는 부분, 요렇게 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(' Error !!');

    // 타이머 디바이스에 대한 정보를 얻어 온다.



    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(' Error !!');

    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#문자열이 들어감#=

    > 

    >

    > 몇일안에 처리해야 한는데..흠..고수님들의 답변부탁드리겠습니다.

    > 그럼 이만..수고하십시요..