|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
29.04.2023, 19:10 | #1 |
Пользователь
Регистрация: 23.03.2014
Сообщений: 24
|
Работа с TFileStream виснет
Доброго времени!
Столкнулся со странным поведением потоков данных: Код:
В чём может быть проблема? И почему именно 4 раза? P.S. Если чем-то поможет: это всё внутри библиотеки. Библиотека не выгружается в этот момент, судя по параллельному потоку, который подаёт признаки жизни. sl - глобальный TStringList класса TLog, создаётся в конструкторе класса, уничтожается в деструкторе. Последний раз редактировалось cs12; 29.04.2023 в 19:17. |
29.04.2023, 22:40 | #2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,515
|
1. в критической секции.
2. в доступе у файлу.
программа — запись алгоритма на языке понятном транслятору
|
29.04.2023, 23:10 | #3 |
Пользователь
Регистрация: 23.03.2014
Сообщений: 24
|
evg_m,
1. Она, по сути, бесполезна, потому что с файлом работает только один поток.. да и освобождение происходит в секции finally. Но вообще, если бы в ней была проблема, до проблемной строки программа бы вообще не дошла. 2. Ну не может же доступа не быть всё время, рано или поздно файл всегда закрывается. Если файл удалить и создать заново, снова начать заполнять - ничего не меняется. |
29.04.2023, 23:20 | #4 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
А что не нравится в sl.LoadFromFile напрямую?
|
29.04.2023, 23:27 | #5 |
Пользователь
Регистрация: 23.03.2014
Сообщений: 24
|
macomics, стандартная блокировка fmShareDenyWrite. К слову, смысла в этом немного, потому что проблема та же
|
29.04.2023, 23:34 | #6 |
Пользователь
Регистрация: 23.03.2014
Сообщений: 24
|
Решил заменить проблемную строку кодом из-под капота, чтобы определить, что именно застревает. После определения размера файла идёт выделение буфера под него SetLength(Buffer, Size); - тут и зависает. Дальше не докопаться, уже в систему глубоко уходит. Программа просто не получает место на запрос, и неясно, почему. Просто вечно ждёт.
|
30.04.2023, 00:08 | #7 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
Так может лучше заменить этот код на работу с системной кучей или маппингом файла?
|
30.04.2023, 00:28 | #8 |
Пользователь
Регистрация: 23.03.2014
Сообщений: 24
|
macomics, да я вроде попытался
|
30.04.2023, 01:17 | #9 |
Участник клуба
Регистрация: 17.04.2022
Сообщений: 1,833
|
cs12, вроде?
|
30.04.2023, 11:04 | #10 |
Пользователь
Регистрация: 23.03.2014
Сообщений: 24
|
macomics, ага
|
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
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 |