![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
![]()
cs12, вроде - это значит немножко беременна...
|
![]() |
![]() |
![]() |
#12 |
Пользователь
Регистрация: 23.03.2014
Сообщений: 24
|
![]()
macomics, ну вот я оригинальный код вставил - это не попробовал? Или может я не догнал, что имеется в виду...
upd:попробовал через TStreamreader Readline - тоже работает так же проблемно, даже если файл каждую секунду считывать |
![]() |
![]() |
![]() |
#13 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
![]()
Попробуйте вот это:
Код:
|
![]() |
![]() |
![]() |
#14 |
Пользователь
Регистрация: 23.03.2014
Сообщений: 24
|
![]()
macomics, а он не может работать в UTF-8, да?
|
![]() |
![]() |
![]() |
#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. |
![]() |
![]() |
![]() |
#16 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
![]() |
![]() |
![]() |
![]() |
#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 |