免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3486 | 回复: 12

[C++] 没事写个拆线图,做个Memo [复制链接]

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
发表于 2016-08-20 16:36 |显示全部楼层
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Drawing;
  4. using System.Drawing.Drawing2D;
  5. using System.Linq;
  6. using System.Text;
  7. using System.Threading.Tasks;

  8. namespace CSGraphLinear
  9. {
  10.     public static class BitmapEx
  11.     {
  12.         public static void ToBlackAndWhite(this Bitmap bitmap)
  13.         {

  14.         }
  15.     }

  16.     public class LinearGraph:IDisposable
  17.     {
  18.         public LinearGraph(int width, int height)
  19.         {
  20.             this._bm = new Bitmap(width, height);
  21.             this._g = Graphics.FromImage(this._bm);

  22.             this._lines = new List<KeyValuePair<System.Windows.Point[], object[]>>();
  23.             this.XAxisLables = new List<KeyValuePair<double, string>>();
  24.             this.YAxisLables = new List<KeyValuePair<double, string>>();
  25.             this._Labels = new List<KeyValuePair<System.Windows.Point, string>>();

  26.             this.Margin = new Rectangle(5, 5, 5, 5);
  27.             this.BackgroundColor = Color.White;
  28.             this.AxisColor = Color.Black;
  29.             this.AxisWidth = 1.0D;
  30.         }

  31.         public void Resize(int width, int height)
  32.         {
  33.             if (width > 0 && height > 0)
  34.             {
  35.                 this._g.Dispose();
  36.                 this._bm.Dispose();
  37.                 this._bm = new Bitmap(width, height);
  38.                 this._g = Graphics.FromImage(this._bm);

  39.                 this.Draw();
  40.             }
  41.         }

  42.         public void Draw()
  43.         {
  44.             // -- Clear background
  45.             this._g.Clear(this.BackgroundColor);

  46.             // -- Search max/min value of lines points.
  47.             double xMin = double.MaxValue,
  48.                 xMax = double.MinValue,
  49.                 yMin = double.MaxValue,
  50.                 yMax = double.MinValue;
  51.             {
  52.                 foreach (var line in this._lines)
  53.                 {
  54.                     foreach (var pt in line.Key)
  55.                     {
  56.                         if (pt.X > xMax)
  57.                         {
  58.                             xMax = pt.X;
  59.                         }
  60.                         if (pt.X < xMin)
  61.                         {
  62.                             xMin = pt.X;
  63.                         }
  64.                         if (pt.Y > yMax)
  65.                         {
  66.                             yMax = pt.Y;
  67.                         }
  68.                         if (pt.Y < yMin)
  69.                         {
  70.                             yMin = pt.Y;
  71.                         }
  72.                     }//end for each point
  73.                 }//end foreach line
  74.             }

  75.             do
  76.             {
  77.                 // -- Check the size
  78.                 if(this._bm.Width <=this.Margin.Left +this.Margin.Right ||
  79.                 this._bm.Height <= this.Margin.Top + this.Margin.Bottom) break;

  80.                 // -- Calculate the scale
  81.                 double xScale = (this._bm.Width - this.Margin.Left - this.Margin.Right) / (xMax - xMin);
  82.                 double yScale = (this._bm.Height - this.Margin.Top - this.Margin.Bottom) / (yMax - yMin);

  83.                 // -- Draw XAxis
  84.                 using (Pen p = new Pen(this.AxisColor, (float)this.AxisWidth))
  85.                 {
  86.                     this._g.DrawLine(p, this.Margin.Left, 0, this.Margin.Left, this._bm.Height);
  87.                     this._g.DrawLine(p, 0, this._bm.Height - this.Margin.Bottom, this._bm.Width, this._bm.Height - this.Margin.Bottom);
  88.                 }

  89.                 if(xMax <=xMin ||yMax <=yMin) break;

  90.                 // -- Draw scales in X/Y axises
  91.                 {   const double nAxisSplit =6.0D;
  92.                     Func<double, double> ToAlignedStepWidth = delegate(double src)
  93.                     {
  94.                         double srcCpy = src;
  95.                         double rsToAlignedStepWidth;
  96.                         double dScale = 1.0D;
  97.                         if (srcCpy >= 1.0D)
  98.                         {
  99.                             while (srcCpy > 1.0D)
  100.                             {
  101.                                 dScale *= 10.0D;
  102.                                 srcCpy = src / dScale;
  103.                             }
  104.                             rsToAlignedStepWidth = Math.Ceiling(src / dScale) * dScale;
  105.                             if ((rsToAlignedStepWidth - src) / rsToAlignedStepWidth < 0.3D)
  106.                             {
  107.                                 rsToAlignedStepWidth = Math.Floor(src / dScale) * dScale;
  108.                             }
  109.                         }
  110.                         else
  111.                         {
  112.                             while (srcCpy < 1.0D)
  113.                             {
  114.                                 dScale /= 10.0D;
  115.                                 srcCpy = src / dScale;
  116.                             }
  117.                             rsToAlignedStepWidth = Math.Ceiling(src / dScale) * dScale;
  118.                             if ((rsToAlignedStepWidth - src) / rsToAlignedStepWidth < 0.3D)
  119.                             {
  120.                                 rsToAlignedStepWidth = Math.Floor(src / dScale) * dScale;
  121.                             }
  122.                         }

  123.                         return rsToAlignedStepWidth;
  124.                     };

  125.                     double xStepLength = ToAlignedStepWidth((xMax - xMin) / nAxisSplit);
  126.                     double yStepLength = ToAlignedStepWidth((yMax - yMin) / nAxisSplit);

  127.                     if (xStepLength > xMax - xMin) xStepLength /= 5.0D;
  128.                     if ((xMax - xMin) / xStepLength < 3.0D) xStepLength /= 2.0D;
  129.                     if (yStepLength > yMax - yMin) yStepLength /= 5.0D;
  130.                     if ((yMax - yMin) / yStepLength < 3.0D) yStepLength /= 2.0D;

  131.                     // -- Draw X/Y axis scale
  132.                     {
  133.                         using (Brush br = new SolidBrush(this.AxisColor))
  134.                         {
  135.                             using (Pen p = new Pen(this.AxisColor))
  136.                             {
  137.                                 {   // -- X axis
  138.                                     int y = this._bm.Height - this.Margin.Bottom;
  139.                                     for (double xStart = Math.Ceiling(xMin / xStepLength) * xStepLength; xStart < xMax; xStart += xStepLength)
  140.                                     {
  141.                                         int x = (int)(xScale * (xStart - xMin) + this.Margin.Left);
  142.                                         this._g.DrawLine(p, x, y - 1 - (int)this.AxisWidth, x, y + 1);
  143.                                         if (this.XAxisLables.Count == 0)
  144.                                         {   // -- If the X axis labels specified, not draw the scale
  145.                                             this._g.DrawString(xStart.ToString(), SystemFonts.DefaultFont, br, new Point(x, y));
  146.                                         }
  147.                                     }

  148.                                     // -- Draw X axis labels
  149.                                     foreach (var lbl in this.XAxisLables)
  150.                                     {
  151.                                         if (!string.IsNullOrWhiteSpace(lbl.Value))
  152.                                         {
  153.                                             int x = (int)(xScale * (lbl.Key - xMin) + this.Margin.Left);
  154.                                             this._g.DrawString(lbl.Value, SystemFonts.DefaultFont, br, new Point(x, y));
  155.                                         }
  156.                                     }
  157.                                 }

  158.                                 {   // -- Y axis
  159.                                     int x = this.Margin.Left;
  160.                                     for (double yStart = Math.Ceiling(yMin / yStepLength) * yStepLength; yStart < yMax; yStart += yStepLength)
  161.                                     {
  162.                                         int y = this._bm.Height - (int)(yScale * (yStart - yMin) + this.Margin.Bottom);

  163.                                         this._g.DrawLine(p, x - 1 - (int)this.AxisWidth, y, x + 1, y);
  164.                                         this._g.DrawString(yStart.ToString(), SystemFonts.DefaultFont, br, new Point(x, y));

  165.                                         if (IsDrawHorizontalLine)
  166.                                         {
  167.                                             using (Pen pVertical = new Pen(this.AxisColor) { DashStyle = DashStyle.Dash })
  168.                                             {
  169.                                                 this._g.DrawLine(pVertical, x + 1, y, this._bm.Width, y);
  170.                                             }
  171.                                         }
  172.                                     }
  173.                                 }
  174.                             }
  175.                         }
  176.                     }
  177.                 }

  178.                 // -- Draw lines
  179.                 foreach (var line in this._lines)
  180.                 {
  181.                     Point[] pts =new Point[line.Key.Length];
  182.                     for (int iPt = 0; iPt < line.Key.Length; iPt++)
  183.                     {
  184.                         int x = (int)(xScale * (line.Key[iPt].X - xMin) + this.Margin.Left);
  185.                         int y = this._bm.Height -(int)(yScale * (line.Key[iPt].Y-yMin) + this.Margin.Bottom);
  186.                         pts[iPt] = new Point(x,y);
  187.                     }
  188.                     using (Pen p = new Pen((Color)line.Value[(int)LineStyle.LineColor]) {
  189.                         DashStyle = (DashStyle)line.Value[(int)LineStyle.PenStyle],
  190.                         Width = (float)Convert.ToDouble(line.Value[(int)LineStyle.LineWidth])
  191.                     })
  192.                     {
  193.                         this._g.DrawLines(p, pts);
  194.                     }
  195.                 }//end foreach: line

  196.                 // -- Draw lables
  197.                 using (Brush br = new SolidBrush(this.AxisColor))
  198.                 {
  199.                     foreach (var kv in this._Labels)
  200.                     {
  201.                         if (!string.IsNullOrWhiteSpace(kv.Value))
  202.                         {
  203.                             int x = (int)(xScale * (kv.Key.X - xMin) + this.Margin.Left);
  204.                             int y = this._bm.Height - (int)(yScale * (kv.Key.Y - yMin) + this.Margin.Bottom);
  205.                             this._g.DrawString(kv.Value, SystemFonts.DefaultFont, br, new Point(x, y));
  206.                         }
  207.                     }
  208.                 }
  209.             }while(false);
  210.         }

  211.         public Rectangle Margin
  212.         {
  213.             set;
  214.             get;
  215.         }

  216.         public Color BackgroundColor
  217.         {
  218.             set;
  219.             get;
  220.         }

  221.         public Color AxisColor
  222.         {
  223.             set;
  224.             get;
  225.         }
  226.         public double AxisWidth
  227.         {
  228.             set;
  229.             get;
  230.         }

  231.         public List<KeyValuePair<double, string>> XAxisLables
  232.         {
  233.             get;
  234.             private set;
  235.         }
  236.         public List<KeyValuePair<double, string>> YAxisLables
  237.         {
  238.             get;
  239.             private set;
  240.         }

  241.         public bool IsDrawHorizontalLine
  242.         {
  243.             set;
  244.             get;
  245.         }

  246.         #region  -- Collection functions --
  247.         public void Add(System.Windows.Point[] pts, Color cl, int width, DashStyle style)
  248.         {
  249.             if (pts != null)
  250.             {
  251.                 this._lines.Add(
  252.                     new KeyValuePair<System.Windows.Point[], object[]>(
  253.                         pts,
  254.                         new object[] { style, cl, width, }
  255.                     )
  256.                 );
  257.             }
  258.         }

  259.         public void Add(System.Windows.Point[] pts, Color cl, int width)    // Default style is Solid
  260.         {
  261.             this.Add(pts, cl, width, DashStyle.Solid);
  262.         }
  263.         public void Add(System.Windows.Point[] pts, Color cl)   // Default width is 1
  264.         {
  265.             this.Add(pts, cl, 1);
  266.         }
  267.         public void Add(System.Windows.Point[] pts)  // Default color is black
  268.         {
  269.             this.Add(pts, Color.Black);
  270.         }

  271.         public bool Remove(int idx)
  272.         {
  273.             bool rs = false;
  274.             if (idx >= 0 && this._lines.Count > idx)
  275.             {
  276.                 this._lines.RemoveAt(idx);
  277.                 rs = true;
  278.             }
  279.             return rs;
  280.         }

  281.         public void Clear()
  282.         {
  283.             this._lines.Clear();
  284.         }

  285.         public void AddLabel(double x, double y, string s){
  286.             this._Labels.Add(new KeyValuePair<System.Windows.Point, string>(new System.Windows.Point(x,y), s));
  287.         }
  288.         public void RemoveLable(int idx)
  289.         {
  290.             if (idx >= 0 && this._Labels.Count > idx)
  291.             {
  292.                 this._Labels.RemoveAt(idx);
  293.             }
  294.         }
  295.         public void ClearLabels()
  296.         {
  297.             this._Labels.Clear();
  298.         }

  299.         #endregion -- Collection functions --

  300.         #region -- Helper functions
  301.         public static explicit operator Bitmap(LinearGraph obj)
  302.         {
  303.             Bitmap rsBm = null;
  304.             if (obj != null)
  305.             {
  306.                 rsBm = obj._bm;
  307.             }
  308.             return rsBm;
  309.         }

  310.         public void Dispose()
  311.         {
  312.             this._g = null;
  313.             this._bm.Dispose();

  314.             //Pen p =null;
  315.             //p.DashStyle =System.Drawing.Drawing2D.DashStyle.Solid;
  316.         }
  317.         #endregion #region -- Helper functions

  318.         #region private member and defines
  319.         // -- System graphic objects --
  320.         private Graphics _g = null;
  321.         private Bitmap _bm = null;

  322.         // -- Lines --
  323.         private enum LineStyle:int
  324.         {
  325.             PenStyle =0,
  326.             LineColor =1,
  327.             LineWidth =2,
  328.         }
  329.         private List<KeyValuePair<System.Windows.Point[], object[]>> _lines =null;
  330.         private List<KeyValuePair<System.Windows.Point, string>> _Labels = new List<KeyValuePair<System.Windows.Point, string>>();

  331.         #endregion private member and defines
  332.     }
  333. }
复制代码

论坛徽章:
44
15-16赛季CBA联赛之浙江
日期:2021-10-11 02:03:59程序设计版块每日发帖之星
日期:2016-07-02 06:20:0015-16赛季CBA联赛之新疆
日期:2016-04-25 10:55:452016科比退役纪念章
日期:2016-04-23 00:51:2315-16赛季CBA联赛之山东
日期:2016-04-17 12:00:2815-16赛季CBA联赛之福建
日期:2016-04-12 15:21:2915-16赛季CBA联赛之辽宁
日期:2016-03-24 21:38:2715-16赛季CBA联赛之福建
日期:2016-03-18 12:13:4015-16赛季CBA联赛之佛山
日期:2016-02-05 00:55:2015-16赛季CBA联赛之佛山
日期:2016-02-04 21:11:3615-16赛季CBA联赛之天津
日期:2016-11-02 00:33:1215-16赛季CBA联赛之浙江
日期:2017-01-13 01:31:49
发表于 2016-08-20 21:34 |显示全部楼层
你什么时候改写C#了?

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
发表于 2016-08-21 21:33 |显示全部楼层
没钱了, 写C#糊口

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
发表于 2016-08-21 21:33 |显示全部楼层
没钱了, 写C#糊口

论坛徽章:
35
双子座
日期:2014-05-09 17:56:38程序设计版块每日发帖之星
日期:2015-08-30 06:20:00程序设计版块每日发帖之星
日期:2015-12-24 06:20:0015-16赛季CBA联赛之上海
日期:2015-12-27 11:07:07程序设计版块每日发帖之星
日期:2016-01-12 06:20:0015-16赛季CBA联赛之北京
日期:2016-01-15 01:01:2115-16赛季CBA联赛之浙江
日期:2016-01-15 22:38:20程序设计版块每日发帖之星
日期:2016-01-18 06:20:00每日论坛发贴之星
日期:2016-01-18 06:20:0015-16赛季CBA联赛之北控
日期:2016-01-30 21:43:01程序设计版块每日发帖之星
日期:2016-02-08 06:20:0015-16赛季CBA联赛之山西
日期:2016-02-20 10:54:41
发表于 2016-08-21 22:51 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
6
数据库技术版块每日发帖之星
日期:2015-11-27 06:20:00程序设计版块每日发帖之星
日期:2015-12-01 06:20:00每日论坛发贴之星
日期:2015-12-01 06:20:0015-16赛季CBA联赛之佛山
日期:2017-03-26 23:38:0315-16赛季CBA联赛之江苏
日期:2017-07-17 10:08:4415-16赛季CBA联赛之北京
日期:2018-03-04 17:01:50
发表于 2016-08-22 08:20 |显示全部楼层
还可以
代码写的还可以

论坛徽章:
36
子鼠
日期:2013-08-28 22:23:29黄金圣斗士
日期:2015-12-01 11:37:51程序设计版块每日发帖之星
日期:2015-12-14 06:20:00CU十四周年纪念徽章
日期:2015-12-22 16:50:40IT运维版块每日发帖之星
日期:2016-01-25 06:20:0015-16赛季CBA联赛之深圳
日期:2016-01-27 10:31:172016猴年福章徽章
日期:2016-02-18 15:30:3415-16赛季CBA联赛之福建
日期:2016-04-07 11:25:2215-16赛季CBA联赛之青岛
日期:2016-04-29 18:02:5915-16赛季CBA联赛之北控
日期:2016-06-20 17:38:50技术图书徽章
日期:2016-07-19 13:54:03程序设计版块每日发帖之星
日期:2016-08-21 06:20:00
发表于 2016-08-22 11:09 |显示全部楼层
不明觉厉楼主好厉害我好崇拜你!

论坛徽章:
323
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
发表于 2016-08-22 11:13 |显示全部楼层
折线,不是拆线

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
发表于 2016-08-23 16:15 |显示全部楼层
  1.     public class CSVTrunk : IDisposable
  2.     {
  3.         /// <summary>
  4.         ///     The date of this record
  5.         /// </summary>
  6.         public DateTime Timestamp
  7.         {
  8.             private set;
  9.             get;
  10.         }
  11.         /// <summary>
  12.         ///     Fields names
  13.         /// </summary>
  14.         public string[] Fields
  15.         {
  16.             private set;
  17.             get;
  18.         }

  19.         public bool LoadFrom(string Path)
  20.         {
  21.             bool rs = false;
  22.             string tx = File.ReadAllText(Path); // -- pg. load file as text string

  23.             // -- initialize or dispose member variant
  24.             if (this.InnerTextReader != null)
  25.             {
  26.                 this.InnerTextReader.Dispose();
  27.             }
  28.             this.InnerTextReader = new StringReader(tx);
  29.             {
  30.                 if (this.InnerTextParsor != null)
  31.                 {
  32.                     this.InnerTextParsor.Dispose();
  33.                 }
  34.                 {
  35.                     this.InnerTextParsor = new TextFieldParser(this.InnerTextReader);
  36.                     this.InnerTextParsor.TextFieldType = FieldType.Delimited;
  37.                     this.InnerTextParsor.TrimWhiteSpace = true;
  38.                     this.InnerTextParsor.HasFieldsEnclosedInQuotes = true;     // -- Duplicated double quote may be translate to one double quote token.
  39.                 }
  40.                 this.InnerTextParsor.SetDelimiters(",");
  41.             }

  42.             this.InnerResultShotSnap = null;

  43.             // -- Load content --
  44.             {
  45.                 DateTime dt;
  46.                 string szTimestamp = this.InnerTextParsor.ReadLine();
  47.                 if (DateTime.TryParse(szTimestamp, out dt))
  48.                 {
  49.                     this.Timestamp = dt;
  50.                     if (this.InnerTextParsor.EndOfData == false)
  51.                     {
  52.                         string[] FieldNames = this.InnerTextParsor.ReadFields();   // -- Blank line would be skipped
  53.                         this.Fields = FieldNames;
  54.                     }
  55.                     rs = true;
  56.                 }
  57.             }
  58.             return rs;
  59.         }//end funciton: LoadFrom

  60.         public bool ReadNext()
  61.         {
  62.             bool rs = false;
  63.             if (this.InnerTextParsor.EndOfData == false)
  64.             {
  65.                 this.InnerResultShotSnap = this.InnerTextParsor.ReadFields();   // -- Blank lines would be skipped
  66.                 rs = true;
  67.             }
  68.             return rs;
  69.         }

  70.         public string this[string key]
  71.         {
  72.             get
  73.             {
  74.                 string rs = null;
  75.                 int idx = Array.IndexOf(this.Fields, key);
  76.                 if (idx != -1 &&this.InnerResultShotSnap !=null &&this.InnerResultShotSnap.Length >idx)
  77.                 {
  78.                     rs =this.InnerResultShotSnap[idx];
  79.                 }
  80.                 return rs;
  81.             }
  82.         }

  83.         public void Dispose()
  84.         {
  85.             if (this.InnerTextParsor != null)
  86.             {
  87.                 this.InnerTextParsor.Dispose();
  88.                 this.InnerTextReader =null;
  89.             }
  90.             if (this.InnerTextReader != null)
  91.             {
  92.                 this.InnerTextReader.Dispose();
  93.                 this.InnerTextReader = null;
  94.             }
  95.         }

  96.         private string[] InnerResultShotSnap = null;
  97.         private TextFieldParser InnerTextParsor =null;
  98.         private TextReader InnerTextReader =null;
  99.     }//end class: CSVTrunk
复制代码

论坛徽章:
154
2022北京冬奥会纪念版徽章
日期:2015-08-07 17:10:5720周年集字徽章-年
日期:2022-10-26 16:44:2015-16赛季CBA联赛之深圳
日期:2022-11-02 14:02:4515-16赛季CBA联赛之八一
日期:2022-11-28 12:07:4820周年集字徽章-20	
日期:2023-07-19 08:49:4515-16赛季CBA联赛之八一
日期:2023-11-04 19:23:5115-16赛季CBA联赛之广夏
日期:2023-12-13 18:09:34
发表于 2017-05-29 13:57 |显示全部楼层
主流技术,拿不到主流的薪资,技术人员的悲哀
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP