Как удалять запись после использования потоком?
-
Есть документ в котором строки, нужно что бы сразу после использования строки, она удалялась из файла, пробовал реализовать вторым пунктом в разделе TXT из файла, но не получалось.
-
-
@uraabk Попробовал сделать то что вы сказали не помогло, проблема ещё в том, что я попробовал посмотреть количество элементов в ресурсе и оно отображает 0.
Ресурс состоит так:
12345
54321
12343
34123
34123
То есть в список, и используется в блоке загрузить URL Ссылка:/Ресурс.
Как можно реализовать удаление, может быть сможете подсказать? Понимаю, что проблема скорее всего в том, что он в список.
-
И ещё нужно реализовать это в многопотоке, если такое возможно, т.е что бы каждый поток брал строку и после использования её удалял. Но я так понимаю, все эти действия нужно реализовывать в списке, а как можно сделать так что бы он брал каждый раз другой элемент из списка и удалял его после использования?
-
@qwerty если у вас список, то вы можете удалять из него элементы получая их...
-
@uraabk Можете подсказать, как это можно реализовать в многопотоке? Или оно будет работать так же как и с ресурсом из файла? Что бы каждый поток брал новую строчку, а затем её удалял. И перезписывал список. И опять же он будет брать первый элемент и удалять первый элемент, а если поток взял не первую строку на например 5?
-
@qwerty что то танцы с бубнами у вас какие то...
Попробуйте взяв ресурс из файла в каждом потоке, устанавливать этот ресурс любой переменной, (удалять его не забудьте) и работать с этой переменной как хотите. А потом просто повторять эти действия для следующих значений в ресурсе.
-
@uraabk Понял вас, просто проблема в том что ресурс у меня списком и BAS не отображает количество элементов в ресурсе, соответственно его нужно читать в список. А со списком в много потоке работать не получится, значит с ним нужно работать через массив Foreach, опишу вам задачу более детально, смотрите. Есть TXT в нём строки выглядят вот так:
12345
12345
12345
12345
12345
12345
В BAS я поставил использовать каждую строку 1 раз, после использования потока.
Так вот, после того как поток использовал строку, мне её нужно сразу же удалить из ресурса, но так как он идёт списком, я не могу сделать это через функцию удалить элемент, соответственно нужно читать его в список и делать это через массив Forech.
Т.е каждый поток берёт определённую строку из списка, использует её, затем удаляет её и перезаписывает список.Я в принципе опираюсь на свои знания, может быть можно это как то по другому реализовать?
-
@qwerty Можно установить глобальную переменную в виде списка, для работы в много потоке. И уже в каждом потоке брать (допустим первый элемент) удаляя его из глобального списка. Или же удалять его после использования.
-
@qwerty
В настройках ресурса добавьте галочку запись:
-
Вообще если использовать ресурс "из файла" с опцией Чтение и удаление строк, а внутри проекта использовать макрос {{RESOURCE_NAME|notreuse}} то каждыый поток будет брать уникальную строку а после перезапуска/выключения софта строки из файла будут удалятся. Это наиболее правильный вариант т.к если что то шаманить самому типа глобальных переменных или чтения файлов то у вас вопервых возрастет потребление памяти во вторых возможны всякого рода казусы типа занятого другим процессом файла и падения потока при этом
-
@qwaros said in Как удалять запись после использования потоком?:
Вообще если использовать ресурс "из файла" с опцией Чтение и удаление строк, а внутри проекта использовать макрос {{RESOURCE_NAME|notreuse}} то каждыый поток будет брать уникальную строку а после перезапуска/выключения софта строки из файла будут удалятся. Это наиболее правильный вариант т.к если что то шаманить самому типа глобальных переменных или чтения файлов то у вас вопервых возрастет потребление памяти во вторых возможны всякого рода казусы типа занятого другим процессом файла и падения потока при этом
Сразу видно человека, который с BAS работает, а не теоретика типа UserTrue или xclsv, которые лезут в тему с нулевыми знаниями по данному вопросу автора темы :D
-
@fastspace
Конечно. Куда нам.