Verfasst: 09.04.2007 20:51
@AND51: Is das nich langsamer wenn ich das immer auf die disk schreibe als wenn ich das einmal flushe?, aber wenn das genau so schnell is mach ich das so^^
Code: Alles auswählen
;//###################################################//;
;//# Logfile.pbi #//;
;//###################################################//;
#EOL = Chr(13)
#Log_File = 10
#Log_FAIL = #False
#Log_OK = #True
#Log_Black = "<font color=black>"
#Log_Red = "<font color=red>"
#Log_Green = "<font color=green>"
#Log_Blue = "<font color=blue>"
#Log_Purple = "<font color=purple>"
Declare.b Log_Create(LogName.s)
Declare Log_WriteTopic(Topic.s, Size.b)
Declare Log_TextOut(Text.s)
Declare Log_TextOutN(Text.s)
Declare Log_TextOut_C(Color.s, List.b, Text.s)
Declare.b Log_ProcResult(Name.s, Result.b)
Procedure.b Log_Create(LogName.s)
If CreateFile(#Log_File,LogName+".html")
FileBuffersSize(#Log_File,0)
WriteStringN(#Log_File,"<html><head><title>Logfile</title></head>")
WriteStringN(#Log_File,"<body><font face='courier new'>")
Log_WriteTopic("Logfile", 5)
CompilerIf #PB_Compiler_Debugger
WriteStringN(#Log_File,"BUILD: DEBUG<br>")
CompilerElse
WriteStringN(#Log_File,"BUILD: RELEASE<br>")
CompilerEndIf
WriteStringN(#Log_File,FormatDate("%hh:%ii:%ss [%dd.%mm.%yyyy]",Date())+"<br><br>")
ProcedureReturn #True
EndIf
ProcedureReturn #False
EndProcedure
Procedure Log_WriteTopic(Topic.s, Size.b)
WriteStringN(#Log_File,"<table cellspacing='0' cellpadding='0' width='100%%' bgcolor='#DFDFE5'>")
WriteStringN(#Log_File,"<tr>"+#EOL+"<td>"+#EOL+"<font face='arial' size='"+Str(Size)+"'>")
WriteStringN(#Log_File,Topic)
WriteStringN(#Log_File,"</font>"+#EOL+"</td>"+#EOL+"</tr>"+#EOL+"</table><br>")
EndProcedure
Procedure Log_TextOut(Text.s)
WriteString(#Log_File,Text)
EndProcedure
Procedure Log_TextOutN(Text.s)
WriteStringN(#Log_File,Text+"<br>")
EndProcedure
Procedure Log_TextOut_C(Color.s, List.b, Text.s)
If List = #True : WriteStringN(#Log_File,"<li>") : EndIf
WriteStringN(#Log_File,Color+Text+"</font>")
If List = #False : WriteStringN(#Log_File,"<br>") : Else : WriteStringN(#Log_File,"</li>") : EndIf
EndProcedure
Procedure.b Log_ProcResult(Name.s, Result.b)
If Result = #Log_OK
WriteStringN(#Log_File,"<table width='100%%' cellSpacing='1' cellPadding='5' border='0' bgcolor='#C0C0C0'>")
WriteStringN(#Log_File,"<tr><td bgcolor='#FFFFFF' width='35%%'>"+Name+"</TD>")
WriteStringN(#Log_File,"<td bgcolor='#FFFFFF' width='30%%'><font color ='green'>OK</FONT></TD><td bgcolor='#FFFFFF'")
WriteStringN(#Log_File,"width='35%%'>-/-</TD></tr></table>")
Else
WriteStringN(#Log_File,"<table width='100%%' cellSpacing='1' cellPadding='5' border='0' bgcolor='#C0C0C0'>")
WriteStringN(#Log_File,"<tr><td bgcolor='#FFFFFF' width='35%%'>"+Name+"</TD>")
WriteStringN(#Log_File,"<td bgcolor='#FFFFFF' width='30%%'><font color ='red'>ERROR</FONT></TD><td bgcolor='#FFFFFF'")
WriteStringN(#Log_File,"width='35%%'>-/-</TD></tr></table>")
EndIf
ProcedureReturn Result
EndProcedure
Code: Alles auswählen
XIncludeFile "Logfile.pb"
Log_Create("TestLog") ;// Erstellt die Log.HTML
Global A.b = 10
Global B.b = 5
Global C.b = 0
Procedure.b Proc(Result.b)
ProcedureReturn Result
EndProcedure
Log_WriteTopic("A + B", 5) ;// Erstellt eine Überschrift, 5 = Größe
Log_TextOut("A = "+Str(A)) ;// Schreibt einen String
Log_TextOutN("\ B = "+Str(B)) ;// Schreibt einen String mit einem End Of Line(HTML)
Log_TextOutN("")
Log_TextOut_C(#Log_Blue, #False, "Blau") ;// Erstellt einen farbigen String
Log_TextOut_C(#Log_Green, #True, "Aufzählung") ;// Erstellt einen farbigen String, mit einem Aufzählungszeichen
Log_TextOut_C(#Log_Green, #True, "Aufzählung") ;// Erstellt einen farbigen String, mit einem Aufzählungszeichen
Log_ProcResult("Proc(#True):",Proc(#True)) ;//
Log_ProcResult("Proc(#False):",Proc(#False)) ;// Zeigt ob die Prcedure funktioniert hat