
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.9.171] |
![]() |
|
Сообщ.
#1
,
|
|
|
Пусть есть некий массив, в котором есть строки в таком формате. Сами строки задают алгоритму способ их обработки.
Нужно организовать правильную запись в файл: чтобы циклы обрабатывались как надо (циклы в цикле и т.д.). На текущий момент есть реализация "с циклами и обычными строками работает нормально" (он и выложен: обрабатывает данные хорошо). Можно ли его допилить здесь, чтобы он нормально циклы в цикле делал? Прикреплённый файл ![]() ![]() ![]() //ВЫЗОВ Ф-ЦИИ ОБРАБОТКИ МАССИВА. for (int i=0; g_asData_Array[i][0]!="-1"; i++) { if (g_asData_Array[i][0].Pos(RadioButton_Cycle_Begin->Caption) != 0) i = iWrite_Block(i, 1, 1, asFile_Name); //Прыгнуть на нужную позицию после цикла. else iWrite_Block(i, 1, 1, asFile_Name); //Избавиться от лишнего прыжка на 1 позицию. ProgressBar_File->Position = (100 * i) / StringGrid_Blocks->RowCount; } //Ф-ЦИЯ ОБРАБОТКИ МАССИВА. int __fastcall TForm_Main::iWrite_Block(const int iBlock_Begin, int iBlock_Count, int iCycle_Count, const AnsiString asFile_Name) { int iBlocks_Maked = iBlock_Count; //Для циклов, чтобы понять, насколько сдвинуться вниз. Application->ProcessMessages(); if (g_bCancel) return StringGrid_Blocks->RowCount; for (int i=iBlock_Begin; i<iBlock_Begin+iBlock_Count; i++) { //Запись данных (вырезано). //Вход в цикл. else if (g_asData_Array[i][0] == RadioButton_Cycle_Begin->Caption) { int iEnds_To_Skip = 0; //Если цикл в цикле - нужно скорректировать по дальнему концу цикла. iBlock_Count = 0; iCycle_Count = slSplit(g_asData_Array[i][1], g_asSeparator)->Strings[1].ToInt(); while (iEnds_To_Skip == 0) { while (g_asData_Array[iBlock_Count+i][0] != RadioButton_Cycle_End->Caption) { if (g_asData_Array[iBlock_Count+i][0] == RadioButton_Cycle_Begin->Caption) iEnds_To_Skip++; iBlock_Count++; } for (int j=0; j<iCycle_Count-1; j++) //*1. { iBlocks_Maked += iWrite_Block(iBlock_Begin+1, iBlock_Count-1, iCycle_Count, asFile_Name); } iEnds_To_Skip--; } //*1 должно быть здесь? } ProgressBar_Block->Position = (100 * i) / (iBlock_Begin + iBlock_Count); } return iBlock_Begin+iBlock_Count; } |
Сообщ.
#2
,
|
|
|
@Moderator Прошу перенести в "Разовые заказы и подработка".
|
Сообщ.
#3
,
|
|
|
Что, даже за деньги никто не может?
|
Сообщ.
#4
,
Сообщение отклонено: Rust -
|
Сообщ.
#5
,
|
|
|
Я все сам сделал давно.
|