Как удалять запись после использования потоком?



  • Есть документ в котором строки, нужно что бы сразу после использования строки, она удалялась из файла, пробовал реализовать вторым пунктом в разделе TXT из файла, но не получалось.





  • @uraabk Попробовал сделать то что вы сказали не помогло, проблема ещё в том, что я попробовал посмотреть количество элементов в ресурсе и оно отображает 0.
    Ресурс состоит так:
    12345
    54321
    12343
    34123
    34123
    То есть в список, и используется в блоке загрузить URL Ссылка:/Ресурс.
    Как можно реализовать удаление, может быть сможете подсказать? Понимаю, что проблема скорее всего в том, что он в список.



  • И ещё нужно реализовать это в многопотоке, если такое возможно, т.е что бы каждый поток брал строку и после использования её удалял. Но я так понимаю, все эти действия нужно реализовывать в списке, а как можно сделать так что бы он брал каждый раз другой элемент из списка и удалял его после использования?



  • @qwerty если у вас список, то вы можете удалять из него элементы получая их...

    0_1551284767732_2019-02-27_192600.png



  • @uraabk Можете подсказать, как это можно реализовать в многопотоке? Или оно будет работать так же как и с ресурсом из файла? Что бы каждый поток брал новую строчку, а затем её удалял. И перезписывал список. И опять же он будет брать первый элемент и удалять первый элемент, а если поток взял не первую строку на например 5?



  • @qwerty что то танцы с бубнами у вас какие то...
    Попробуйте взяв ресурс из файла в каждом потоке, устанавливать этот ресурс любой переменной, (удалять его не забудьте) и работать с этой переменной как хотите. А потом просто повторять эти действия для следующих значений в ресурсе.



  • @uraabk Понял вас, просто проблема в том что ресурс у меня списком и BAS не отображает количество элементов в ресурсе, соответственно его нужно читать в список. А со списком в много потоке работать не получится, значит с ним нужно работать через массив Foreach, опишу вам задачу более детально, смотрите. Есть TXT в нём строки выглядят вот так:
    12345
    12345
    12345
    12345
    12345
    12345
    В BAS я поставил использовать каждую строку 1 раз, после использования потока.
    Так вот, после того как поток использовал строку, мне её нужно сразу же удалить из ресурса, но так как он идёт списком, я не могу сделать это через функцию удалить элемент, соответственно нужно читать его в список и делать это через массив Forech.
    Т.е каждый поток берёт определённую строку из списка, использует её, затем удаляет её и перезаписывает список.

    Я в принципе опираюсь на свои знания, может быть можно это как то по другому реализовать?



  • @qwerty Можно установить глобальную переменную в виде списка, для работы в много потоке. И уже в каждом потоке брать (допустим первый элемент) удаляя его из глобального списка. Или же удалять его после использования.



  • @qwerty
    В настройках ресурса добавьте галочку запись:
    0_1551322644757_ace77c03-3722-4239-adc8-70c4a4e35fbd-image.png



  • Вообще если использовать ресурс "из файла" с опцией Чтение и удаление строк, а внутри проекта использовать макрос {{RESOURCE_NAME|notreuse}} то каждыый поток будет брать уникальную строку а после перезапуска/выключения софта строки из файла будут удалятся. Это наиболее правильный вариант т.к если что то шаманить самому типа глобальных переменных или чтения файлов то у вас вопервых возрастет потребление памяти во вторых возможны всякого рода казусы типа занятого другим процессом файла и падения потока при этом



  • @qwaros said in Как удалять запись после использования потоком?:

    Вообще если использовать ресурс "из файла" с опцией Чтение и удаление строк, а внутри проекта использовать макрос {{RESOURCE_NAME|notreuse}} то каждыый поток будет брать уникальную строку а после перезапуска/выключения софта строки из файла будут удалятся. Это наиболее правильный вариант т.к если что то шаманить самому типа глобальных переменных или чтения файлов то у вас вопервых возрастет потребление памяти во вторых возможны всякого рода казусы типа занятого другим процессом файла и падения потока при этом

    Сразу видно человека, который с BAS работает, а не теоретика типа UserTrue или xclsv, которые лезут в тему с нулевыми знаниями по данному вопросу автора темы :D



  • @fastspace
    Конечно. Куда нам.


Log in to reply