[delphi]DLL どうやってデバッグするのさ ツールーバー開発とか。
2010/03/20
delphi
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.
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.
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.
: