コード例 #1
0
        private void button_OK_Click(object sender, EventArgs e)
        {
            string strError = "";

            if (this.listView_index.SelectedItems.Count == 0)
            {
                strError = "尚未选定日志记录";
                goto ERROR1;
            }

            IndexInfo info = (IndexInfo)this.listView_index.SelectedItems[0].Tag;

            string strLogFilename = this.textBox_logFilename.Text;

            try
            {
                using (Stream stream = File.OpenRead(strLogFilename))
                {
                    if (info.Offs > stream.Length)
                    {
                        strError = "info.Offs " + info.Offs.ToString() + " > stream.Length " + stream.Length.ToString();
                        goto ERROR1;
                    }
                    stream.Seek(info.Offs, SeekOrigin.Begin);

                    this.Package = new byte[info.Length];

                    int nRet = stream.Read(this.Package, 0, (int)info.Length);
                }
            }
            catch (Exception ex)
            {
                strError = "read file '" + strLogFilename + "' error: " + ex.Message;
                goto ERROR1;
            }

            this.DialogResult = DialogResult.OK;
            this.Close();
            return;

ERROR1:
            MessageBox.Show(this, strError);
        }
コード例 #2
0
        // 装载通讯包日志文件的记录索引
        int LoadIndex(
            ListView list,
            string strLogFilename,
            out string strError)
        {
            strError = "";

            Stream stream = null;

            try
            {
                stream = File.OpenRead(strLogFilename);
            }
            catch (Exception ex)
            {
                strError = "file '" + strLogFilename + "'open error: " + ex.Message;
                return(-1);
            }

            try
            {
                list.Items.Clear();
                for (long i = 0; ; i++)
                {
                    byte[] len_buffer = new byte[8];

                    int nRet = stream.Read(len_buffer, 0, 8);
                    if (nRet == 0)
                    {
                        break;
                    }
                    if (nRet != 8)
                    {
                        strError = "file format error";
                        return(-1);
                    }

                    long length = BitConverter.ToInt64(len_buffer, 0);

                    if (length == -1)
                    {
                        // 出现了一个未收尾的事项
                        // 把文件最后都算作它的内容
                        length = stream.Length - stream.Position;
                    }

                    IndexInfo info = new IndexInfo();

                    info.index = i;

                    ListViewItem item = new ListViewItem();

                    if (length == 0)
                    {
                        // 特殊处理
                        item.Text       = i.ToString();
                        item.ImageIndex = 0;
                        item.Tag        = info;
                        list.Items.Add(item);
                        continue;
                    }

                    int direction = stream.ReadByte();

                    long lStartOffs = stream.Position;

                    length--;   // 这是内容长度

                    item.Text = i.ToString();
                    // 方向'
                    string strDirection = "";
                    int    nImageIndex  = 0;
                    if (direction == 0)
                    {
                        strDirection = "none";
                        nImageIndex  = 0;
                    }
                    else if (direction == 1)
                    {
                        strDirection = "client";
                        nImageIndex  = 1;
                    }
                    else if (direction == 2)
                    {
                        strDirection = "server";
                        nImageIndex  = 2;
                    }
                    else
                    {
                        strDirection = "error direction value: " + ((int)direction).ToString();
                        nImageIndex  = 0;
                    }

                    item.Text      += " " + strDirection;
                    item.Text      += " len:" + length.ToString();
                    item.Text      += " offs:" + lStartOffs.ToString();
                    item.ImageIndex = nImageIndex;

                    info.Offs   = lStartOffs;
                    info.Length = length;

                    item.Tag = info;
                    list.Items.Add(item);


                    if (length >= 100 * 1024)
                    {
                        stream.Seek(length, SeekOrigin.Current);
                        info.BerTree = null;
                    }
                    else
                    {
                        byte[] baPackage = new byte[(int)length];
                        stream.Read(baPackage, 0, (int)length);
                    }
                }
            }
            finally
            {
                stream.Close();
            }

            return(0);
        }
コード例 #3
0
ファイル: BerDebugForm.cs プロジェクト: zhangandding/dp2
        // 装载记录索引
        int LoadIndex(string strLogFilename,
                      out string strError)
        {
            strError = "";

            Stream stream = null;

            try
            {
                stream = File.OpenRead(strLogFilename);
            }
            catch (Exception ex)
            {
                strError = "file '" + strLogFilename + "'open error: " + ex.Message;
                return(-1);
            }

            try
            {
                this.treeView_ber.Nodes.Clear();

                for (long i = 0; ; i++)
                {
                    byte[] len_buffer = new byte[8];

                    int nRet = stream.Read(len_buffer, 0, 8);
                    if (nRet == 0)
                    {
                        break;
                    }
                    if (nRet != 8)
                    {
                        strError = "file format error";
                        return(-1);
                    }

                    long length = BitConverter.ToInt64(len_buffer, 0);

                    if (length == -1)
                    {
                        // 出现了一个未收尾的事项
                        // 把文件最后都算作它的内容
                        length = stream.Length - stream.Position;
                    }

                    IndexInfo info = new IndexInfo();

                    info.index = i;

                    TreeNode node = new TreeNode();

                    if (length == 0)
                    {
                        // 特殊处理
                        node.Text       = i.ToString();
                        node.ImageIndex = 0;
                        node.Tag        = info;
                        this.treeView_ber.Nodes.Add(node);
                        continue;
                    }

                    int direction = stream.ReadByte();

                    long lStartOffs = stream.Position;

                    length--;   // 这是内容长度

                    node.Text = i.ToString();
                    // 方向'
                    string strDirection = "";
                    int    nImageIndex  = 0;
                    if (direction == 0)
                    {
                        strDirection = "none";
                        nImageIndex  = 0;
                    }
                    else if (direction == 1)
                    {
                        strDirection = "client";
                        nImageIndex  = 1;
                    }
                    else if (direction == 2)
                    {
                        strDirection = "server";
                        nImageIndex  = 2;
                    }
                    else
                    {
                        strDirection = "error direction value: " + ((int)direction).ToString();
                        nImageIndex  = 0;
                    }

                    node.Text      += " " + strDirection;
                    node.Text      += " len:" + length.ToString();
                    node.Text      += " offs:" + lStartOffs.ToString();
                    node.ImageIndex = nImageIndex;

                    info.Offs   = lStartOffs;
                    info.Length = length;

                    node.Tag = info;
                    this.treeView_ber.Nodes.Add(node);


                    if (length >= 100 * 1024)
                    {
                        stream.Seek(length, SeekOrigin.Current);
                        info.BerTree = null;
                    }
                    else
                    {
                        byte [] baPackage = new byte[(int)length];
                        stream.Read(baPackage, 0, (int)length);

                        int nParseStart = 0;
                        for (int j = 0; ; j++)
                        {
                            BerTree tree    = new BerTree();
                            int     nTotlen = 0;
                            tree.m_RootNode.BuildPartTree(baPackage,
                                                          nParseStart,
                                                          baPackage.Length,
                                                          out nTotlen);

                            if (j == 0)
                            {
                                TreeNode newnode = new TreeNode();
                                node.Nodes.Add(newnode);

                                FillNodeAndChildren(newnode, tree.m_RootNode.ChildrenCollection[0]);
                            }
                            else
                            {
                                TreeNode newnode = new TreeNode();
                                node.Nodes.Add(newnode);

                                FillNodeAndChildren(newnode, tree.m_RootNode.ChildrenCollection[0]);
                            }

                            nParseStart += nTotlen;
                            if (nParseStart >= baPackage.Length)
                            {
                                break;
                            }
                        }
                    }
                }
            }
            finally
            {
                stream.Close();
            }

            return(0);
        }
コード例 #4
0
ファイル: BerDebugForm.cs プロジェクト: zhangandding/dp2
        private void treeView_ber_AfterSelect(object sender,
                                              TreeViewEventArgs e)
        {
            string strError = "";

            TreeNode node = this.treeView_ber.SelectedNode;

            if (node == null)
            {
                SetRightBlank();
                return;
            }

            TreeNode topnode = null;

            if (node.Parent != null)
            {
                topnode = node;
                while (topnode.Parent != null)
                {
                    topnode = topnode.Parent;
                }
            }
            else
            {
                topnode = node;
            }


            {
                IndexInfo info = (IndexInfo)topnode.Tag;

                Debug.Assert(info != null, "");

                if (info.Length == -1 || info.Offs == -1)
                {
                    SetRightBlank();
                    return;
                }

                string strLogFilename = this.textBox_logFilename.Text;

                try
                {
                    using (Stream stream = File.OpenRead(strLogFilename))
                    {
                        if (info.Offs != this.CurrentRightStartOffs)
                        {
                            this.binaryEditor_onePackage.SetData(stream, info.Offs, info.Length);
                            this.CurrentRightStartOffs = info.Offs;
                        }
                    }
                }
                catch (Exception ex)
                {
                    strError = "file '" + strLogFilename + "'open error: " + ex.Message;
                    goto ERROR1;
                }
            }
            return;

ERROR1:
            MessageBox.Show(this, strError);
        }
コード例 #5
0
ファイル: SelectLogRecordDlg.cs プロジェクト: renyh1013/dp2
        // 装载通讯包日志文件的记录索引
        int LoadIndex(
            ListView list,
            string strLogFilename,
            out string strError)
        {
            strError = "";

            Stream stream = null;

            try
            {
                stream = File.OpenRead(strLogFilename);
            }
            catch (Exception ex)
            {
                strError = "file '" + strLogFilename + "'open error: " + ex.Message;
                return -1;
            }

            try
            {
                list.Items.Clear();
                for (long i = 0; ; i++)
                {
                    byte[] len_buffer = new byte[8];

                    int nRet = stream.Read(len_buffer, 0, 8);
                    if (nRet == 0)
                        break;
                    if (nRet != 8)
                    {
                        strError = "file format error";
                        return -1;
                    }

                    long length = BitConverter.ToInt64(len_buffer, 0);

                    if (length == -1)
                    {
                        // 出现了一个未收尾的事项
                        // 把文件最后都算作它的内容
                        length = stream.Length - stream.Position;
                    }

                    IndexInfo info = new IndexInfo();

                    info.index = i;

                    ListViewItem item = new ListViewItem();

                    if (length == 0)
                    {
                        // 特殊处理
                        item.Text = i.ToString();
                        item.ImageIndex = 0;
                        item.Tag = info;
                        list.Items.Add(item);
                        continue;
                    }

                    int direction = stream.ReadByte();

                    long lStartOffs = stream.Position;

                    length--;   // 这是内容长度

                    item.Text = i.ToString();
                    // 方向'
                    string strDirection = "";
                    int nImageIndex = 0;
                    if (direction == 0)
                    {
                        strDirection = "none";
                        nImageIndex = 0;
                    }
                    else if (direction == 1)
                    {
                        strDirection = "client";
                        nImageIndex = 1;
                    }
                    else if (direction == 2)
                    {
                        strDirection = "server";
                        nImageIndex = 2;
                    }
                    else
                    {
                        strDirection = "error direction value: " + ((int)direction).ToString();
                        nImageIndex = 0;
                    }

                    item.Text += " " + strDirection;
                    item.Text += " len:" + length.ToString();
                    item.Text += " offs:" + lStartOffs.ToString();
                    item.ImageIndex = nImageIndex;

                    info.Offs = lStartOffs;
                    info.Length = length;

                    item.Tag = info;
                    list.Items.Add(item);


                    if (length >= 100 * 1024)
                    {
                        stream.Seek(length, SeekOrigin.Current);
                        info.BerTree = null;
                    }
                    else
                    {
                        byte[] baPackage = new byte[(int)length];
                        stream.Read(baPackage, 0, (int)length);
                    }
                }

            }
            finally
            {
                stream.Close();
            }

            return 0;
        }
コード例 #6
0
ファイル: BerDebugForm.cs プロジェクト: renyh1013/dp2
        // 装载记录索引
        int LoadIndex(string strLogFilename,
            out string strError)
        {
            strError = "";

            Stream stream = null;

            try
            {
                stream = File.OpenRead(strLogFilename);
            }
            catch (Exception ex)
            {
                strError = "file '" + strLogFilename + "'open error: " + ex.Message;
                return -1;
            }

            try
            {
                this.treeView_ber.Nodes.Clear();

                for (long i = 0; ; i++)
                {
                    byte[] len_buffer = new byte[8];

                    int nRet = stream.Read(len_buffer, 0, 8);
                    if (nRet == 0)
                        break;
                    if (nRet != 8)
                    {
                        strError = "file format error";
                        return -1;
                    }

                    long length = BitConverter.ToInt64(len_buffer, 0);

                    if (length == -1)
                    {
                        // 出现了一个未收尾的事项
                        // 把文件最后都算作它的内容
                        length = stream.Length - stream.Position;
                    }

                    IndexInfo info = new IndexInfo();

                    info.index = i;

                    TreeNode node = new TreeNode();

                    if (length == 0)
                    {
                        // 特殊处理
                        node.Text = i.ToString();
                        node.ImageIndex = 0;
                        node.Tag = info;
                        this.treeView_ber.Nodes.Add(node);
                        continue;
                    }

                    int direction = stream.ReadByte();

                    long lStartOffs = stream.Position;

                    length--;   // 这是内容长度

                    node.Text = i.ToString();
                    // 方向'
                    string strDirection = "";
                    int nImageIndex = 0;
                    if (direction == 0)
                    {
                        strDirection = "none";
                        nImageIndex = 0;
                    }
                    else if (direction == 1)
                    {
                        strDirection = "client";
                        nImageIndex = 1;
                    }
                    else if (direction == 2)
                    {
                        strDirection = "server";
                        nImageIndex = 2;
                    }
                    else
                    {
                        strDirection = "error direction value: " + ((int)direction).ToString();
                        nImageIndex = 0;
                    }

                    node.Text += " " + strDirection;
                    node.Text += " len:" + length.ToString();
                    node.Text += " offs:" + lStartOffs.ToString();
                    node.ImageIndex = nImageIndex;

                    info.Offs = lStartOffs;
                    info.Length = length;

                    node.Tag = info;
                    this.treeView_ber.Nodes.Add(node);


                    if (length >= 100*1024)
                    {
                        stream.Seek(length, SeekOrigin.Current);
                        info.BerTree = null;
                    }
                    else {
                        byte [] baPackage = new byte[(int)length];
                        stream.Read(baPackage, 0, (int)length);

                        int nParseStart = 0;
                        for (int j=0; ;j++ )
                        {
                            BerTree tree = new BerTree();
                            int nTotlen = 0;
                            tree.m_RootNode.BuildPartTree(baPackage,
                                nParseStart,
                                baPackage.Length,
                                out nTotlen);

                            if (j == 0)
                            {
                                TreeNode newnode = new TreeNode();
                                node.Nodes.Add(newnode);

                                FillNodeAndChildren(newnode, tree.m_RootNode.ChildrenCollection[0]);
                            }
                            else
                            {
                                TreeNode newnode = new TreeNode();
                                node.Nodes.Add(newnode);

                                FillNodeAndChildren(newnode, tree.m_RootNode.ChildrenCollection[0]);
                            }

                            nParseStart += nTotlen;
                            if (nParseStart >= baPackage.Length)
                                break;
                        }
                    }
                }
            }
            finally
            {
                stream.Close();
            }

            return 0;
        }