Tach igel!
Ich habe ein bisschen herumgefriemelt und bin dabei auch auf die TAdLog Klasse gestoßen. Ich finde den Log noch etwas unübersichtlich. Was hältst du davon:
Delphi-Quellcode:
procedure TAdLog.AddMessage(AMessage: TAdLogMessage);
const
cTabulator = 20;
var
Space:integer;
LMessage:string;
i:integer;
begin
LMessage := '[' + AMessage.Typ + ']';
Space := cTabulator - length(AMessage.Typ) - 2;
if Space < 1 then Space := 1;
for i := 0 to Space do
LMessage := LMessage + ' ';
LMessage := LMessage + AMessage.Sender + ':';
Space := cTabulator - length(AMessage.Sender) - 1;
if Space < 1 then Space := 1;
for i := 0 to Space do
LMessage := LMessage + ' ';
LMessage := LMessage + AMessage.Text;
self.Items.Add(LMessage);
if FileName <> '' then
begin
SaveToFile(FileName);
end;
end;
Ist nur so eine Idee von mir. Ich hab bei mir eine Unterklasse angelegt und mir funktionen geschrieben, die den Error typ nicht als Parameter brauchen (z.B. procedure LogError(const aLog: String; const Sender:String); => würde den Typ "Error" haben). Dabei ist mir etwas aufgefallen, was ich blöd finde:
1. Die Items sind nicht abrufbar, da sie in private deklariert sind. Wenn ich die Funktion oben in meine Unterklasse einbauen will, muss ich da aber drauf zugreifen können.
2. Das gleiche gilt für die property Log im AdDraw. Wenn ich nun meine Unterklasse von TAdLog für die Engine nutzen will, muss ich das ja ändern können. Vielleicht spricht etwas anderes dafür, das ganze Read-Only zu machen, das ganze war nur so'ne Idee von mir.
Wenn du oben geposteten Code in die AdDraws.pas übernehmen solltest würde ich mich natürlich freuen, ich habe den nämlich jetzt einfach in meine AdDraws.pas eingebaut. So brauche ich bei neuen Andorra Versionen nicht wieder diesen Code ändern... Wenn nicht, dann gib mir die Items frei, damit ich das in meine Unterklasse bauen kann! ^^
Bääääär