Solved

Page count

Posted on 2006-06-16
8
232 Views
Last Modified: 2010-04-17
Below is code I am using to get page counts of txt files.   The line char count can only be 132 char, the total lines per page is 68, there is a char  112 for form feed and a char 10  and could be char 13.

Using this code - I do not get an acurate count of pages.  And something else that is happening is that I will see different counts on different PC's.  Which does not make sense because the code is the same.

Is there a way to get an accurate count of pages????



public int GetPageCount()
{
      int nextChar;
      int charCount = 0;

      // These counts are initially 1
      int lineCount = 1;
      int pageCount = 1;

      System.IO.StreamReader streamReader = new System.IO.StreamReader(_filePath);
      while (streamReader.Peek() > -1)
      {
            nextChar = streamReader.Read();
            charCount ++;

            // Check for form feed (12) or 68 lines
            if (nextChar == 12 || lineCount == 68)
            {
                  pageCount++;
                  lineCount = 0;
                  charCount = 0;
                  continue;
            }

            // Check for a newLine (10) or 132 characters
            else if(nextChar == 10 || charCount == 132)
            {
                  lineCount++;
                  charCount = 0;
                  continue;
            }
      }

      // Close StreamReader
      streamReader.Close();

      // Increment pageCount by one before returning it's value
      return pageCount;
}
0
Comment
Question by:LAppling7775
  • 3
  • 3
  • 2
8 Comments
 
LVL 15

Expert Comment

by:bpmurray
ID: 16920264
Is this a typo?

 if (nextChar == 12 || lineCount == 68)

Shouldn't it be:

 if (nextChar == 112 || lineCount == 68)
0
 

Author Comment

by:LAppling7775
ID: 16920419
How would that help.  I am interrupting char 12 to be new line. what would Char 112 do?
0
 
LVL 15

Expert Comment

by:bpmurray
ID: 16920443
oops - just a cursory glance at the text confused me: you said 112 in the text but, of course, that's not 0x0C.
0
 
LVL 15

Expert Comment

by:bpmurray
ID: 16920551
OK - I looked dmore closely, and it looks fine. FYI, you don't need the continue statements - the if/else manages that. The only thing that strikes me as a possible source of the problem is the use of int - perhaps using Int32 would be better since this more correctly reflects the returned values, and the different machines might interpret this differently.
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 

Author Comment

by:LAppling7775
ID: 16920692
Thanks - will look at the int32 and test.  
0
 
LVL 18

Expert Comment

by:JoseParrot
ID: 16923275
Hi,

Did you try
someStrLine = myStreamReader.ReadLine()  instead of search for LF?
Example:
using System;
using System.IO;


    int public static CountLines()
    {
        int count=0;
        try
        {
            using (StreamReader sr = new StreamReader("TestFile.txt"))
            {
                String line;
                // Read and count lines from the file until EOF is reached
                while ((line = sr.ReadLine()) != null)
                {
                    count++;
                }
            }
        }
        return count;
    }


Are the .NET framework the same version in all PCs? The different results can be from different versions.

Jose
0
 

Author Comment

by:LAppling7775
ID: 16923576
Thanks jose - will look at your code and let you know.  Thanks
0
 
LVL 18

Accepted Solution

by:
JoseParrot earned 500 total points
ID: 16927134
Hum... I only have count lines, not pages...

Better:
    int public static CountPages()
    {
        int count=0;
        int pages=0;
        try
        {
            using (StreamReader sr = new StreamReader("TestFile.txt"))
            {
                String line;
                // Read and count lines from the file until EOF is reached
                while ((line = sr.ReadLine()) != null)
                {
                    count++;
                    if (count==MAXLINES or sr.Peek()==LF)    // check LF without advance reading
                    {
                        pages++;
                        count=0;
                        if (sr.Peek()==LF) sr.Read();                // advance reading
                    }
                }
            }
        }
        return pages;
    }

Jose
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Here we come across an interesting topic of coding guidelines while designing automation test scripts. The scope of this article will not be limited to QTP but to an overall extent of using VB Scripting for automation projects. Introduction Now…
A short article about a problem I had getting the GPS LocationListener working.
Viewers will learn how to properly install Eclipse with the necessary JDK, and will take a look at an introductory Java program. Download Eclipse installation zip file: Extract files from zip file: Download and install JDK 8: Open Eclipse and …
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…

867 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

20 Experts available now in Live!

Get 1:1 Help Now