Beispiel #1
0
        // return:
        //      -1  error
        //      0   normal
        //      1   reach file end。strXml中无内容
        public int GetOneDocument(
            out string strXml,
            out string strError)
        {
            strError = "";
            strXml = "";

            if (this.Stop == true)
            {
                strError = "用户中断";
                return -1;
            }

            try
            {

                bool bRet = false;
                while (m_reader.Name != "document")
                {
                // REDO:
                    while (true)
                    {
                        bRet = m_reader.Read();
                        if (bRet == false)
                            return 1;
                        if (m_reader.NodeType == XmlNodeType.Element)
                            break;

                    }

                    if (bRet == false)
                        return 1;	// 结束

                    /*
                    if (m_reader.Name != "document")
                        goto REDO;
                     * */
                }

                strXml = m_reader.ReadOuterXml();

                if (this.SetProgress != null)
                {
                    SetProgressEventArgs e = new SetProgressEventArgs();
                    e.Start = 0;
                    e.End = m_file.Length;
                    e.Value = m_file.Position;
                    // Debug.WriteLine(m_file.Position.ToString());

                    this.SetProgress(this, e);
                }
                return 0;
            }
            catch (Exception ex)
            {
                strError = "读取XML文件 '" + this.XmlFilename + "' 时发生错误: " + ex.Message;
                return -1;
            }
        }
Beispiel #2
0
        public int Open(string strInputFileName,
    out string strError)
        {
            strError = "";

            try
            {
                m_file = File.Open(strInputFileName,
                    FileMode.Open,
                    FileAccess.Read);
            }
            catch (Exception ex)
            {
                strError = "打开文件 " + strInputFileName + " 失败: " + ex.Message;
                return -1;
            }

            if (this.SetProgress != null)
            {
                SetProgressEventArgs e = new SetProgressEventArgs();
                e.Start = 0;
                e.End = m_file.Length;
                e.Value = -1;
                this.SetProgress(this, e);
            }

            this.XmlFilename = strInputFileName;

            this.m_reader = new XmlTextReader(m_file);

            while (true)
            {
                bool bRet = m_reader.Read();
                if (bRet == false)
                {
                    strError = "没有根元素";
                    return -1;
                }
                if (m_reader.NodeType == XmlNodeType.Element)
                    break;
            }

            string strPageSettingXml = "";
            // return:
            //      -1  error
            //      0   normal
            //      1   reach file end。strXml中无内容
            int nRet = GetPageSetting(
            out strPageSettingXml,
            out strError);
            if (nRet == -1)
                return -1;
            if (nRet == 0)
            {
                this.m_pagesetting = new PageSetting();
                nRet = this.m_pagesetting.Build(strPageSettingXml,
                    out strError);
                if (nRet == -1)
                    return -1;
            }
            else
            {
                this.m_pagesetting = null;  // 表示XML文件中没有定义
            }

            /*
            m_reader.Close();
            m_file = File.Open(strInputFileName,
    FileMode.Open,
    FileAccess.Read);
             * */


            m_file.Position = 0;
            this.m_reader = new XmlTextReader(m_file);

            this.m_nPageNo = 0;
            this.m_pages.Clear();
            this.EOF = false;

            return 0;
        }
Beispiel #3
0
        void document_SetProgress(object sender, SetProgressEventArgs e)
        {
            Application.DoEvents();

            if (e.Value == -1)
            {
                this.estimate.SetRange(e.Start, e.End);

                this.stop.SetProgressRange(e.Start, e.End);

                this.progressBar_records.Minimum = (int)e.Start;
                this.progressBar_records.Maximum = (int)e.End;
            }
            else
            {
                if ((this.m_lCount++ % 10) == 1)
                    this.stop.SetMessage("剩余时间 " + ProgressEstimate.Format(this.estimate.Estimate(e.Value)) + " 已经过时间 " + ProgressEstimate.Format(this.estimate.delta_passed));

                this.stop.SetProgressValue(e.Value);
                // this.stop.SetMessage(e.Value.ToString() + " - " + (((double)e.Value / (double)e.End) * 100).ToString() + "%");

                this.progressBar_records.Value = (int)e.Value;
            }
        }