|
|
|
Stream write error при TStringList.SaveToStream
|
|||
|---|---|---|---|
|
#18+
В нижеприведенном коде при вызове UOCFGStringList.SaveToStream(Stream); при невыясненных обстоятельствах у некоторых пользователей иногда вылетает ошибка EWriteError с сообщением Stream write error. И вторая, не связанная с первой, условия те же. При Stream.DisposeOf; (то, что в конце) вылетает EAccessViolation. Я как только не крутил - не могу представить себе, как и из-за чего это может быть. Может кто-то сталкивался? P.S. Дополнительные Stream создаются из-за fmShareDenyNone, которого нет в стандартном TStringList.SaveToFile. Т.к. файл с очень большой вероятностью может уже отрыт, то вот так делаю. P.P.S. с первым стримом, который для чтения - проблем нет вообще. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. На всякий случай приложил 2 репорта от эврики, с 2 ошибками. Гуглил, в основном все сводится к багам VS и советам проверить хендл файла в process explorer. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2018, 12:07 |
|
||
|
Stream write error при TStringList.SaveToStream
|
|||
|---|---|---|---|
|
#18+
жесть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2018, 13:43 |
|
||
|
Stream write error при TStringList.SaveToStream
|
|||
|---|---|---|---|
|
#18+
Наводящий вопрос: чем FreeAnd Nil отличается от .Free? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2018, 13:57 |
|
||
|
Stream write error при TStringList.SaveToStream
|
|||
|---|---|---|---|
|
#18+
GunSmokerНаводящий вопрос: чем FreeAnd Nil отличается от .Free? Во валит, а! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2018, 14:07 |
|
||
|
Stream write error при TStringList.SaveToStream
|
|||
|---|---|---|---|
|
#18+
GunSmokerНаводящий вопрос: чем FreeAnd Nil отличается от .Free? если это намек на то, что остается указатель на освобожденный класс остается после первого Stream.DisposeOf; и по какой-то причине не создается заново - так в блоке except для этого и стоит Exit. Или я что-то не так понял? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2018, 14:21 |
|
||
|
Stream write error при TStringList.SaveToStream
|
|||
|---|---|---|---|
|
#18+
Окей, наводящий вопрос №2: выполняются ли блоки finally при Exit изнутри? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2018, 14:26 |
|
||
|
Stream write error при TStringList.SaveToStream
|
|||
|---|---|---|---|
|
#18+
*задумался* Не знаю. а пойду-ка я проверю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2018, 14:28 |
|
||
|
Stream write error при TStringList.SaveToStream
|
|||
|---|---|---|---|
|
#18+
Vizit0r*задумался* Не знаю. а пойду-ка я проверю. занавес ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2018, 14:29 |
|
||
|
Stream write error при TStringList.SaveToStream
|
|||
|---|---|---|---|
|
#18+
Vizit0r*задумался* Не знаю. а пойду-ка я проверю. Блок finally выполняется всегда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2018, 14:32 |
|
||
|
Stream write error при TStringList.SaveToStream
|
|||
|---|---|---|---|
|
#18+
понял, спасибо. Порылся по коду, нашел сходу еще пару сомнительных мест, буду копать дальше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2018, 19:14 |
|
||
|
Stream write error при TStringList.SaveToStream
|
|||
|---|---|---|---|
|
#18+
Vizit0r, http://www.gunsmoker.ru/2018/03/riddle-23.html :) Я говорил, что лучше всегда использовать freeandnil. Даже локально. Но разве кто-то прислушивается? Ну ок, разгребайте баги тогда :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2018, 21:06 |
|
||
|
Stream write error при TStringList.SaveToStream
|
|||
|---|---|---|---|
|
#18+
Vizit0rпонял, спасибо. Порылся по коду, нашел сходу еще пару сомнительных мест, буду копать дальше. 1-е сомнительное место - в 8-й строчке кода. Она должна быть 6-й. Иначе очень возможно повторное другое исключение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2018, 21:13 |
|
||
|
Stream write error при TStringList.SaveToStream
|
|||
|---|---|---|---|
|
#18+
[quot YuRock]Vizit0r1-е сомнительное место - в 8-й строчке кода. Она должна быть 6-й. Иначе очень возможно повторное другое исключение. уже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2018, 22:21 |
|
||
|
Stream write error при TStringList.SaveToStream
|
|||
|---|---|---|---|
|
#18+
makhaonVizit0r, http://www.gunsmoker.ru/2018/03/riddle-23.html :) Я говорил, что лучше всегда использовать freeandnil. Даже локально. Но разве кто-то прислушивается? Ну ок, разгребайте баги тогда :) В коде гансмокера проблема совсем не в отсутствии freeandnil а в кривых блоках try..finally. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2018, 22:28 |
|
||
|
Stream write error при TStringList.SaveToStream
|
|||
|---|---|---|---|
|
#18+
Надо так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2018, 22:32 |
|
||
|
Stream write error при TStringList.SaveToStream
|
|||
|---|---|---|---|
|
#18+
Причем необходимость Stream := nil; не очевидна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.03.2018, 22:34 |
|
||
|
Stream write error при TStringList.SaveToStream
|
|||
|---|---|---|---|
|
#18+
makhaonVizit0r, http://www.gunsmoker.ru/2018/03/riddle-23.html :) Я говорил, что лучше всегда использовать freeandnil. Даже локально. Но разве кто-то прислушивается? Ну ок, разгребайте баги тогда :) http://www.nickhodges.com/post/Using-FreeAndNil.aspx “If your code requires you to use FreeAndNil to reveal and easily find bugs, then your design is wrong. Good, clean code never feels the need to worry about errant pointers.” Собственно, пример 21282207 это утверждение неплохо иллюстрирует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.03.2018, 10:47 |
|
||
|
Stream write error при TStringList.SaveToStream
|
|||
|---|---|---|---|
|
#18+
schi http://www.nickhodges.com/post/Using-FreeAndNil.aspx “If your code requires you to use FreeAndNil to reveal and easily find bugs, then your design is wrong. Good, clean code never feels the need to worry about errant pointers.” Собственно, пример 21282207 это утверждение неплохо иллюстрирует. Это не истина в последней инстанции, а мнение одного Ника, причем очень спорное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2018, 10:05 |
|
||
|
Stream write error при TStringList.SaveToStream
|
|||
|---|---|---|---|
|
#18+
Василий №2, FreeAndNil - один из инструментов, который помогает чистоте кода в том числе. Нравится людям зомби-ссылки хранить? Ну ок, хорошо :) Главное - что бы никому не навязывали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2018, 10:45 |
|
||
|
Stream write error при TStringList.SaveToStream
|
|||
|---|---|---|---|
|
#18+
makhaonFreeAndNil - один из инструментов, который помогает чистоте кода в том числе. у гансмокера в блобах хорошая статья по этому поводу была. Может Алексей заглянет сюда и кинет ссылкой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2018, 17:28 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39620652&tid=2041094]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
172ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
2ms |
| others: | 210ms |
| total: | 471ms |

| 0 / 0 |
