掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
イベントログをCSV形式で出力するには? (ID:808)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
すみません、再度質問させて下さい。 にしのさんに教えてもらったサイトに別記事でログがありました。 http://leed.issp.u-tokyo.ac.jp/~takeuchi/delphi/browse.cgi?index=061955 こちらをベースにソースを構築しようとしましたが、値をうまく取得 することができません。 (そっくりそのままコピーしても問題は解消されませんでした。) コンソールアプリケーションにて、 API(BackupEventLog)を利用したEVT形式でのデータ取得と、 API(ReadEventLog)を利用したCSV形式でのデータ取得が目的です。 API(BackupEventLog)は問題なく処理されますので、イベントログ のオープン、クローズは問題ありません。 API(ReadEventLog)も問題なく処理されますが、その後データを表 示させようとした場合に、クラス例外が発生します。 しかしデバッカ上では、問題なく値が入っているように見えます。 ※デバッカ上でマウスをその項目に重ねると値が見えます。 値の取得の仕方が悪いのでしょうか? サンプルをそのままコピーしてもダメだったので、 別に悪いことろがあるのでは?と思っていますが 箇所を特定できません。 よろしくお願いします。 Function ReadEventLog(hEventLog:THandle; Flags:dword; RecordNo:dword; buf:Pointer; BufSize:dword; ReadBytes:dword; NextSize:dword) : BOOL; stdcall; external 'advapi32.dll' name 'ReadEventLogA'; var hEventLog : THandle; var Result : BOOL; var LogMode : PChar; const EVENTLOG_SEQUENTIAL_READ = $0001; EVENTLOG_SEEK_READ = $0002; EVENTLOG_FORWARDS_READ = $0004; EVENTLOG_BACKWARDS_READ = $0008; CRLF = #13 + #10; var lpBuf: Pointer; ReadFlags, RecordOffset, NumberOfByteRead, ByteRead, MinNumberOfBytesNeeded, BufLen: Cardinal; X: Char; PELR: TPELR; S: String; C: DWORD; begin //イベントログのオープン処理 //EVT形式でのデータ取得の場合、 //API(BackupEventLog)を使ってデータ取得 //以下、CSV形式でのデータ取得の場合 begin ReadFlags := EVENTLOG_FORWARDS_READ or EVENTLOG_SEQUENTIAL_READ; ByteRead := 0; RecordOffset := 0; lpbuf := @X; NumberOfByteRead := 0; MinNumberOfBytesNeeded := 0; ReadEventLog(hEventLog, ReadFlags, RecordOffset, lpBuf, NumberOfByteRead, ByteRead, MinNumberOfBytesNeeded); BufLen := MinNumberOfBytesNeeded; NumberOfByteRead := BufLen; GetMem(lpBuf,BufLen); try ReadEventLog(hEventLog, ReadFlags, RecordOffset, lpBuf, NumberOfByteRead, ByteRead, MinNumberOfBytesNeeded); PELR := lpbuf; C := PELR^.EventID; <---問題発生箇所 S := IntToStr(C); writeln(S); except if Assigned(lpBuf) then FreeMem(lpBuf); end; FreeMem(lpBuf); end; //イベントのクローズ end.
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.