プログラマメモ2 - programmer no memo2

[delphi]DLL どうやってデバッグするのさ ツールーバー開発とか。 2010/03/20

DLLのデバッグの仕方がわからなかったので、ファイルに出力して調べる。

フォームの開発とかでは、IDEのデバッガー使えばいいのはわかるんだけど、エクスプローラーに組み込むためのDLLつくってるときってどう動きを確認していいのかわからなくて安直にファイル出力して確認することに。

調べればいい方法はあるだうなー
とりあえず。

ファイルが削除できないとか、書けないという問題には下のコードでは対処できてない。。。

unit DebugLog;

interface

procedure MyLog(S: String);

implementation

uses
SysUtils;

var
INIT: Boolean;

procedure MyLog(S: String);
var
F: TextFile;
fileHandle: Integer;
sLOG: String;
sTIME: String;
begin
// ファイル決めうち
sLOG := 'c:\tmp\debug.log';

// これでいいのかな...
if not INIT then
begin
// ファイルを削除
DeleteFile(sLOG);
INIT := true;
end;

sTIME := FormatDateTime('yyyy-mm-dd hh:nn:ss', NOW);
S := Format('%s %s', [sTIME, S]);
// ファイルがなければ作成
if not FileExists(sLOG) then
begin
fileHandle := FileCreate(sLOG);
FileClose(fileHandle);
end;
AssignFile(F, sLOG);
Append(F);
Writeln(F, S);
CloseFile(F);
end;

end.


2010-03-21
ついでに別の実装、try except finalyを入れてみた。

unit DebugLog;

interface

uses Dialogs;

procedure MyLog(S: String);

implementation

uses
SysUtils;

var
INIT: Boolean;

procedure MyLog(S: String);
var
F: TextFile;
fileHandle: Integer;
sLOG: String;
sTIME: String;
begin
// ファイル決めうち
sLOG := 'c:\tmp\debug.log';

// これでいいのかな...
try
try
if not INIT then
begin
// ファイルを削除
DeleteFile(sLOG);
end;

sTIME := FormatDateTime('yyyy-mm-dd hh:nn:ss', NOW);
S := Format('%s %s', [sTIME, S]);
// ファイルがなければ作成
if not FileExists(sLOG) then
begin
fileHandle := FileCreate(sLOG);
FileClose(fileHandle);
end;
AssignFile(F, sLOG);
Append(F);
Writeln(F, S);
CloseFile(F);
except
on e: Exception do begin
ShowMessage( '[Err] ' + e.Message );
end;
end;
finally
INIT := true;
end;

end;

end.

: