Пример #1
0
            public MapViewLayoutParams(Context context, IAttributeSet attrs)
                : base(context, attrs)
            {
                this.X = attrs.GetAttributeIntValue("http://schemas.mapquest.com/apk/res/mapquest", "x", int.MaxValue);
                this.Y = attrs.GetAttributeIntValue("http://schemas.mapquest.com/apk/res/mapquest", "x", int.MaxValue);
                String geoPoint = attrs.GetAttributeValue("http://schemas.mapquest.com/apk/res/mapquest", "geoPoint");

                if ((geoPoint.Length > 0))
                {
                    String[] arr = geoPoint.Split(new[] { "," }, StringSplitOptions.None);
                    if (arr.Length > 1)
                    {
                        try
                        {
                            double latitude  = Double.Parse(arr[0].Trim());
                            double longitude = Double.Parse(arr[1].Trim());
                            this.Point = new GeoPoint(latitude, longitude);
                            this.Mode  = 0;
                        }
                        catch (NumberFormatException nfe)
                        {
                            Log.Error("mq.android.maps.mapview", "Invalid value for geoPoint attribute : " + geoPoint);
                        }
                    }
                }
            }
Пример #2
0
        public static Quaternion Parse(string text)
        {
            string[] vals = text.Replace("Quaternion", "").Trim(' ', '(', '[', '<', ')', ']', '>').Split(',');

            if (vals.Length != 4)
            {
                throw new FormatException(string.Format("Cannot parse the text '{0}' because it does not have 4 parts separated by commas in the form (x,y,z,w) with optional parenthesis.", text));
            }
            else
            {
                try
                {
                    Quaternion returnvalue;
                    returnvalue.X = Scalar.Parse(vals[0].Trim());
                    returnvalue.Y = Scalar.Parse(vals[1].Trim());
                    returnvalue.Z = Scalar.Parse(vals[2].Trim());
                    returnvalue.W = Scalar.Parse(vals[3].Trim());
                    return(returnvalue);
                }
                catch (Exception ex)
                {
                    throw new FormatException("The parts of the vectors must be decimal numbers", ex);
                }
            }
        }
Пример #3
0
        public static Clamped Parse(string s)
        {
            if (s == null)
            {
                throw new ArgumentNullException("s");
            }
#if !CompactFramework && !WindowsCE && !PocketPC && !XBOX360
            string[] vals = s.Split(new char[] { '<', '(', ')' }, StringSplitOptions.RemoveEmptyEntries);
#else
            string[] temp   = s.Split(new char[] { '<', '(', ')' });
            int      index2 = 0;
            for (int index1 = 0; index1 < temp.Length; ++index1)
            {
                if (temp[index1].Length > 0)
                {
                    temp[index2++] = temp[index1];
                }
            }
            string[] vals = new string[index2];
            Array.Copy(temp, vals, vals.Length);
#endif
            if (vals.Length != 3)
            {
                throw new FormatException();
            }
            return(new Clamped(
                       Scalar.Parse(vals[1]),
                       Scalar.Parse(vals[0]),
                       Scalar.Parse(vals[2])));
        }
Пример #4
0
 //TB关键字转换:每当Strategy调用Update时,便调用以下函数
 void TBKeyWordUpdate()
 {
     BarInterval    = this.Interval;
     MarketPosition = this.PositionNet == 0 ? 0 : (this.PositionNet > 0 ? 1 : -1);
     if (PositionNet > 0)
     {
         EntryPrice         = this.EntryPriceLong;
         BarsSinceLastEntry = this.BarsSinceLastEntryLong;
         AvgEntryPrice      = this.AvgEntryPriceLong;
         BarsSinceEntry     = this.BarsSinceEntryLong;
     }
     else if (PositionNet < 0)
     {
         EntryPrice         = this.EntryPriceShort;
         BarsSinceLastEntry = this.BarsSinceLastEntryShort;
         AvgEntryPrice      = this.AvgEntryPriceShort;
         BarsSinceEntry     = this.BarsSinceEntryShort;
     }
     else
     {
         BarsSinceEntry = 0;
     }
     Date[0]     = Math.Truncate(this.NumDateTimes[0]);
     Time[0]     = this.NumDateTimes[0] - Date[0];
     CurrentTime = Numeric.Parse(DateTime.Now.ToString("0.HHmmss"));
     if (!string.IsNullOrEmpty(this.Tick.InstrumentID))
     {
         BarStatus = 2;
     }
     else
     {
         BarStatus = (CurrentBarIndex == 0 ? 0 : 1);
     }
 }
Пример #5
0
        /// <summary>
        /// 从CSV文件中获得Bar数据集合
        /// </summary>
        /// <param name="pFilePath"></param>
        /// <returns></returns>
        public static List <Bar> GetBarsFromCSV(string pFilePath)
        {
            Bar bar;

            string[]     strs;
            List <Bar>   listBars = new List <Bar>();
            FileStream   fs       = new FileStream(pFilePath, FileMode.Open, FileAccess.Read);
            StreamReader sr       = new StreamReader(fs, Encoding.Default);
            string       line     = sr.ReadLine();

            while (line != null)
            {
                strs = line.Split(',');
                bar  = new Bar {
                    UpdateDateTime = DateTime.Parse(strs[0]),
                    Open           = Numeric.Parse(strs[1]),
                    High           = Numeric.Parse(strs[2]),
                    Low            = Numeric.Parse(strs[3]),
                    Close          = Numeric.Parse(strs[4]),
                    Volume         = Numeric.Parse(strs[5]),
                    OpenInt        = Numeric.Parse(strs[6])
                };
                listBars.Add(bar);
                line = sr.ReadLine();
            }
            sr.Close();
            fs.Close();
            return(listBars);
        }
Пример #6
0
 static ValueType[] StringArrToValueArr(String[] data)
 {
     ValueType[] res = new ValueType[data.Length];
     for (int i = 0; i < data.Length; i++)
     {
         res[i] = ValueType.Parse(data[i]);
     }
     return(res);
 }
Пример #7
0
        /// <summary>
        /// Delegate used to submit the element </summary>
        private bool CanSubmit()
        {
            if (Description.Length <= 10)
            {
                this.ErrorString = "Description must be longer than 10 characters.";
                return(false);
            }

            if (this.Name.Contains(@"\") || this.Name.Contains(@"/") || this.Name.Contains(@"*"))
            {
                this.ErrorString = @"The name of the package cannot contain /,\, or *.";
                return(false);
            }

            if (this.Name.Length < 3)
            {
                this.ErrorString = "Name must be at least 3 characters.";
                return(false);
            }

            if (this.MajorVersion.Length <= 0)
            {
                this.ErrorString = "You must provide a Major version as a non-negative integer.";
                return(false);
            }

            if (this.MinorVersion.Length <= 0)
            {
                this.ErrorString = "You must provide a Minor version as a non-negative integer.";
                return(false);
            }

            if (this.BuildVersion.Length <= 0)
            {
                this.ErrorString = "You must provide a Build version as a non-negative integer.";
                return(false);
            }

            if (Double.Parse(this.BuildVersion) + Double.Parse(this.MinorVersion) + Double.Parse(this.MajorVersion) <= 0)
            {
                this.ErrorString = "At least one of your version values must be greater than 0.";
                return(false);
            }

            if (this.UploadState != PackageUploadHandle.State.Error)
            {
                this.ErrorString = "";
            }

            if (this.Uploading)
            {
                return(false);
            }

            return(true);
        }
Пример #8
0
        /// <summary>
        ///     Creates and initializes a NoteModel from its Xml representation.
        /// </summary>
        /// <param name="note"></param>
        /// <returns></returns>
        public static NoteModel LoadNoteFromXml(XmlNode note)
        {
            XmlAttribute textAttrib = note.Attributes[0];
            XmlAttribute xAttrib    = note.Attributes[1];
            XmlAttribute yAttrib    = note.Attributes[2];

            string text = textAttrib.Value;
            double x    = Double.Parse(xAttrib.Value, CultureInfo.InvariantCulture);
            double y    = Double.Parse(yAttrib.Value, CultureInfo.InvariantCulture);

            // TODO(Ben): Shouldn't we be reading in the Guid from file instead of generating a new one here?
            return(new NoteModel(x, y, text, Guid.NewGuid()));
        }
Пример #9
0
 /// <summary>
 /// 当有新的Bar加入时,更新Bars中的序列:Closes
 /// </summary>
 /// <param name="index"></param>
 /// <param name="bar"></param>
 protected override void InsertItem(int index, Bar bar)
 {
     //序列更新
     this.NumDateTimes.Add(Numeric.Parse(bar.UpdateDateTime.ToString("yyyyMMdd.HHmmss")));
     this.Opens.Add(bar.Open);
     this.Highs.Add(bar.High);
     this.Lows.Add(bar.Low);
     this.Closes.Add(bar.Close);
     this.Volumes.Add(bar.Volume);
     this.OpenInts.Add(bar.OpenInt);
     //添加Bar
     base.InsertItem(index, bar);
     //通知增加Bar
     this._onChange?.Invoke(1, bar, null);
 }
Пример #10
0
        private void SetVector4Value(BulletWriter writer, XmlNode valueNode, int offset)
        {
            int i = 0;

            foreach (string value in valueNode.InnerText.Split(' '))
            {
                if (!string.IsNullOrWhiteSpace(value))
                {
                    writer.Write(Scalar.Parse(value, CultureInfo.InvariantCulture), offset + i * sizeof(Scalar));
                    i++;
                    if (i == 4)
                    {
                        break;
                    }
                }
            }
        }
Пример #11
0
        /// <summary>
        /// Vector from a string.
        /// </summary>
        static public Vector3d FromString(string s)
        {
            Vector3d v = new Vector3d();

            try
            {
                string[] separators = new string[] { "," };
                string[] result     = s.Split(separators, StringSplitOptions.None);

                v.x = REAL.Parse(result[0]);
                v.y = REAL.Parse(result[1]);
                v.z = REAL.Parse(result[2]);
            }
            catch { }

            return(v);
        }
Пример #12
0
 public TokenNumber(TokenType p_Type, int p_line, int p_column, String p_value) : base(p_Type, p_line, p_column)
 {
     try {
         integerValue = Integer.Parse(p_value);
         type         = integerValue.GetType();
     } catch (FormatException) {
         try {
             floatValue = Float.Parse(p_value);
             type       = floatValue.GetType();
         } catch (FormatException) {
             Console.WriteLine("{0}: Bad Format", p_value);
         } catch (OverflowException) {
             Console.WriteLine("{0}: Overflow", p_value);
         }
     } catch (OverflowException) {
         Console.WriteLine("{0}: Overflow", p_value);
     }
 }
Пример #13
0
        public static Vector3D Parse(string s)
        {
            if (s == null)
            {
                throw new ArgumentNullException("s");
            }
            string[] vals = ParseHelper.SplitStringVector(s);
            if (vals.Length != Count)
            {
                ThrowHelper.ThrowVectorFormatException(s, Count, FormatString);
            }
            Vector3D value;

            value.X = Scalar.Parse(vals[0]);
            value.Y = Scalar.Parse(vals[1]);
            value.Z = Scalar.Parse(vals[2]);
            return(value);
        }
Пример #14
0
        public Status LoadSimplesFromFile(String fileName)
        {
            //Free
            string fileContent = File.ReadAllText(fileName);

            if (fileContent == null)
            {
                Console.WriteLine("未能成功打开样例文件");
                return(-1);
            }
            string[] integerStrings = fileContent.Split
                                          (new char[] { ' ', '\t', '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries);

            sampleNum = int.Parse(integerStrings[0]);
            int inputNodeNum  = int.Parse(integerStrings[1]);
            int outputNodeNum = int.Parse(integerStrings[2]);

            input  = new ElemType[sampleNum, inputNodeNum];
            output = new ElemType[sampleNum, outputNodeNum];

            if (input == null || output == null)
            {
                Console.WriteLine("创建input output数组失败");
                return(-1);
            }
            int numIndex = 3;

            for (int i = 0; i < sampleNum; i++)
            {
                for (int j = 0; j < inputNodeNum; j++)
                {
                    input[i, j] = ElemType.Parse(integerStrings[numIndex]);
                    numIndex++;
                }
                for (int k = 0; k < outputNodeNum; k++)
                {
                    output[i, k] = ElemType.Parse(integerStrings[numIndex]);
                    numIndex++;
                }
            }

            return(0);
        }
Пример #15
0
        /// <summary>
        /// 获得Tick数据集合
        /// </summary>
        /// <param name="pFilePath"></param>
        /// <param name="pDirectoryName"></param>
        /// <returns></returns>
        public static List <Tick> GetTicksFromCSV(string pFilePath, string pDirectoryName)
        {
            Tick tick;

            string[]     strs;
            List <Tick>  listTicks = new List <Tick>();
            FileStream   fs        = new FileStream(pFilePath, FileMode.Open, FileAccess.Read);
            StreamReader sr        = new StreamReader(fs, Encoding.Default);
            string       line      = sr.ReadLine();

            while (line != null)
            {
                strs = line.Split(',');
                DateTime dt = DateTime.ParseExact(pDirectoryName + " " + int.Parse(strs[19]).ToString("D6"), "yyyyMMdd HHmmss", null);
                if (dt.Hour < 3 && dt.Hour >= 0)
                {
                    dt = dt.AddDays(1);
                }
                tick = new Tick
                {
                    InstrumentID   = strs[0],
                    LastPrice      = Numeric.Parse(strs[1]),
                    Volume         = int.Parse(strs[2]),
                    BidPrice       = Numeric.Parse(strs[6]),
                    BidVolume      = int.Parse(strs[7]),
                    AskPrice       = Numeric.Parse(strs[4]),
                    AskVolume      = int.Parse(strs[5]),
                    UpdateTime     = dt.ToString("yyyyMMdd HH:mm:ss"),
                    UpdateMillisec = 0,
                    OpenInt        = Numeric.Parse(strs[11]),
                };
                //过滤无用数据
                if (tick.AskPrice * tick.BidPrice * tick.Volume * tick.AskVolume * tick.BidVolume > 0)
                {
                    listTicks.Add(tick);
                }
                line = sr.ReadLine();
            }
            sr.Close();
            fs.Close();
            return(listTicks);
        }
Пример #16
0
 public static void Parse <T>(string s, ref T valueType, string leftParenth, string rightParenth, char divider)
     where T : IAdvanceValueType
 {
     if (s == null)
     {
         throw new ArgumentNullException("s");
     }
     string[] parts = SpritString(s, divider, new string[] { leftParenth, rightParenth });
     if (parts.Length != valueType.Count)
     {
         throw new FormatException(
                   string.Format("Cannot parse the text '{0}' because it does not have {1} parts.",
                                 s, valueType.Count));
     }
     Scalar[] result = new Scalar[valueType.Count];
     for (int index = 0; index < valueType.Count; ++index)
     {
         result[index] = Scalar.Parse(parts[index]);
     }
     valueType.CopyFrom(result, 0);
 }
Пример #17
0
 public static ALVector2D Parse(string text)
 {
     string[] vals = text.Trim(' ', '(', '[', '<', ')', ']', '>').Split(new char[] { ',' });
     if (vals.Length != 2)
     {
         throw new FormatException(string.Format("Cannot parse the text '{0}' because it does not have 2 parts separated by commas in the form (x,y) with optional parenthesis.", text));
     }
     else
     {
         try
         {
             ALVector2D returnvalue;
             returnvalue.Angular = Scalar.Parse(vals[0]);
             returnvalue.Linear  = Vector2D.Parse(vals[1]);
             return(returnvalue);
         }
         catch (Exception ex)
         {
             throw new FormatException("The parts of the vectors must be decimal numbers", ex);
         }
     }
 }
Пример #18
0
 private void SetFloatValue(BulletWriter writer, XmlNode valueNode, int offset)
 {
     writer.Write(Scalar.Parse(valueNode.InnerText, CultureInfo.InvariantCulture), offset);
 }
Пример #19
0
        public static SoftBody CreateFromTetGenData(SoftBodyWorldInfo worldInfo,
                                                    string ele, string face, string node, bool faceLinks, bool tetraLinks, bool facesFromTetras)
        {
            CultureInfo culture = CultureInfo.InvariantCulture;

            char[]    separator = new[] { ' ' };
            Vector3[] pos;

            using (var nodeReader = new StringReader(node))
            {
                string[] nodeHeader = nodeReader.ReadLine().Split(separator, StringSplitOptions.RemoveEmptyEntries);
                int      numNodes   = int.Parse(nodeHeader[0]);
                //int numDims = int.Parse(nodeHeader[1]);
                //int numAttrs = int.Parse(nodeHeader[2]);
                //bool hasBounds = !nodeHeader[3].Equals("0");

                pos = new Vector3[numNodes];
                for (int n = 0; n < numNodes; n++)
                {
                    string[] nodeLine = nodeReader.ReadLine().Split(separator, StringSplitOptions.RemoveEmptyEntries);
                    pos[int.Parse(nodeLine[0])] = new Vector3(
                        Scalar.Parse(nodeLine[1], culture),
                        Scalar.Parse(nodeLine[2], culture),
                        Scalar.Parse(nodeLine[3], culture));
                }
            }
            var psb = new SoftBody(worldInfo, pos.Length, pos, null);

            /*
             * if (!string.IsNullOrEmpty(face))
             * {
             *      throw new NotImplementedException();
             * }
             */
            if (!string.IsNullOrEmpty(ele))
            {
                using (var eleReader = new StringReader(ele))
                {
                    string[] eleHeader = eleReader.ReadLine().Split(separator, StringSplitOptions.RemoveEmptyEntries);
                    int      numTetras = int.Parse(eleHeader[0]);
                    //int numCorners = int.Parse(eleHeader[1]);
                    //int numAttrs = int.Parse(eleHeader[2]);

                    for (int n = 0; n < numTetras; n++)
                    {
                        string[] eleLine = eleReader.ReadLine().Split(separator, StringSplitOptions.RemoveEmptyEntries);
                        //int index = int.Parse(eleLine[0], culture);
                        int ni0 = int.Parse(eleLine[1], culture);
                        int ni1 = int.Parse(eleLine[2], culture);
                        int ni2 = int.Parse(eleLine[3], culture);
                        int ni3 = int.Parse(eleLine[4], culture);
                        psb.AppendTetra(ni0, ni1, ni2, ni3);
                        if (tetraLinks)
                        {
                            psb.AppendLink(ni0, ni1, null, true);
                            psb.AppendLink(ni1, ni2, null, true);
                            psb.AppendLink(ni2, ni0, null, true);
                            psb.AppendLink(ni0, ni3, null, true);
                            psb.AppendLink(ni1, ni3, null, true);
                            psb.AppendLink(ni2, ni3, null, true);
                        }
                    }
                }
            }

            //Console.WriteLine("Nodes: {0}", psb.Nodes.Count);
            //Console.WriteLine("Links: {0}", psb.Links.Count);
            //Console.WriteLine("Faces: {0}", psb.Faces.Count);
            //Console.WriteLine("Tetras: {0}", psb.Tetras.Count);

            return(psb);
        }
Пример #20
0
        private bool CheckPackageValidity()
        {
            if (Name.Contains(@"\") || Name.Contains(@"/") || Name.Contains(@"*"))
            {
                ErrorString = Resources.PackageNameCannotContainTheseCharacters;
                return(false);
            }

            if (Name.Length < 3)
            {
                ErrorString = Resources.NameNeedMoreCharacters;
                return(false);
            }

            if (Description.Length <= 10)
            {
                ErrorString = Resources.DescriptionNeedMoreCharacters;
                return(false);
            }

            if (MajorVersion.Length <= 0)
            {
                ErrorString = Resources.MajorVersionNonNegative;
                return(false);
            }

            if (MinorVersion.Length <= 0)
            {
                ErrorString = Resources.MinorVersionNonNegative;
                return(false);
            }

            if (BuildVersion.Length <= 0)
            {
                ErrorString = Resources.BuildVersionNonNegative;
                return(false);
            }

            if (Double.Parse(BuildVersion) + Double.Parse(MinorVersion) + Double.Parse(MajorVersion) <= 0)
            {
                ErrorString = Resources.VersionValueGreaterThan0;
                return(false);
            }

            if (!PackageContents.Any())
            {
                ErrorString = Resources.PackageNeedAtLeastOneFile;
                return(false);
            }

            if (UploadState != PackageUploadHandle.State.Error)
            {
                ErrorString = "";
            }

            if (Uploading)
            {
                return(false);
            }

            return(true);
        }
Пример #21
0
        private bool P_Step()
        {
            bool r = P_Position < _input.Length;

            if (r)
            {
                char         c = _input[P_Position];
                int          TableStackUBound = P_TableStack.Count - 1;
                P_TableLevel CurrentTable     = null;
                bool         EndingBlock      = false;

                if (P_TableStack.Count > 0)
                {
                    CurrentTable = P_TableStack[TableStackUBound];
                }

                // To know when to end a stream block
                #region BlockEnder
                if (c == '|')
                {
                    P_FailSafeEndCharCount++;
                    if (!P_CharEscapedInString)
                    {
                        P_EndCharCount++;
                    }
                    if (P_EndCharCount == 2 | P_FailSafeEndCharCount == 2)
                    {
                        EndingBlock = true;
                    }
                }
                else
                {
                    if (P_EndCharCount == 1)
                    {
                        P_ThrowError(1);
                    }
                    P_FailSafeEndCharCount = 0;
                    P_EndCharCount         = 0;
                }
                #endregion

                if (P_ErrorCode == 0) // If no error then...
                {
                    bool CharIsHandled         = false;
                    bool String_IsFirstBracket = false;

                    #region Value Type Determiner
                    if (P_ValueParser_ValueType == -1)
                    {
                        switch (c)
                        {
                        case 'T':
                        case 'F':
                            P_ValueParser_ValueType = 1;     // Boolean
                            CharIsHandled           = true;
                            break;

                        case 'N':
                            P_ValueParser_ValueType = 0;     // null
                            CharIsHandled           = true;
                            break;

                        case '\"':
                            P_ValueParser_ValueType  = 4;    // String
                            String_IsFirstBracket    = true;
                            P_ValueParser_StringMode = true;
                            CharIsHandled            = true;
                            break;

                        case '[':
                            P_TableLevel NewTableLevel = new P_TableLevel();
                            NewTableLevel.Table = new TableValue();
                            P_TableStack.Add(NewTableLevel);
                            CharIsHandled = true;
                            break;

                        default:
                            if (P_IsCharNumber(c))
                            {
                                P_ValueParser_ValueType = 2;     // Int
                                CharIsHandled           = true;
                            }

                            break;
                        }
                    }
                    #endregion

                    #region Value Extractor
                    // Parse the value.
                    if (P_ValueParser_ValueType >= 0)
                    {
                        switch (P_ValueParser_ValueType)
                        {
                        case 0:     // null
                        case 1:     // Boolean
                            if (P_ValueParser_ValueRaw.Length == 0)
                            {
                                P_ValueParser_ValueRaw.Append(c);
                            }
                            else
                            {
                                IAbstractValue o = null;
                                switch (P_ValueParser_ValueRaw[0])
                                {
                                case 'N':
                                    o = null;
                                    break;

                                default:
                                    o = new BooleanValue(P_ValueParser_ValueRaw[0] == 'T');
                                    break;
                                }
                                P_ValueParser_OutputValue(o);
                            }
                            CharIsHandled = true;
                            break;

                        case 2:     // Int
                        case 3:     // Float
                            if (P_IsCharNumber(c))
                            {
                                P_ValueParser_ValueRaw.Append(c);
                            }
                            else if (c == '.')
                            {
                                if (P_ValueParser_ValueType == 2)
                                {
                                    P_ValueParser_ValueType = 3;
                                    P_ValueParser_ValueRaw.Append(c);
                                }
                                else
                                {
                                    P_ThrowError(1);     // There should not be two decimals in the same number.
                                }
                            }
                            else if (P_ValueParser_ValueType == 2)
                            {
                                P_ValueParser_OutputValue(new IntValue(int.Parse(P_ValueParser_ValueRaw.ToString())));
                            }
                            else if (P_ValueParser_ValueType == 3)
                            {
                                P_ValueParser_OutputValue(new FloatValue(JsEncoder_Type_Float.Parse(P_ValueParser_ValueRaw.ToString())));
                            }
                            CharIsHandled = true;
                            break;

                        case 4:     // String
                            if (P_ValueParser_StringMode)
                            {
                                bool String_RecordChar = true;     // False to avoid recording current character into a string.

                                if (!P_CharEscapedInString)
                                {
                                    if (c == '\\')
                                    {
                                        String_RecordChar     = false;
                                        P_CharEscapedInString = true;
                                    }
                                    else if (c == '\"')
                                    {
                                        String_RecordChar = false;
                                        if (!String_IsFirstBracket)
                                        {
                                            P_ValueParser_StringMode = false;
                                            P_ValueParser_OutputValue(new StringValue(P_ValueParser_ValueRaw.ToString()));
                                        }
                                    }
                                }
                                else
                                {
                                    P_CharEscapedInString = false;
                                }

                                if (String_RecordChar)
                                {
                                    P_ValueParser_ValueRaw.Append(c);
                                }
                            }
                            CharIsHandled = true;
                            break;
                        }
                    }
                    #endregion

                    #region Table Parser
                    if (!P_ValueParser_StringMode && CurrentTable != null) // Only process these when not in a string.
                    {
                        int EndType = 0;
                        switch (c)
                        {
                        case ':':
                            if (!CurrentTable.PairHasCustomKey)
                            {
                                CurrentTable.PairHasCustomKey = true;
                                CurrentTable.V1         = P_ValueParser_TakeValue();
                                P_ValueParser_ValueType = -1;
                            }
                            else
                            {
                                P_ThrowError(1);
                            }
                            CharIsHandled = true;
                            break;

                        case ']':
                            EndType       = 2;
                            CharIsHandled = true;
                            break;

                        case ';':
                            EndType       = 1;
                            CharIsHandled = true;
                            break;
                        }
                        if (EndType > 0)
                        {
                            if (P_ValueParser_ValueType != -1)
                            {
                                CurrentTable.V2 = P_ValueParser_TakeValue();

                                if (CurrentTable.V2 != null)
                                {
                                    if (CurrentTable.V1 != null)
                                    {
                                        CurrentTable.Table[CurrentTable.V1] = CurrentTable.V2;
                                    }
                                    else
                                    {
                                        CurrentTable.IndexingUBound++;
                                        CurrentTable.Table[CurrentTable.IndexingUBound] = CurrentTable.V2;
                                    }
                                }
                            }

                            // Clear these so we can use them later.
                            CurrentTable.V1 = null;
                            CurrentTable.V2 = null;
                            CurrentTable.PairHasCustomKey = false;

                            if (EndType == 2)
                            {
                                // Close table and go back up.
                                P_TableStack.RemoveAt(TableStackUBound);
                                P_ValueParser_OutputValue(CurrentTable.Table);
                                P_ValueParser_ValueType = -2;
                            }
                            else //if (EndType == 1)
                            {
                                P_ValueParser_ValueType = -1;
                            }
                        }
                    }
                    #endregion

                    #region Character Ignore Handler
                    if (!CharIsHandled && (c == ' ' | c == '|' | c == '\n'))
                    {
                        CharIsHandled = true;
                    }
                    #endregion

                    // If nothing handled this character, it must be an error.
                    if (!CharIsHandled)
                    {
                        P_ThrowError(1);
                    }
                }

                P_Position++;

                if (EndingBlock)
                {
                    P_EndBlock();
                }
            }
            return(r);
        }
Пример #22
0
        /// <summary>
        /// 关联 this.chart1.GetToolTipText
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void chart1_GetToolTipText(object sender, ToolTipEventArgs e)
        {
            if (e.HitTestResult.ChartElementType == ChartElementType.DataPoint && e.HitTestResult.Series == this.chart1.Series[0])
            {
                DataPoint dp         = (DataPoint)e.HitTestResult.Object;
                DateTime  dt         = DateTime.FromOADate(dp.XValue);
                int       currentBar = _stra.NumDateTimes.Count - 1 - _stra.NumDateTimes.IndexOf(Numeric.Parse(dt.ToString("yyyyMMdd.HHmmss")));
                e.Text  = dt.ToString("yyyy/MM/dd[") + dt.ToString("ddd").Substring(1, 1) + "]";
                e.Text += "\r\n时间 = " + dt.TimeOfDay;
                e.Text += "\r\n开 = " + _stra.Opens[currentBar];
                e.Text += "\r\n高 = " + _stra.Highs[currentBar];
                e.Text += "\r\n低 = " + _stra.Lows[currentBar];
                e.Text += "\r\n收 = " + _stra.Closes[currentBar];
                e.Text += "\r\n量 = " + _stra.Volumes[currentBar];
                e.Text += "\r\n仓 = " + _stra.OpenInts[currentBar];
                e.Text += "\r\n[" + _stra.Name + "]";

                //指标提示
                //e.Text += "\r\n[指标]";
                foreach (var a in _stra.Indicators)
                {
                    string input = null;
                    if (a.Input == _stra.Highs)
                    {
                        input = "H";
                    }
                    else if (a.Input == _stra.Lows)
                    {
                        input = "L";
                    }
                    else if (a.Input == _stra.Opens)
                    {
                        input = "O";
                    }
                    else if (a.Input == _stra.Closes)
                    {
                        input = "C";
                    }
                    else if (a.Input == _stra.Volumes)
                    {
                        input = "V";
                    }
                    else if (a.Input == _stra.OpenInts)
                    {
                        input = "I";
                    }
                    if (input != null)
                    {
                        e.Text += "\r\n" + a.GetType().Name + "<" + input + ">(";
                        foreach (int p in a.Periods)
                        {
                            e.Text += p + ",";
                        }
                        e.Text  = e.Text.Remove(e.Text.Length - 1);
                        e.Text += ")";
                        if (a.DictCustomSeries.Count == 1)
                        {
                            e.Text += ":" + a.DictCustomSeries.ElementAt(0).Value[currentBar].ToString("F2");
                        }
                        else
                        {
                            foreach (var o in a.DictCustomSeries)
                            {
                                e.Text += "\r\n" + o.Key + " : " + o.Value[currentBar].ToString("F2");
                            }
                        }
                    }
                }

                //跨周期
                if (_stra.DictPeriodValue.Count > 0)
                {
                    e.Text += "\r\n------ 跨周期 ------";
                }
                foreach (var a in _stra.DictPeriodValue)
                {
                    var ldt = _stra.DictPeriodTime[a.Key].LastOrDefault(n => n <= dt);

                    int    curBar = _stra.DictPeriodTime[a.Key].Count - _stra.DictPeriodTime[a.Key].IndexOf(ldt);
                    string i3     = "";
                    switch (a.Key.Item3)
                    {
                    case PeriodType.Tick:
                        i3 = "笔";
                        break;

                    case PeriodType.Second:
                        i3 = "秒";
                        break;

                    case PeriodType.Minute:
                        i3 = "分";
                        break;

                    case PeriodType.Hour:
                        i3 = "时";
                        break;

                    case PeriodType.Day:
                        i3 = "天";
                        break;

                    case PeriodType.Week:
                        i3 = "周";
                        break;

                    case PeriodType.Month:
                        i3 = "月";
                        break;

                    case PeriodType.Year:
                        i3 = "年";
                        break;
                    }
                    e.Text += "\r\n↑" + a.Key.Item1 + " " + a.Key.Item2 + i3 + " : " + a.Value[curBar].ToString("F2");

                    //指标提示
                    foreach (var i in _stra.Indicators.Where(n => n.Input == a.Value))
                    {
                        e.Text += "\r\n↑" + i.GetType().Name + "(";
                        foreach (int p in i.Periods)
                        {
                            e.Text += p + ",";
                        }
                        e.Text  = e.Text.Remove(e.Text.Length - 1);
                        e.Text += ")";
                        if (i.DictCustomSeries.Count == 1)
                        {
                            e.Text += ":" + i.DictCustomSeries.ElementAt(0).Value[curBar].ToString("F2");
                        }
                        else
                        {
                            foreach (var o in i.DictCustomSeries)
                            {
                                e.Text += "\r\n" + o.Key + " : " + o.Value[curBar].ToString("F2");
                            }
                        }
                    }
                }

                //交易提示
                //foreach (Operation o in v.Value.Operations.Where(n => n.D == dt))
                for (int i = 0; i < _stra.Operations.Count; i++)
                {
                    var o = _stra.Operations[i];
                    if (o.Date == dt)
                    {
                        e.Text += $"\r\n{(o.Dir == Direction.Buy ? "买" : "卖")}{(o.Offset == Offset.Open ? "开" : "平")} {o.Lots}@{o.Price:.2}";
                        e.Text += $"\r\n[{o.Remark}]";
                    }
                }
            }
        }
Пример #23
0
        /// <summary>
        /// Delegate used to submit the element </summary>
        private bool CanSubmit()
        {
            // Typically, this code should never be seen as the publish package dialogs should not
            // be active when there is no authenticator
            if (dynamoViewModel == null || !dynamoViewModel.Model.PackageManagerClient.HasAuthProvider)
            {
                ErrorString = Resources.CannotSubmitPackage;
                return(false);
            }

            if (Name.Contains(@"\") || Name.Contains(@"/") || Name.Contains(@"*"))
            {
                ErrorString = Resources.PackageNameCannotContainTheseCharacters;
                return(false);
            }

            if (Name.Length < 3)
            {
                ErrorString = Resources.NameNeedMoreCharacters;
                return(false);
            }

            if (Description.Length <= 10)
            {
                ErrorString = Resources.DescriptionNeedMoreCharacters;
                return(false);
            }

            if (MajorVersion.Length <= 0)
            {
                ErrorString = Resources.MajorVersionNonNegative;
                return(false);
            }

            if (MinorVersion.Length <= 0)
            {
                ErrorString = Resources.MinorVersionNonNegative;
                return(false);
            }

            if (BuildVersion.Length <= 0)
            {
                ErrorString = Resources.BuildVersionNonNegative;
                return(false);
            }

            if (Double.Parse(BuildVersion) + Double.Parse(MinorVersion) + Double.Parse(MajorVersion) <= 0)
            {
                ErrorString = Resources.VersionValueGreaterThan0;
                return(false);
            }

            if (!PackageContents.Any())
            {
                ErrorString = Resources.PackageNeedAtLeastOneFile;
                return(false);
            }

            if (UploadState != PackageUploadHandle.State.Error)
            {
                ErrorString = "";
            }

            if (Uploading)
            {
                return(false);
            }

            return(true);
        }
Пример #24
0
 public LithpFloat(string value)
 {
     this.value = NumberType.Parse(value);
 }
Пример #25
0
        /// <summary>
        /// Delegate used to submit the element </summary>
        private bool CanSubmit()
        {
            // Typically, this code should never be seen as the publish package dialogs should not
            // be active when there is no authenticator
            if (dynamoViewModel == null || !dynamoViewModel.Model.PackageManagerClient.HasAuthenticator)
            {
                ErrorString = "Your package must contain at least one file.";
                return(false);
            }

            if (Name.Contains(@"\") || Name.Contains(@"/") || Name.Contains(@"*"))
            {
                ErrorString = @"The name of the package cannot contain /,\, or *.";
                return(false);
            }

            if (Name.Length < 3)
            {
                ErrorString = "Name must be at least 3 characters.";
                return(false);
            }

            if (Description.Length <= 10)
            {
                ErrorString = "Description must be longer than 10 characters.";
                return(false);
            }

            if (MajorVersion.Length <= 0)
            {
                ErrorString = "You must provide a Major version as a non-negative integer.";
                return(false);
            }

            if (MinorVersion.Length <= 0)
            {
                ErrorString = "You must provide a Minor version as a non-negative integer.";
                return(false);
            }

            if (BuildVersion.Length <= 0)
            {
                ErrorString = "You must provide a Build version as a non-negative integer.";
                return(false);
            }

            if (Double.Parse(BuildVersion) + Double.Parse(MinorVersion) + Double.Parse(MajorVersion) <= 0)
            {
                ErrorString = "At least one of your version values must be greater than 0.";
                return(false);
            }

            if (!PackageContents.Any())
            {
                ErrorString = "Your package must contain at least one file.";
                return(false);
            }

            if (UploadState != PackageUploadHandle.State.Error)
            {
                ErrorString = "";
            }

            if (Uploading)
            {
                return(false);
            }

            return(true);
        }