Format C# Code

[Top]  [Chapter]  [Previous]  [Next]

This C# example formats C-Sharp code in a very simple way. It normalizes all paragraphs in the text. It also removes the character attributes from all characters and make the complete text use Courier New, 9pt. The code remove all spaces from the beginning of each paragraph and detect comments and nesting using { }. Depending on the nesting level tabs are inserted. We have applied this method to the code itself to format it.

 

IWPMemo Memo;

Memo = wpdllInt1.Memo;

 

Memo.TextCursor.CPPosition = 0;

IWPParInterface par = Memo.CurrPar;

int nesting = 0;

bool neststart;

while(par!=null)

{

       // Remove all paragraph and character attributes

       par.ParAClear(1);

       // and apply new attributes as paragraph attributes

       par.ParASet((int)WPAT.CharFont, par.ConvertFontnameToIndex("Courier New"));

       par.ParASet((int)WPAT.CharFontSize, 9 * 100); // ==9pt

       

       // Remove all spaces at the beginning

       while((par.GetChar(0)<=32)&&(par.GetChar(0)>0))

       par.DeleteChar(0,1);

       // This paragraph starts with // - make it green + italic since it is a comment

       if ((par.GetChar(0)==(int)'/')&&(par.GetChar(1)==(int)'/'))

       {

               par.ParASet((int)WPAT.CharColor, par.ConvertColorToIndex(0x00005E00));

               par.ParAAddBits((int)WPAT.CharStyleON, 2);

               par.ParAAddBits((int)WPAT.CharStyleMask, 2);

       }

       // else it is a closing }

       else if (par.GetChar(0)==(int)'}') nesting--;

       neststart = (par.GetChar(0)==(int)'{');

       // Insert tabs according to nesting

       for (int i = 0; i < nesting; i++)

       par.InsertText(0,"\t",-2);

       if (neststart) nesting++;

       // Move to next line

       if (!par.SelectNextPar(true)) break;

}

Memo.ReformatAll(true,true);


[example_format_c_code.htm]    Copyright © 2007 by WPCubed GmbH