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