Difference between revisions of "Tab.Next"
(→Примеры) |
m (1 revision imported) |
||
| (2 intermediate revisions by 2 users not shown) | |||
| Line 12: | Line 12: | ||
* [[Объекты]] | * [[Объекты]] | ||
* [[Таблица]]}} | * [[Таблица]]}} | ||
| − | Функция перемещает указатель текущей строки на следующую строку и возвращает единицу, если следующая строка существует, иначе возвращает ноль. Действие функции аналогично фрагменту <code><Таблица>.CurLine:=?(<Таблица>.CurLine=<Таблица>.Size(),<Таблица>.CurLine,<Таблица>.CurLine+1)</code>. Функция используется внутри цикла по обходу всех строк таблицы. | + | Функция перемещает указатель текущей строки на следующую строку и возвращает единицу, если следующая строка существует, иначе возвращает ноль. Действие функции аналогично фрагменту <code><Таблица>.CurLine:=?(<Таблица>.CurLine=<Таблица>.Size(),<Таблица>.CurLine,<Таблица>.CurLine+1)</code>. Функция используется внутри цикла по обходу всех строк таблицы. '''Важное замечание:''' для многопотоковых обращений эта функция может вызвать проблемы, так как использует атрибут [[Tab.CurLine|CurLine]], который не рекомендуется использовать в многопоточном режиме (not thread-safe). Если обращение к таблице просходит из разных потоков, лучше использовать функции поиска, типа [[Tab.Find|Find]] с индексами (к примеру, <code>Таб2["Столбец",аИндекс]</code>), либо функции блокировки [[LockObject]], [[UnlockObject]], чтобы иметь монопольный доступ к таблице на время ее обхода. |
== Синтаксис == | == Синтаксис == | ||
Latest revision as of 19:07, 27 December 2025
| Next (Выборка строк) | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| |||||||||||
Функция перемещает указатель текущей строки на следующую строку и возвращает единицу, если следующая строка существует, иначе возвращает ноль. Действие функции аналогично фрагменту <Таблица>.CurLine:=?(<Таблица>.CurLine=<Таблица>.Size(),<Таблица>.CurLine,<Таблица>.CurLine+1). Функция используется внутри цикла по обходу всех строк таблицы. Важное замечание: для многопотоковых обращений эта функция может вызвать проблемы, так как использует атрибут CurLine, который не рекомендуется использовать в многопоточном режиме (not thread-safe). Если обращение к таблице просходит из разных потоков, лучше использовать функции поиска, типа Find с индексами (к примеру, Таб2["Столбец",аИндекс]), либо функции блокировки LockObject, UnlockObject, чтобы иметь монопольный доступ к таблице на время ее обхода.
Синтаксис
Tab.Next():<Найдена следующая строка (INT)>
Возвращаемое значение
Возвращается 1, если найдена следующая строка, иначе возвращает 0.
Примеры
//Создается и заполняется таблица значений
aTab:=Tab.Create("b1,b2,b3,b4");
aTab.AddLine("b1,b2,b3,b4",1,2,3,4);
aTab.AddLine("b1,b2,b3,b4",2,2,3,4);
aTab.AddLine("b1,b2,b3,b4",3,5,5,4);
aTab.AddLine("b1,b2,b3,b4",4,2,3,4);
aTab.AddLine("b1,b2,b3,b4",4,2,3,4);
aTab.AddLine("b1,b2,b3,b4",5,2,3,4);
//Текущая строка равна 0
aTab.Select();
//Последовательное увеличение текущей строки, до тех пор, пока не достигнута последняя строка.
While aTab.Next() Do
Message("Строка "+aTab.CurLine+", b1:="+aTab.b1+", b2:="+aTab.b2+", b3:="+aTab.b3+", b4:="+aTab.b4);
//Будет выведено последовательно содержание ячеек для строк 1,2,3,4,5 и 6.
EndDo;