示例#1
0
        /// <summary>
        /// エントリーの行からパラメータを抽出します。
        /// </summary>
        /// <param name="line">解析する行</param>
        /// <param name="entryName">エントリー名</param>
        /// <param name="entryValue">エントリーの値</param>
        static bool ParseLineAsEntry(string line, out string entryName, out string entryValue)
        {
            int nameBegin, nameEnd;
            int valueBegin, valueEnd;

            // find where the entry name begins
            nameBegin = Utl.IndexNotOfAny(line, " \t=", 0);
            if (nameBegin == -1)
            {
                goto error;
            }

            // find where the entry name ends
            nameEnd = Utl.LastIndexNotOfAny(line, " \t=", line.IndexOf("="));
            if (nameEnd == -1)
            {
                goto error;
            }
            nameEnd++;

            // find where the entry value begins
            valueBegin = Utl.IndexNotOfAny(line, " \t=", nameEnd);
            if (valueBegin == -1)
            {
                goto error;
            }

            // find where the entry value ends
            valueEnd = line.Length - 1;
            if (valueEnd == -1)
            {
                Debug.Fail("this case must not be occurred.");
                goto error;
            }
            valueEnd++;

            // extract entry's name and value
            entryName  = line.Substring(nameBegin, nameEnd - nameBegin);
            entryValue = line.Substring(valueBegin, valueEnd - valueBegin);

            return(true);

error:
            // if an error has occured, clear output values and exit
            entryName  = null;
            entryValue = null;

            return(false);
        }