[Okta Webinar] Learn how to a build a cloud-first strategyRegister Now

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 241
  • Last Modified:

Page count

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
LAppling7775
Asked:
LAppling7775
  • 3
  • 3
  • 2
1 Solution
 
bpmurrayCommented:
Is this a typo?

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

Shouldn't it be:

 if (nextChar == 112 || lineCount == 68)
0
 
LAppling7775Author Commented:
How would that help.  I am interrupting char 12 to be new line. what would Char 112 do?
0
 
bpmurrayCommented:
oops - just a cursory glance at the text confused me: you said 112 in the text but, of course, that's not 0x0C.
0
VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

 
bpmurrayCommented:
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
 
LAppling7775Author Commented:
Thanks - will look at the int32 and test.  
0
 
Jose ParrotGraphics ExpertCommented:
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
 
LAppling7775Author Commented:
Thanks jose - will look at your code and let you know.  Thanks
0
 
Jose ParrotGraphics ExpertCommented:
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

[Webinar] Cloud and Mobile-First Strategy

Maybe you’ve fully adopted the cloud since the beginning. Or maybe you started with on-prem resources but are pursuing a “cloud and mobile first” strategy. Getting to that end state has its challenges. Discover how to build out a 100% cloud and mobile IT strategy in this webinar.

  • 3
  • 3
  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now