Hello, I am facing this issue:
Object reference not set to an instance of an object.
.
I have tried the following code but it does not work. It keeps n showing me this error.
Please help.
Regards
Aman Chaurasia
What I have tried:
this.Cursor = Cursors.WaitCursor;
string UnpackDirectory = "";
string UnpackFile = "";
string SourceFolder = "";
UnpackDirectory = System.IO.Path.GetDirectoryName(StructureFileName);
UnpackFile = System.IO.Path.GetFileNameWithoutExtension(StructureFileName);
string EpubFolder = "";
EpubFolder = UnpackDirectory + "\\" + UnpackFile + "_Epub";
SourceFolder = EpubFolder + "\\OPS";
string StrBooKTitle = "";
StrBooKTitle = txt_BookTitle.Text;
if (Regex.IsMatch(StrBooKTitle, "\n" + "|" + "\r", RegexOptions.Multiline))
{
StrBooKTitle = Regex.Replace(StrBooKTitle, "\n" + "|" + "\r", "", RegexOptions.Multiline);
}
if (!string.IsNullOrEmpty(StrBooKTitle.Trim(' ')))
{
if (System.IO.Directory.Exists(SourceFolder))
{
System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(SourceFolder);
System.IO.FileInfo[] dinfo = di.GetFiles("article_*.xml", SearchOption.TopDirectoryOnly);
if (dinfo.Length > 0)
{
Array.Sort(dinfo, new FileNameComparer());
string StrSectionHead = "";
string StrSectionFoot = "";
string StrSectionBody = "";
StrSectionHead = StrSectionHead + "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" + Environment.NewLine;
StrSectionHead = StrSectionHead + "<html xmlns:ncr=\"http://www.nytimes.com/NewsClientReader#\" xmlns=\"http://www.w3.org/1999/xhtml\" xmlns:nitf=\"http://www.nytimes.com/applicationdata/xml/nitf-3-3.dtd\">" + Environment.NewLine;
StrSectionHead = StrSectionHead + "<head>" + Environment.NewLine;
StrSectionHead = StrSectionHead + "<title>" + StrBooKTitle + "</title>" + Environment.NewLine;
StrSectionHead = StrSectionHead + "<link rel=\"stylesheet\" href=\"css/TablesAndFloats.css\" type=\"text/css\"></link>" + Environment.NewLine;
StrSectionHead = StrSectionHead + "</head>" + Environment.NewLine;
StrSectionHead = StrSectionHead + "<body>" + Environment.NewLine;
StrSectionHead = StrSectionHead + "<div class=\"clean\"/>" + Environment.NewLine;
StrSectionHead = StrSectionHead + "<div id=\"header\" class=\"masthead\">" + Environment.NewLine;
StrSectionHead = StrSectionHead + "<!--<img class=\"masthead-img\" src=\"images/###.jpg\" alt=\"Images\"/>-->" + Environment.NewLine;
StrSectionHead = StrSectionHead + "<div class=\"sectionName\">" + TitleTextBox.Text + "</div>" + Environment.NewLine;
string dDate = "";
string dMonth = "";
string dYear = "";
dDate = DateTime.Now.Day.ToString();
if (dDate.Length == 1)
{
dDate = "0" + dDate;
}
dMonth = DateTime.Now.Month.ToString();
if (dMonth.Length == 1)
{
dMonth = "0" + dMonth;
}
dYear = DateTime.Now.Year.ToString();
StrSectionHead = StrSectionHead + "<div id=\"header_date\" class=\"masthead-date\">" + dYear + "-" + dMonth + "-" + dDate + "</div>" + Environment.NewLine;
StrSectionHead = StrSectionHead + "</div>" + Environment.NewLine;
StrSectionFoot = StrSectionFoot + "<div class=\"article-spacer\"/>" + Environment.NewLine;
StrSectionFoot = StrSectionFoot + "</body>" + Environment.NewLine;
StrSectionFoot = StrSectionFoot + "</html>";
int ArticleBodyCount = 1;
string[] TempSectionStringArray = null;
string TempSectionString = "";
string[] TempSectionTitleArray = null;
string TempSectionTitleString = "";
int TSection = 0;
int TLastSection = 0;
string TArticle = "";
if (DataGridView1.RowCount > 0)
{
for (var irow = 0; irow < DataGridView1.RowCount; irow++)
{
if (DataGridView1.Rows[irow].Cells[0].Value != null)
{
if (Convert.ToString(DataGridView1.Rows[irow].Cells[2].Value) == "article-full-headline")
{
if (TLastSection != TSection)
{
TLastSection = TSection;
if (string.IsNullOrEmpty(TempSectionString))
{
TempSectionString = TempSectionString + TSection + "|" + "article_" + DataGridView1.Rows[irow].Cells[0].Value + "-" + DataGridView1.Rows[irow].Cells[1].Value;
}
else
{
TempSectionString = TempSectionString + Environment.NewLine + TSection + "|" + "article_" + DataGridView1.Rows[irow].Cells[0].Value + "-" + DataGridView1.Rows[irow].Cells[1].Value;
}
TArticle = "article_" + DataGridView1.Rows[irow].Cells[0].Value + "-" + DataGridView1.Rows[irow].Cells[1].Value;
}
else if (TArticle != "article_" + DataGridView1.Rows[irow].Cells[0].Value + "-" + DataGridView1.Rows[irow].Cells[1].Value)
{
if (string.IsNullOrEmpty(TempSectionString))
{
TempSectionString = TempSectionString + TSection + "|" + "article_" + DataGridView1.Rows[irow].Cells[0].Value + "-" + DataGridView1.Rows[irow].Cells[1].Value;
}
else
{
TempSectionString = TempSectionString + Environment.NewLine + TSection + "|" + "article_" + DataGridView1.Rows[irow].Cells[0].Value + "-" + DataGridView1.Rows[irow].Cells[1].Value;
}
TArticle = "article_" + DataGridView1.Rows[irow].Cells[0].Value + "-" + DataGridView1.Rows[irow].Cells[1].Value;
}
}
else if (Convert.ToString(DataGridView1.Rows[irow].Cells[2].Value) == "sectionName")
{
TSection = TSection + 1;
if (string.IsNullOrEmpty(TempSectionTitleString))
{
TempSectionTitleString = TempSectionTitleString + TSection + "|" + Convert.ToString(DataGridView1.Rows[irow].Cells[4].Value).Trim(' ');
}
else
{
TempSectionTitleString = TempSectionTitleString + Environment.NewLine + TSection + "|" + DataGridView1.Rows[irow].Cells[3].Value;
}
}
else
{
continue;
}
}
}
}
if (TSection == 0)
{
foreach (var ArticleFile in dinfo)
{
try
{
string tstrFileContent = "";
tstrFileContent = Common.ReadFile(ArticleFile.FullName);
StrSectionBody = StrSectionBody + "<div class=\"article-spacer\"/>" + Environment.NewLine;
StrSectionBody = StrSectionBody + "<div id=\"preview_" + ArticleBodyCount + "\" class=\"sectionArticleBlockOdd\">" + Environment.NewLine;
StrSectionBody = StrSectionBody + "<div class=\"sectionArticleTextBlock\">" + Environment.NewLine;
StrSectionBody = StrSectionBody + "<div class=\"sectionArticleTitle\">" + Environment.NewLine;
StrSectionBody = StrSectionBody + "<a class=\"sectionArticleLink\" href=\"" + ArticleFile.Name + "\">" + Environment.NewLine;
string ArticleHeadTitle = "";
if (Regex.IsMatch(tstrFileContent, "<h2 id=.+>(.+?)</h2>", RegexOptions.Multiline))
{
ArticleHeadTitle = Regex.Match(tstrFileContent, "<h2 id=.+>(.+?)</h2>", RegexOptions.Multiline).Groups[1].Value;
}
StrSectionBody = StrSectionBody + "<span id=\"preview_" + ArticleBodyCount + "_headline\" class=\"sectionArticleHeadline\">" + ArticleHeadTitle + "</span>" + Environment.NewLine;
StrSectionBody = StrSectionBody + "</a>" + Environment.NewLine;
StrSectionBody = StrSectionBody + "<div id=\"preview_" + ArticleBodyCount + "_byline\" class=\"sectionArticleByline\"/>" + Environment.NewLine;
string ArticleHeadBody = "";
if (Regex.IsMatch(tstrFileContent, "<p class=\"article-full-body\">(.+?)</p>", RegexOptions.Multiline))
{
ArticleHeadBody = Regex.Match(tstrFileContent, "<p class=\"article-full-body\">(.+?)</p>", RegexOptions.Multiline).Groups[1].Value;
if (ArticleHeadBody.Length > 50)
{
ArticleHeadBody = ArticleHeadBody.Substring(0, 50);
}
}
StrSectionBody = StrSectionBody + "<div id=\"preview_" + ArticleBodyCount + "_snippet\" class=\"sectionArticleBody\">" + ArticleHeadBody + "...</div>" + Environment.NewLine;
StrSectionBody = StrSectionBody + "</div>" + Environment.NewLine;
StrSectionBody = StrSectionBody + "</div>" + Environment.NewLine;
StrSectionBody = StrSectionBody + "</div>" + Environment.NewLine;
ArticleBodyCount = ArticleBodyCount + 1;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "Error Sections", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
StrSectionBody = StrSectionHead + StrSectionBody + StrSectionFoot;
Common.WriteFile(SourceFolder + "\\" + "section.xml", StrSectionBody);
btn_Sections.ForeColor = System.Drawing.Color.Red;
MessageBox.Show("Completed Sections", "ePUB Sections", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
bool SectionsWritten = false;
for (var icm = 0; icm <= TempSectionTitleArray.Length; icm++)
{
if (!string.IsNullOrEmpty(TempSectionTitleArray[icm]))
{
int tSectionNo = Convert.ToInt32(Regex.Match(TempSectionTitleArray[icm], "(.+)\\|").Groups[1].Value);
string tSectionTitle = (Regex.Match(TempSectionTitleArray[icm], "\\|(.+)").Groups[1].Value).Trim(' ');
string TStrSectionHead = "";
TStrSectionHead = StrSectionHead;
TStrSectionHead = Regex.Replace(TStrSectionHead, "<div class=\"sectionName\">###</div>", "<div class=\"sectionName\">" + tSectionTitle + "</div>", RegexOptions.Multiline);
for (var ic = 0; ic < TempSectionStringArray.Length; ic++)
{
if (!string.IsNullOrEmpty(TempSectionStringArray[ic]))
{
string ArticleSectionTitleNo = Convert.ToInt32(Regex.Match(TempSectionStringArray[ic], "(.+)\\|").Groups[1].Value).ToString();
if (ArticleSectionTitleNo == tSectionNo.ToString())
{
string ArticleFileStr = Regex.Match(TempSectionStringArray[ic], "\\|(.+)").Groups[1].Value;
foreach (var ArticleFile in dinfo)
{
string tArtName = null;
tArtName = ArticleFile.Name;
if (tArtName.Contains(ArticleFileStr))
{
try
{
string tstrFileContent = "";
tstrFileContent = Common.ReadFile(ArticleFile.FullName);
StrSectionBody = StrSectionBody + "<div class=\"article-spacer\"/>" + Environment.NewLine;
StrSectionBody = StrSectionBody + "<div id=\"preview_" + ArticleBodyCount + "\" class=\"sectionArticleBlockOdd\">" + Environment.NewLine;
StrSectionBody = StrSectionBody + "<div class=\"sectionArticleTextBlock\">" + Environment.NewLine;
StrSectionBody = StrSectionBody + "<div class=\"sectionArticleTitle\">" + Environment.NewLine;
StrSectionBody = StrSectionBody + "<a class=\"sectionArticleLink\" href=\"" + ArticleFile.Name + "\">" + Environment.NewLine;
string ArticleHeadTitle = "";
if (Regex.IsMatch(tstrFileContent, "<h2 id=.+>(.+?)</h2>", RegexOptions.Multiline))
{
ArticleHeadTitle = Regex.Match(tstrFileContent, "<h2 id=.+>(.+?)</h2>", RegexOptions.Multiline).Groups[1].Value;
}
StrSectionBody = StrSectionBody + "<span id=\"preview_" + ArticleBodyCount + "_headline\" class=\"sectionArticleHeadline\">" + ArticleHeadTitle + "</span>" + Environment.NewLine;
StrSectionBody = StrSectionBody + "</a>" + Environment.NewLine;
StrSectionBody = StrSectionBody + "<div id=\"preview_" + ArticleBodyCount + "_byline\" class=\"sectionArticleByline\"/>" + Environment.NewLine;
string ArticleHeadBody = "";
if (Regex.IsMatch(tstrFileContent, "<p class=\"article-full-body\">(.+?)</p>", RegexOptions.Multiline))
{
ArticleHeadBody = Regex.Match(tstrFileContent, "<p class=\"article-full-body\">(.+?)</p>", RegexOptions.Multiline).Groups[1].Value;
if (ArticleHeadBody.Length > 50)
{
ArticleHeadBody = ArticleHeadBody.Substring(0, 50);
}
}
StrSectionBody = StrSectionBody + "<div id=\"preview_" + ArticleBodyCount + "_snippet\" class=\"sectionArticleBody\">" + ArticleHeadBody + "...</div>" + Environment.NewLine;
StrSectionBody = StrSectionBody + "</div>" + Environment.NewLine;
StrSectionBody = StrSectionBody + "</div>" + Environment.NewLine;
StrSectionBody = StrSectionBody + "</div>" + Environment.NewLine;
ArticleBodyCount = ArticleBodyCount + 1;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "Error Sections", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
else
{
break;
}
}
}
StrSectionBody = TStrSectionHead + StrSectionBody + StrSectionFoot;
Common.WriteFile(SourceFolder + "\\" + "section" + tSectionNo + ".xml", StrSectionBody);
StrSectionBody = "";
SectionsWritten = true;
}
}
if (SectionsWritten == true)
{
btn_Sections.ForeColor = System.Drawing.Color.Red;
MessageBox.Show("Completed Sections", "ePUB Sections", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("Sections not Complete", "Error Sections", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
else
{
MessageBox.Show("Articles Not Found, Generate and Try again", "Error Sections", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
MessageBox.Show("Structure Not Generated, Generate and Try Again", "Error Sections", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
else
{
MessageBox.Show("Book Title Blank", "Error Sections", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
this.Cursor = Cursors.Default;
btn_Toc.Enabled = true;