У каждого потока свой путь к файлу.



  • Доброго времени вам! Столкнулся по моему со сложной проблемой.
    Мне нужно что бы каждый поток использовал свой путь к файлу.

    (скрин сценария ниже)

    1. Пункт списка. Я ищу все txt.файлы в папке и в подпапкам, после нахождение записываю их пути в список.
    2. Потом с помощи Foreach перебираю этот список (список путей).
    3. Каждый найденный путь я кидаю в "Читать файл в список".
    4. Потом перебираю этот файл который нашел по пути с помощи Foreach.
    5. И нахожу первую строчку и работаю с ней.
    • И у меня возникла проблема. Если я запускаю например 2 потока, то каждый из них использует один и тот же путь к файлу из списка.

    Как это сделать я не понимаю.
    Вот сценарий: 350ae16e-b16e-4588-a407-15eb0361e669-image.png
    Прошу вашу помощь!
    Если что то не поняли в моем вопросе то напишите! Любой вариант буду пробовать.



  • @QmlwZ said in У каждого потока свой путь к файлу.:

    Мне нужно что бы каждый поток использовал свой путь к файлу.

    Что бы не править путь до папок каждый раз в скрипте используйте ресурс "файлы из папки", далее в скрипте создаёте функцию OnApplicationStart, в ней находите все необходимые файлы (но не читаете их), создаёте локальный ресурс действием "Создать Ресурс" и помещаете список найденных файлов в этот ресурс.

    В функции main просто используете этот локальный ресурс, что бы получить путь до файла



  • @Fox спасибо за ответ!
    Но что то я не понял. Что за ресурс: Файлы из папки?
    Такого ресурса нет:
    796a476d-702f-409a-9e37-7ae09a0d0988-image.png
    И не понял как мне находить в функции OnApplicationStart все необходимые мне файлы.
    Мне еще нужны пути, а не файлы.



  • @QmlwZ said in У каждого потока свой путь к файлу.:

    Но что то я не понял. Что за ресурс: Файлы из папки?
    Такого ресурса нет:

    63e1f98a-e0d4-4033-ae5f-a9f0573ea426-изображение.png

    c9dc5960-e664-4071-9d10-7ed5d35223e7-изображение.png



  • @Fox оу! Спасибо :)
    Буду пробовать.



  • @Fox А как я понял мне в функции : OnApplicationStart находить файлы по такому же алгоритму который я делал выше и записывать их в список?



  • @QmlwZ said in У каждого потока свой путь к файлу.:

    @Fox А как я понял мне в функции : OnApplicationStart находить файлы по такому же алгоритму который я делал выше и записывать их в список?

    Я ваши художества не осилил, извините. Ищите файлы любым удобным для вас способом



  • @QmlwZ список найденных файлов запишите в ресурс и работайте в много потоке с ресурсом



  • @Fox хорошо.
    Просто я вот не как не могу понять, как именно брать из этого ресурса пути нужных мне папок.
    Это не работает (не чего не выводит):
    765df412-72b0-4b67-aeb1-d87c3cea7587-image.png
    Или вот как вы сказали записать найденные файлы в "Создать ресурс".
    c58de0f3-8938-4de0-823a-f93c2f34d2af-image.png
    Я просто не понимаю как это сделать. И куда потом прилеплять этот локальный ресурс что бы найти именно тот путь файла который мне нужен.



  • @Vaip а как найти этот список?
    Просто вот тот ресурс "Файлы из папки" пройтись через Foreach и записать в ресурс?
    И как я понял, потоки не будут использовать один и тот же путь к файлу ?



  • @QmlwZ создаёте ресурс, получаете файлы из папок, во вкладке ресурсы есть действие список в ресурс - записываете ваш список в ресурс, после чего работаете уже с ресурсом



  • @Vaip вы уш простите меня, но опять не чего до меня не дошло.

    1. 'Создаете ресурс'
      Я создал ресурс "Файлы из папки".
    2. 'Получаете файлы из папок'
      Я не понял как. Откуда их брать? Из ресурса "Файлы из папок"? Потом узнавать его путь, а потом делать "Поиск файлов" и потом через Foreach их записывать куда то?
    3. 'Список в ресурс'
      Я просто не понимаю, что за список и где мне его создавать и как туда записывать?
      Извините меня за такие вопросы, но я просто серьезно не понимаю логику скрипта, не могу разобраться.


  • @QmlwZ test.xml что то вроде этого



  • @Vaip спасибо!
    Теперь немного понятнее. Вы уш еще раз простите что не очень сообразительный.
    9d9684ca-1e91-44cb-a480-0cc19589afbb-image.png

    Немного не понять вот это: "Поиск файлов". В неё мы кладем ресурс под названием "Файлы из папки" - {{Имя}}
    А вот если мы все данные провели через цикл, то куда их девать потом? Или сразу же потоки будут использовать только 1 раз каждый их путей?



  • В общем то что то я сделал.
    e1f5a630-d5cb-4d58-814b-3a8356931dbb-image.png
    Но как использовать сам ресурс понятие не имею...



  • @QmlwZ [[FOREACH_DATA]] не является списком, это 1 элемент из списка, его нет толку класть в ресурс. Вам надо в ресурс добавлять весь список [[FILE_SEARCH_RESULT]]



  • @bigorat спасибо за ответ!
    Т.е даже нет смысла использовать Foreach?
    А сделал вот так:
    0e908983-9ba1-4a91-8506-3f6416e6fe4e-image.png
    Но вот если это например правильно, то как сам ресурс использовать?
    Пробовал опять же через foreach его проверять, выводит букву "E". Наверное потому что у меня путь начинается именно с файла "E:".



  • @QmlwZ я же вам скинул тест, в ресурс мы заносим все пути к файлам *. Тхт, в функции work берет путь к файлу и читаем его в список и уже с этим списком работаем



  • @Vaip да, я его видел.
    Но я не понимаю что куда записывать.
    c03f0de7-3e8e-46a8-bf4b-eedf34297f27-image.png
    Что делает ресурс put? Что потом с ним делать и как в него что то записывать?
    -{{папка}} я как понял это поиск фалов в ресурсе. Но как я его туда записываю то не чего не работает:
    6707d7d4-3d99-4b4c-b1c5-74db1b3fc1d2-image.png
    И я не вижу функцию 'work'.
    319652d0-fbb4-4548-b493-6610119e0470-image.png



  • В общем то как то сделал. Возможно неправильно, потому что, все равно каждый поток выводит один и тот же файл.
    4e23e802-0041-45be-bf85-b2ca7d66f1a4-image.png
    Вот результат:
    8a0ac79b-0256-4c67-be90-519d4d52118e-image.png