Форум: "Основная";
Текущий архив: 2003.10.13;
Скачать: [xml.tar.bz2];
ВнизНаследник от TMySqlQuery из zeos lib Найти похожие ветки
← →
denkop (2003-10-02 10:04) [0]Состряпал простенький компонент, который логирует выполняемые запросы. Вот код:
unit MySqlLog;
interface
uses
SysUtils, Classes, DB, ZQuery, ZMySqlQuery, Windows, Dialogs;
type
TLogMySql = class(TMySqlQuery)
private
{ Private declarations }
LogFile : Text;
FFileName : TFileName;
FActiveLog : boolean;
function DirExists(Name: string): Boolean;
procedure AddLogItem(Item: string);
protected
{ Protected declarations }
public
{ Public declarations }
procedure ClearLog;
procedure ExecLogSQL;
published
{ Published declarations }
property FileName: TFileName read FFileName write FFileName;
property ActiveLog: Boolean read FActiveLog write FActiveLog;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents("Zeos Common", [TLogMySql]);
end;
procedure TLogMySql.AddLogItem(Item: string);
begin
if not FileExists(FFileName) then
begin
if not DirExists(ExtractFilePath(FFileName)) then
raise Exception.Create("Log file path not exist") else
ClearLog;
end;
System.Assign(LogFile, FFileName);
System.Append(LogFile);
System.Writeln(LogFile,Item);
System.Close(LogFile);
end;
function TLogMySql.DirExists(Name: string): Boolean;
var
Code: Integer;
begin
Code := GetFileAttributes(PChar(Name));
Result := (Code <> -1) and (FILE_ATTRIBUTE_DIRECTORY and Code <> 0);
end;
procedure TLogMySql.ExecLogSQL;
var
Str:string;
i:integer;
begin
ExecSQL;
if not FActiveLog then Exit;
Str:="# ["+DateTimeToStr(Now)+"]";
AddLogItem(Str);
for i:=0 to SQL.Count-1 do
begin
Str:=SQL.Strings[i];
if i=SQL.Count-1 then AddLogItem(Str+";");
end;
AddLogItem("");
end;
procedure TLogMySql.ClearLog;
begin
if not DirExists(ExtractFilePath(FFileName)) then
raise Exception.Create("Log file path not exist");
System.Assign(LogFile, FFileName);
ReWrite(LogFile);
System.Close(LogFile);
end;
end.
При попытке скомпилировать компонент получаю ошибку:
[Error] Never-build package "PMySqlLog" requires always-build package "ZMySQL5"
[Error] Never-build package "PMySqlLog" requires always-build package "ZDbware5"
[Error] Never-build package "PMySqlLog" requires always-build package "ZCommon5"
← →
pasha_golub (2003-10-02 11:26) [1]Так судя по всему ты его хочешь в пакет к Zeosam закинуть, а он те не дает. Добавь его в dclusr.dpk
← →
DenKop (2003-10-02 11:49) [2]Не совсем, вот код пакета:
package PMySqlLog;
{$R PMySqlLog.res}
{$ALIGN 8}
{$ASSERTIONS ON}
{$BOOLEVAL OFF}
{$DEBUGINFO ON}
{$EXTENDEDSYNTAX ON}
{$IMPORTEDDATA ON}
{$IOCHECKS ON}
{$LOCALSYMBOLS ON}
{$LONGSTRINGS ON}
{$OPENSTRINGS ON}
{$OPTIMIZATION ON}
{$OVERFLOWCHECKS OFF}
{$RANGECHECKS OFF}
{$REFERENCEINFO ON}
{$SAFEDIVIDE OFF}
{$STACKFRAMES OFF}
{$TYPEDADDRESS OFF}
{$VARSTRINGCHECKS ON}
{$WRITEABLECONST OFF}
{$MINENUMSIZE 1}
{$IMAGEBASE $400000}
{$DESCRIPTION "MySqlLog"}
{$IMPLICITBUILD OFF}
requires
rtl,
dbrtl,
vcl,
ZCommon5,
ZDbware5,
ZMySQL5,
designide,
vclactnband,
vclx,
bdertl,
vcldb;
contains
MySqlLog in "MySqlLog.pas";
end.
Не знаю почему, но отдельным пакетом он не становится, а вот dclusr.dpk стал без проблем...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.10.13;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c