SyntaxHighlighter 3.0.83

Fork Me On GitHub
whats new?
SyntaxHighlighter is an open source Java Script client side code syntax highlighter.
donate download installation autoloader configuration @syntaxhighlight

Delphi Example

      { $OmniXML: OmniXML/extras/OmniXMLShared.pas,v 1.1 2004/06/07 13:06:32 mr Exp $ }
      
      {$WEAKPACKAGEUNIT ON}
      
      (*:XML helper unit. Contains class to manage shared XML document (stored in the
         resizable shared memory).
         @author Primoz Gabrijelcic
         @desc <pre>
         (c) 2002 Primoz Gabrijelcic
         Free for personal and commercial use. No rights reserved.
      
         Author            : Primoz Gabrijelcic
         Creation date     : 2002-05-13
         Last modification : 2002-09-24
         Version           : 1.01
      </pre>*)(*
         History:
           1.01: 2002-09-24
             - Added property TGpSharedXML.CachedXML.
           1.0: 2002-05-13
             - Created.
      *)
      
      unit OmniXMLShared;
      
      interface
      
      uses
        Windows,
        GpSharedMemory,
        OmniXMLProperties;
      
      type
        {:Shared XML document.
        }
        TGpSharedXML = class
        private
          sxOwnsXML     : boolean;
          sxSharedMemory: TGpSharedMemory;
          sxXMLDoc      : TGpXMLDoc;
        protected
          function  Acquire(forWriting: boolean; timeout: DWORD): TGpXMLDoc;
          function  GetName: string;
          function  GetXML: TGpXMLDoc;
        public
          constructor Create(sharedMemoryName: string; xmlDoc: TGpXMLDoc;
            maxSize: cardinal; ownsXML: boolean = true); virtual;
          destructor  Destroy; override;
          function  BeginUpdate(timeout: DWORD): TGpXMLDoc; virtual;
          procedure EndUpdate; virtual;
          function  Read(timeout: DWORD): TGpXMLDoc; virtual;
          property  CachedXML: TGpXMLDoc read sxXMLDoc;
          property  Name: string read GetName;
          property  XML: TGpXMLDoc read GetXML;
        end; { TGpSharedXML }
      
        {:Shared XML list.
        }
        TGpSharedXMLList = class(TGpSharedXML)
        public
          constructor Create(sharedMemoryName: string; xmlList: TGpXMLDocList;
            maxSize: cardinal; ownsXML: boolean = true); reintroduce; virtual;
          function Count: integer;
        end; { TGpSharedXMLList }
      
      implementation
      
      uses
      {$IFDEF DebugXML}
        OmniXMLUtils,
        uDbg,
      {$ENDIF DebugXML}
        SysUtils;
      
      { TGpSharedXML }
      
      function TGpSharedXML.Acquire(forWriting: boolean;
        timeout: DWORD): TGpXMLDoc;
      begin
        Result := nil;
        if sxSharedMemory.AcquireMemory(forWriting, timeout) <> nil then begin
            if (not sxSharedMemory.Modified) or
               sxXMLDoc.LoadFromStream(sxSharedMemory.AsStream)
            then
              Result := sxXMLDoc;
          if not assigned(Result) then
            sxSharedMemory.ReleaseMemory;
          {$IFDEF DebugXML}
          if assigned(Result) then
            Debugger.LogFmtMsg('Acquire: %s',[XMLSaveToString(sxXMLDoc.XMLDoc)]);
          {$ENDIF DebugXML}
        end;
      end; { TGpSharedXML.Acquire }
      
      function TGpSharedXML.BeginUpdate(timeout: DWORD): TGpXMLDoc;
      begin
        Result := Acquire(true, timeout);
      end; { TGpSharedXML.BeginUpdate }
      
      constructor TGpSharedXML.Create(sharedMemoryName: string; xmlDoc: TGpXMLDoc;
        maxSize: cardinal; ownsXML: boolean);
      begin
        inherited Create;
        sxSharedMemory := TGpSharedMemory.Create(sharedMemoryName, 0, maxSize);
        sxXMLDoc := xmlDoc;
        sxOwnsXML := ownsXML;
      end; { TGpSharedXML.Create }
      
      destructor TGpSharedXML.Destroy;
      begin
        if sxOwnsXML then
          FreeAndNil(sxXMLDoc)
        else
          sxXMLDoc := nil;
        FreeAndNil(sxSharedMemory);
        inherited;
      end; { TGpSharedXML.Destroy }
      
      procedure TGpSharedXML.EndUpdate;
      begin
        {$IFDEF DebugXML}
        Debugger.LogFmtMsg('Release: %s',[XMLSaveToString(sxXMLDoc.XMLDoc)]);
        {$ENDIF DebugXML}
        if sxSharedMemory.IsWriting then 
          sxXMLDoc.SaveToStream(sxSharedMemory.AsStream);
        if sxSharedMemory.Acquired then
          sxSharedMemory.ReleaseMemory;
      end; { TGpSharedXML.EndUpdate }
      
      function TGpSharedXML.GetName: string;
      begin
        Result := sxSharedMemory.Name;
      end; { TGpSharedXML.GetName }
      
      function TGpSharedXML.GetXML: TGpXMLDoc;
      begin
        if not sxSharedMemory.Acquired then
          Result := nil
        else
          Result := sxXMLDoc;
      end; { TGpSharedXML.GetXML }
      
      function TGpSharedXML.Read(timeout: DWORD): TGpXMLDoc;
      begin
        Result := Acquire(false, timeout);
        EndUpdate;
      end; { TGpSharedXML.Read }
      
      { TGpSharedXMLList }
      
      function TGpSharedXMLList.Count: integer;
      begin
        Result := (XML as TGpXMLDocList).Count;
      end; { TGpSharedXMLList.Count }
      
      constructor TGpSharedXMLList.Create(sharedMemoryName: string;
        xmlList: TGpXMLDocList; maxSize: cardinal; ownsXML: boolean);
      begin
        inherited Create(sharedMemoryName, xmlList, maxSize, ownsXML);
      end; { TGpSharedXMLList.Create }
      
      {$IFDEF DebugXML}
      initialization
        NxStartDebug;
      finalization
        NxEndDebug;
      {$ENDIF DebugXML}
      end.
      
Brush nameBrush aliasesFile name
ActionScript3as3, actionscript3shBrushAS3.js
Bash/shellbash, shellshBrushBash.js
ColdFusioncf, coldfusionshBrushColdFusion.js
C#c-sharp, csharpshBrushCSharp.js
C++cpp, cshBrushCpp.js
CSScssshBrushCss.js
Delphidelphi, pas, pascalshBrushDelphi.js
Diffdiff, patchshBrushDiff.js
Erlangerl, erlangshBrushErlang.js
GroovygroovyshBrushGroovy.js
JavaScriptjs, jscript, javascriptshBrushJScript.js
JavajavashBrushJava.js
JavaFXjfx, javafxshBrushJavaFX.js
Perlperl, plshBrushPerl.js
PHPphpshBrushPhp.js
Plain Textplain, textshBrushPlain.js
PowerShellps, powershellshBrushPowerShell.js
Pythonpy, pythonshBrushPython.js
Rubyrails, ror, rubyshBrushRuby.js
ScalascalashBrushScala.js
SQLsqlshBrushSql.js
Visual Basicvb, vbnetshBrushVb.js
XMLxml, xhtml, xslt, html, xhtmlshBrushXml.js