Code Project

Link Unit

Monday, May 25, 2009

FileHelpers : Strong type your flat file

We were working on a project, where it required to read a pipe separated values from the file. This is how we were doing it earlier

 

try

{

          StreamReader sr = new StreamReader(lstrFilePath);

          while ((lstrReadLine = sr.ReadLine()) != null)

          {

                    string[] lstrsplit = lstrReadLine.Split(new Char[] { '|' });

                    string lstrCOMP_NAME = lstrsplit[1];

                    string lstrFULL_NAME = lstrsplit[2];

                    string lstrFATHER_NAME = lstrsplit[3];

                    string lstrDESIGNATION = lstrsplit[4];

 

                    rowInsert["COMP_NAME"] = lstrCOMP_NAME;

                    rowInsert["FULL_NAME"] = lstrFULL_NAME;

                    rowInsert["FATHER_NAME"] = lstrFATHER_NAME;

                    rowInsert["DESIGNATION"] = lstrDESIGNATION;

 

                    dtANX.Rows.Add(rowInsert);

 

          }

}

catch(Exception e)

{

 

// Error Logging

 

}

finally

{

// Will always be called

 if (sr != null) // This check can be ignored though

                sr.Close();

}               

 

We started looking for a class (Helper Class), which can import/export flat files into DataTable/Array.

Then came across this useful dll FileHelpers. We converted our previous code to the one written below

 

Step 1) Created a class in .cs file and specify deliminator , which was | (pipe) in our case

[DelimitedRecord("|")]  

 public class Anxeure  

 {  

     public string COMP_NAME;  

       

     public string FULL_NAME;  

  

     public string FATHER_NAME;  

  

     public string DESIGNATION;  

    

     //..... and other columns in the sequence they will come in file.

  

 }  

 

 

 Step 2) Create an instance of FileHelperEngine and read the file.

 

 FileHelperEngine engine = new FileHelperEngine(typeof(Anxeure));  

  

 // To Read Use:  

 Anxeure[] res = engine.ReadFile("FileIn.txt") as Anxeure[];  

 

//We could also export the data thus created after doing some manipulation

engine.WriteFile("FileOut.txt", res);  

 

It is amazing how by writing two statements we could achieve a strongly typed output. Great

 

Hope it helps

Jatinder

 

 

Tuesday, May 19, 2009

Tip to optimize C# Refactoring in Web Projects

I usally do the refactoring of the web application code developed over period of time to make it more managable. But most of the time VS take too long that it becomes better to do refactoring on your own.Later I decided to read some blog posts to see whether someone has work on Optimising Refactor. After googling around for a while, I found the solution.

Scott has posted a great tip for speeding up refactoring performance with Web Projects in VS 2005.

Solution:

  1. Click Start->Run in Windows and run "regedit"
  2. Navigate to this registry location: HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\8.0\CSharp\Options\Editor
  3. Right-click on the Editor node and choose "New DWORD value"
  4. Name the value "OpenAllVenusFilesOnRefactor" and leave the value as 0

Then, when you restart VS 2005 and perform a re-factoring - you should find performance very fast.

 

This hack basically turns off the refactoring functionality beyond the current page and so it's pretty fast. It looks like this has been fixed in Visual Studio 2008 thankfully.


Hope it Helps
Jatinder

Monday, May 11, 2009

JavaScript : Convert Ok/Cancel into Yes/No

Just came across a post, brilliant way to change the confirm box from ok n cancel to yes n no

 

Found the info on the link http://www.delphifaq.com/faq/javascript/f1172.shtml

 

Here is the code:

 

<script language=javascript>

 

/*@cc_on @*/

/*@if (@_win32 && @_jscript_version>=5)

 

function window.confirm(str)

{

    execScript('n = msgbox("'+str+'","4132")', "vbscript");

    return(n == 6);

}

 

@end @*/

</script>

 

Hope visitors find it useful.