?
Solved

Page count

Posted on 2006-06-16
8
Medium Priority
?
240 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
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
 

Author Comment

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

Expert Comment

by:Jose Parrot
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:
Jose Parrot earned 2000 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

Enroll in October's Free Course of the Month

Do you work with and analyze data? Enroll in October's Course of the Month for 7+ hours of SQL training, allowing you to quickly and efficiently store or retrieve data. It's free for Premium Members, Team Accounts, and Qualified Experts!

Question has a verified solution.

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

Since upgrading to Office 2013 or higher installing the Smart Indenter addin will fail. This article will explain how to install it so it will work regardless of the Office version installed.
Whether you’re a college noob or a soon-to-be pro, these tips are sure to help you in your journey to becoming a programming ninja and stand out from the crowd.
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…
Introduction to Processes

649 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