If I understood correctly, you want to override the meaning of WriteLn (for programs and units using globals.pas), right? In that case, just create Write(Ln) procedure in globals unit. That will override the system unit one. However, you can't have the one with variable number of arguments, at least not in the system unit style one. Here's a compilable example:
{$mode objfpc} // you have to either in ObjFPC or Delphi mode for array of const to work var g: Boolean = true; // replace this with your callback variable procedure WriteLn(args: array of const); var i: Integer; begin if not g then System.WriteLn('g') else begin for i := Low(args) to High(args) do case args[i].vtype of vtinteger : System.Write(args[i].vinteger); vtboolean : System.Write(args[i].vboolean); vtchar : System.Write(args[i].vchar); vtextended : System.Write(args[i].VExtended^); vtString : System.Write(args[i].VString^); vtPointer : System.Write(Longint(args[i].VPointer)); vtPChar : System.Write(args[i].VPChar); vtObject : System.Write(args[i].VObject.Classname); vtClass : System.Write(args[i].VClass.Classname); vtAnsiString : System.Write(AnsiString(args[i].VAnsiString)); else System.Write(args[i].vtype); end; System.WriteLn; end; end; begin WriteLn([1]); // yep, you need the angel bracket WriteLn([1,2]); WriteLn([1,3]); WriteLn(['this is ',3,' args']); end. -- View this message in context: http://free-pascal-lazarus.989080.n3.nabble.com/Lazarus-WriteLn-back-to-the-GUI-tp4033934p4033950.html Sent from the Free Pascal - Lazarus mailing list archive at Nabble.com. -- _______________________________________________ Lazarus mailing list Lazarus@lists.lazarus.freepascal.org http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus