|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
30.04.2023, 11:32 | #11 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
cs12, вроде - это значит немножко беременна...
|
30.04.2023, 11:33 | #12 |
Пользователь
Регистрация: 23.03.2014
Сообщений: 24
|
macomics, ну вот я оригинальный код вставил - это не попробовал? Или может я не догнал, что имеется в виду...
upd:попробовал через TStreamreader Readline - тоже работает так же проблемно, даже если файл каждую секунду считывать |
30.04.2023, 11:48 | #13 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Попробуйте вот это:
Код:
|
30.04.2023, 12:40 | #14 |
Пользователь
Регистрация: 23.03.2014
Сообщений: 24
|
macomics, а он не может работать в UTF-8, да?
|
30.04.2023, 13:30 | #15 |
Пользователь
Регистрация: 23.03.2014
Сообщений: 24
|
Фигня какая-то. Я перенёс finally с FreeAndNil(fs) в конец проедуры считывания, чтобы даже в случае ошибки она очищалась, поменял в основном потоке TThreadedQueue на TThreadList<T> и обернул в try ..except и почему-то всё работает как часы. Хотя except вообще не отрабатывает - ошибок нет. Помогла ли смена очереди на список - тоже хз. Сейчас всё работает через LoadFromStream. Что-то мне подсказывает, что проблема была в неоткрывшемся потоке fs, но ранее я запихивал его в бесконечный цикл с секундным ожиданием в случае ошибки и до тех пор, пока Assigned не вернёт true - не работало. Я так и не понял, в чём проблема.
В интернетах пишут, что до XE2 upd4 была какая-то проблема с PopItem у очередей, но у меня вообще delphi 11 (alexandria), одна из последних, а проблема была лет 10 назад. Кстати говоря, PopItem на пустой очереди в моей версии не возвращает ничего, даже если очередь пополняется, то есть просто поток зависает на ожидании. Может всё-таки ничего не исправили Последний раз редактировалось cs12; 30.04.2023 в 13:35. |
30.04.2023, 14:07 | #16 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
|
06.05.2023, 22:42 | #17 |
Пользователь
Регистрация: 23.03.2014
Сообщений: 24
|
Проблема была (скорее всего) в том, что библиотека даже при явном использовании внутри себя отдельных потоков TTask не устанавливала многопотоковый режим. Вручную в begin/end добавил IsMultiThread := true - вроде помогло
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
TFileStream | cb251132 | Общие вопросы Delphi | 16 | 06.10.2020 14:12 |
TFileStream | Baburek | C++ Builder | 3 | 04.07.2013 10:13 |
Работа со списками + виснет | byshido | Общие вопросы C/C++ | 1 | 04.01.2011 19:40 |
Простая работа с потоками TFileStream | exzibit | Общие вопросы Delphi | 2 | 27.02.2010 01:12 |
TFilestream | UnD)eaD)Snake | Win Api | 1 | 27.09.2007 21:22 |