@Fox В основном сколько я не делал так все по нулям. Поэтому я стал брезговать этим делом.
Как получить номер используемой строки ресурса в многопоточной функции?
-
Например, имеется ресурс из 10 строк {{RES}}:
строка1
строка2
...
строка10Функция выполняется в 2 потока. Потоки берут данные из ресурса последовательно и неограниченное число раз (по кругу).
Т.е.:
поток1 работает над строка1
поток2 работает над строка2
поток1 работает над строка3
поток2 работает над строка4
...
Затем, по достижению последней строки ресурса, потоки берут данные из ресурса повторно, начиная со "строка1".
поток1 работает над строка1
поток2 работает над строка2
и т.д.
Мне нужно в каждом потоке получить из ресурса номер строки, которая используется в данный момент. Как это сделать?Версия BAS 23.2.2
-
@botovod said in Как получить номер используемой строки ресурса в многопоточной функции?:
Или придется "прикручивать костыли", что-то наподобие: "преобразовать ресурс в список - получить индекс элемента списка по значению строки из ресурса"?
Yes. You can do Read File To List and then Get Index with:
Variable With List: [[LIST_WITH_FILE_CONTENT]]
Value: {{RES}}If the resource doesn't change during runtime, you can put Read FIle to List in the OnApplicationStart function and convert the variable into a global variable.
If the resource changes during runtime, you need to reload the resource, Read File to List after the resource has been reloaded and convert it to a global variable.Да. Вы можете выполнить Read File To List и затем Get Index с помощью:
Variable With List: [[LIST_WITH_FILE_CONTENT]].
Значение: {{RES}}.Если ресурс не меняется во время выполнения, вы можете поместить Read FIle to List в функцию OnApplicationStart и преобразовать переменную в глобальную переменную.
Если ресурс изменяется во время выполнения, необходимо перезагрузить ресурс, Read File to List после перезагрузки ресурса и преобразовать его в глобальную переменную. -
@simplyx said in Как получить номер используемой строки ресурса в многопоточной функции?:
Если ресурс не меняется во время выполнения, вы можете поместить Read FIle to List в функцию OnApplicationStart и преобразовать переменную в глобальную переменную.
Я могу создать глобальную переменную, содержащую список, но я не могу выбрать эту глобальную переменную при создании действия "получить Индекс" в разделе "Список".

Чтобы эта идея с преобразованием в список работала, пришлось преобразование ресурса в список выполнять внутри многопоточной функции (в каждом потоке). Это действие позволит сохранить результат в локальную переменную, из которой можно легко получить индекс строки в каждом конкретном потоке.
Но почему в действии "получить Индекс" (см. картинку) недоступны глобальные переменные (их просто нет в списке для выбора) мне не понятно!