Q&A

  • 많고 다양한 데이타를 파일로 저장하는 방법?
그냥..구분자를두고 텍스트 파일로 저장하고 다시 짤라서 쓰는게 좋은가요??

아니면 블럭라이트로 하니씩 계속쓰는게 좋을까요??

스트링도 있고 인테저도 있고..뒤죽박쭉 클래스가 하나있는데..이걸 모조리 저장할려구합니다.

가장 쉽고 깔끔한 방법 아시는 분 알려주세요~~~

아래는....그...뒤쭉박쭉 클래스입니다..변수는 거의 다 저장해야 합니다..



type

TLogProcess = class (TObject)

public

Mail_E_N, Mail_ES_N, Mail_ER_N : Integer;

Mail_EA_N, Mail_RA_N, Mail_SA_N : Real;

Result_S_N, Result_F_N, Result_D_N : Integer;

Add_RA_N, Add_SA_N: Real;

Host_RA_N, Host_SA_N: Real;

Host_U_N, Add_U_N : Integer;

Mail_E_B , Mail_ES_B, Mail_ER_B : Int64;

Mail_EA_B, Mail_RA_B, Mail_SA_B : Real;

Result_D_B, Result_F_B, Result_S_B : Int64;

Add_SA_B, Add_RA_B : Real;

Host_U_B, Add_U_B : Int64;

Host_RA_B, Host_SA_B : Real;

Delay_E, Delay_A, Delay_BPS : Real;

Start_DT : TDateTime;

EMail_String, Host_String : String;

Email_ID, Host : String;



Sendnum21 : Array[0..23] of Integer;

Recnum21 : Array[0..23] of Integer;

TotalRec21 : Integer;

TotalSnd21 : Integer;



Sendnum22 : Array[0..23] of Integer;

Recnum22 : Array[0..23] of Integer;

TotalRec22 : Integer;

TotalSnd22 : Integer;



Sendnum23 : Array[0..6] of Integer;

Recnum23 : Array[0..6] of Integer;

TotalRec23 : Integer;

TotalSnd23 : Integer;



Sendnum24 : Array[0..6] of Integer;

Recnum24 : Array[0..6] of Integer;

TotalRec24 : Integer;

TotalSnd24 : Integer;



AnalRecord25 : Array of TAnalRecord;

AnalRecord26 : Array of TAnalRecord;

AnalRecord27 : Array of TAnalRecord;

AnalRecord28 : Array of TAnalRecord;

AnalRecord29 : Array of TAnalRecord;

ErrorMaxNum : Integer;



Header : String;

CurrentLog : String;

pCurrentLog : pChar;

StartLine : PChar;

LogLine : Array[0..10] of String;

SizeofFile,SpPos : Integer;

HostMaxNum : Integer; // host의 총갯수

MailMaxNum : Integer; // e-mail의 총갯수

LogArray : Array of LongInt; // 인덱싱 데이타 저장

FH : File of Char; // 파일 핸들

TotalLog : Integer; // 전체 라인수(인덱싱된 로그라인)

LogRecord : TLogRecord; // 분석된 로그라인을 저장할 공간

FileName: TFileName; // 큐멜로그 파일이름

BlockBegin : Integer; //블럭시작의 파일포인터

BlockEnd : Integer; // 블럭끝의 파일포인터

MaxLine : Integer; // 한번에 로딩 할 최대 라인

LogString : pChar; // 로딩된 블럭 데이타

LogSize : Integer; // 로그 한 줄의 최대 크기

Buffer : PChar; // 인덱싱을위한 버터..

Function HighHost(StartNum: Integer ; Kind : Integer; AnalRecord: Array of TAnalRecord): Integer; // 가장큰 TanalRecord를 구함

Procedure SortHost(Kind : Integer; var AnalRecord: Array of TAnalRecord);

//TanalRecord를 소팅함 Kind - 1:Send Host, 2:Receive Host, 3:Send Mail, 4:Receive Mail

Procedure MakeAnalData; // 로그분석 엔진!!!!! Core!!!

Procedure OpenLogFile; // 파일열고 인덱싱

procedure GetLogRecord(RequestLine: Integer); // 요청라인의 로그를 분석 해서 LogRecord에 저장

Function UnixtimetoDateTime(Unixtime: Integer): TDatetime; //n64 UnixTimeStamp to TDatetime

Function GoThere(Here : Double): Integer; // 특정시간의 로그라인으로 잽싸게 이동

// procedure AnalDataSave; // 로그분석 데아타 저장

// procedure AnalDataLoad; // 로그분석 데아타 로딩

{ Public declarations }

end;

1  COMMENTS
  • Profile
    타락천사 2000.09.27 23:23
    안녕하세여. 타락임다..^^



    변수들을 record에 카피하구.. record 단위로 쓰는게 편합니다..



    클래스는 저장이 안됩니다..



    사실 저장이 되긴 하는데, 직관적이구 쉬운 방법이 아닙니다..ㅠㅠ



    아마, 모든 클래스가 기본적으로 TObject 를 상속받아서 그런거 같습니다..



    즐푸하세여..



    타락천사.......





    김경태 wrote:

    > 그냥..구분자를두고 텍스트 파일로 저장하고 다시 짤라서 쓰는게 좋은가요??

    > 아니면 블럭라이트로 하니씩 계속쓰는게 좋을까요??

    > 스트링도 있고 인테저도 있고..뒤죽박쭉 클래스가 하나있는데..이걸 모조리 저장할려구합니다.

    > 가장 쉽고 깔끔한 방법 아시는 분 알려주세요~~~

    > 아래는....그...뒤쭉박쭉 클래스입니다..변수는 거의 다 저장해야 합니다..

    >

    > type

    > TLogProcess = class (TObject)

    > public

    > Mail_E_N, Mail_ES_N, Mail_ER_N : Integer;

    > Mail_EA_N, Mail_RA_N, Mail_SA_N : Real;

    > Result_S_N, Result_F_N, Result_D_N : Integer;

    > Add_RA_N, Add_SA_N: Real;

    > Host_RA_N, Host_SA_N: Real;

    > Host_U_N, Add_U_N : Integer;

    > Mail_E_B , Mail_ES_B, Mail_ER_B : Int64;

    > Mail_EA_B, Mail_RA_B, Mail_SA_B : Real;

    > Result_D_B, Result_F_B, Result_S_B : Int64;

    > Add_SA_B, Add_RA_B : Real;

    > Host_U_B, Add_U_B : Int64;

    > Host_RA_B, Host_SA_B : Real;

    > Delay_E, Delay_A, Delay_BPS : Real;

    > Start_DT : TDateTime;

    > EMail_String, Host_String : String;

    > Email_ID, Host : String;

    >

    > Sendnum21 : Array[0..23] of Integer;

    > Recnum21 : Array[0..23] of Integer;

    > TotalRec21 : Integer;

    > TotalSnd21 : Integer;

    >

    > Sendnum22 : Array[0..23] of Integer;

    > Recnum22 : Array[0..23] of Integer;

    > TotalRec22 : Integer;

    > TotalSnd22 : Integer;

    >

    > Sendnum23 : Array[0..6] of Integer;

    > Recnum23 : Array[0..6] of Integer;

    > TotalRec23 : Integer;

    > TotalSnd23 : Integer;

    >

    > Sendnum24 : Array[0..6] of Integer;

    > Recnum24 : Array[0..6] of Integer;

    > TotalRec24 : Integer;

    > TotalSnd24 : Integer;

    >

    > AnalRecord25 : Array of TAnalRecord;

    > AnalRecord26 : Array of TAnalRecord;

    > AnalRecord27 : Array of TAnalRecord;

    > AnalRecord28 : Array of TAnalRecord;

    > AnalRecord29 : Array of TAnalRecord;

    > ErrorMaxNum : Integer;

    >

    > Header : String;

    > CurrentLog : String;

    > pCurrentLog : pChar;

    > StartLine : PChar;

    > LogLine : Array[0..10] of String;

    > SizeofFile,SpPos : Integer;

    > HostMaxNum : Integer; // host의 총갯수

    > MailMaxNum : Integer; // e-mail의 총갯수

    > LogArray : Array of LongInt; // 인덱싱 데이타 저장

    > FH : File of Char; // 파일 핸들

    > TotalLog : Integer; // 전체 라인수(인덱싱된 로그라인)

    > LogRecord : TLogRecord; // 분석된 로그라인을 저장할 공간

    > FileName: TFileName; // 큐멜로그 파일이름

    > BlockBegin : Integer; //블럭시작의 파일포인터

    > BlockEnd : Integer; // 블럭끝의 파일포인터

    > MaxLine : Integer; // 한번에 로딩 할 최대 라인

    > LogString : pChar; // 로딩된 블럭 데이타

    > LogSize : Integer; // 로그 한 줄의 최대 크기

    > Buffer : PChar; // 인덱싱을위한 버터..

    > Function HighHost(StartNum: Integer ; Kind : Integer; AnalRecord: Array of TAnalRecord): Integer; // 가장큰 TanalRecord를 구함

    > Procedure SortHost(Kind : Integer; var AnalRecord: Array of TAnalRecord);

    > //TanalRecord를 소팅함 Kind - 1:Send Host, 2:Receive Host, 3:Send Mail, 4:Receive Mail

    > Procedure MakeAnalData; // 로그분석 엔진!!!!! Core!!!

    > Procedure OpenLogFile; // 파일열고 인덱싱

    > procedure GetLogRecord(RequestLine: Integer); // 요청라인의 로그를 분석 해서 LogRecord에 저장

    > Function UnixtimetoDateTime(Unixtime: Integer): TDatetime; //n64 UnixTimeStamp to TDatetime

    > Function GoThere(Here : Double): Integer; // 특정시간의 로그라인으로 잽싸게 이동

    > // procedure AnalDataSave; // 로그분석 데아타 저장

    > // procedure AnalDataLoad; // 로그분석 데아타 로딩

    > { Public declarations }

    > end;