AutoIT
Junior Member | Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору static bool Loaded = false; static string FileName; static string[] StringsInINI; static string[,,] ReadyString; public static string[] ReadNames(string ININame) { if (Loaded == false) Load(ININame); var Temp = ReadyString; string[] ReturnedArray = new string[Convert.ToInt32(Temp[0, 0, 0]) + 1]; ReturnedArray[0] = Temp[0, 0, 0]; for (int i = 1; i <= Convert.ToInt32(Temp[0, 0, 0]); i++) { ReturnedArray[i] = Temp[i, 1, 0]; } return ReturnedArray; } public static bool Load(string ININame) { try { StringsInINI = ReadINIFile(ININame); ReadyString = ProgrammRead(ININame); Loaded = true; FileName = ININame; return true; } catch { return false; } } #region Чтение файла в память private static string[] ReadINIFile(string ININame) { string Temp; int Count = 0; string[] STRM = new string[1000000]; Encoding Enc = Encoding.GetEncoding(1251); StreamReader SR = new StreamReader(ININame, Enc); while (SR.Peek() != -1) { Temp = SR.ReadLine(); if (Temp != "") { Count += 1; STRM[Count] = Temp; } } SR.Close(); STRM[0] = Count.ToString(); string[] ReturnedArray = new string[Count + 1]; ReturnedArray[0] = Count.ToString(); for (int i = 1; i <= Count; i++) { STRM[i] = STRM[i].Trim(); ReturnedArray[i] = STRM[i]; } return ReturnedArray; } private static string[,,] ProgrammRead(string ININame) { int CountOfStrings = Convert.ToInt32(StringsInINI[0]); int Count3 = 0, Count4 = 0; string[, ,] INIMembers = new string[CountOfStrings, 2, CountOfStrings]; string[] Temp = new string[10]; char[] CharsToTrim = { '[', ']' }; char[] CharsToSplit = { '=', ';' }; for (int i = 1; i <= CountOfStrings; i++) { if ((StringsInINI[i].Substring(0, 1) == "[") & (StringsInINI[i].Substring(StringsInINI[i].Length - 1, 1) == "]")) { Count3 += 1; StringsInINI[i] = StringsInINI[i].TrimEnd(CharsToTrim); StringsInINI[i] = StringsInINI[i].TrimStart(CharsToTrim); INIMembers[Count3, 1, 0] = StringsInINI[i]; int Count1 = i + 1, Count2 = 0; try { while ((StringsInINI[Count1].Substring(0, 1) != "[") & (StringsInINI[Count1].Substring(StringsInINI[Count1].Length - 1, 1) != "]")) { if ((StringsInINI[Count1] != "") & (StringsInINI[Count1].Substring(0, 1) != ";")) { Temp = StringsInINI[Count1].Split(CharsToSplit); INIMembers[Count3, 0, Count2 + 1] = Temp[0]; INIMembers[Count3, 1, Count2 + 1] = Temp[1]; Count2 += 1; Count1 += 1; } } } catch { }; if (Count4 < Count2) Count4 = Count2; INIMembers[Count3, 0, 0] = Count2.ToString(); } } string[, ,] ReturnedArray = new string[Count3 + 1, 2, Count4 + 1]; ReturnedArray[0, 0, 0] = Count3.ToString(); ReturnedArray[0, 1, 0] = Path.GetFileName(ININame); for (int i = 1; i <= Count3; i++) { ReturnedArray[i, 0, 0] = INIMembers[i, 0, 0]; ReturnedArray[i, 1, 0] = INIMembers[i, 1, 0]; for (int j = 1; j <= Convert.ToInt32(INIMembers[i, 0, 0]); j++) { ReturnedArray[i, 0, j] = INIMembers[i, 0, j]; ReturnedArray[i, 1, j] = INIMembers[i, 1, j]; } } return ReturnedArray; } #endregion | Всего записей: 77 | Зарегистр. 04-12-2008 | Отправлено: 12:09 01-05-2010 | Исправлено: AutoIT, 12:15 01-05-2010 |
|