Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.13;
Скачать: CL | DM;

Вниз

Наследник от 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.023 c
1-40449
Zheks
2003-10-03 12:13
2003.10.13
Как обратиться к текущему времени таймера?


3-40304
Макс
2003-09-20 10:41
2003.10.13
Помогите разобраться, Pllzz


1-40468
Vladimir
2003-10-02 10:56
2003.10.13
Как определить, содержит ли строка допустимый путь и имя файла


7-40711
__Ed__
2003-07-25 18:47
2003.10.13
Обновление списка оборудования в системе


1-40456
ProLam
2003-10-02 17:11
2003.10.13
Цвет отдельного пикселя