Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Delphi |
![]() ![]() |
Топик располагается на нескольких страницах: ←Ctrl назад 1 .. 49 50 51 52 53 54 55 56 57 [58] |
ъъъъъ Member Откуда: Сообщений: 1966 |
softwarer, зачем придумывать самому себе страшилки? |
6 апр 21, 21:10 [22305192] Ответить | Цитировать Сообщить модератору |
softwarer Member Откуда: 127.0.0.1 Сообщений: 65410 Блог |
Исправил ошибки. |
||||
6 апр 21, 21:32 [22305199] Ответить | Цитировать Сообщить модератору |
Fr0sT-Brutal Member Откуда: Сообщений: 682 |
Нет. Она свидетельствует о том, что софт сделал что-то странное, непредусмотренное. Состояние, вполне вероятно, нарушено. В лучшем случае АВ будет повторяться снова и снова, в худшем - порча памяти, зацикливание и т.д. |
||||
7 апр 21, 10:31 [22305290] Ответить | Цитировать Сообщить модератору |
Maxim Rusov Member Откуда: Москва-Питер Сообщений: 2483 |
Как и любое исключение.
Если возникло AV - значит порчи памяти не было, система о тебе позаботилась. Гораздо хуже когда AV не возникло, а порча памяти была. Но тагда уже будут другие ошибки. 99% AV - это разыменование nil, обращение к полям неинициализированого объекта. На этот случай - младшие адреса адресного пространства приложения всегда защищены от записи. |
||||||||||||
7 апр 21, 10:57 [22305302] Ответить | Цитировать Сообщить модератору |
softwarer Member Откуда: 127.0.0.1 Сообщений: 65410 Блог |
В этот момент не было. Но AV нередко возникает в силу порчи памяти, случившейся ранее. |
||||
7 апр 21, 11:14 [22305313] Ответить | Цитировать Сообщить модератору |
Fr0sT-Brutal Member Откуда: Сообщений: 682 |
Файл не найден? Соединение с сервером отвалилось? Некорректные входные данные? Исключений миллион, и надо различать предусмотренные (возможные) либо нештатные.
AV может возникать уже постфактум. Вот ты говоришь - обращение по nil. А откуда nil взялся? Если баг в коде, это одно и поправимо. Но ведь порчу памяти своего же процесса система не отловит. Вдруг была перезапись, и в область данных был записан мусор? Нельзя доверять состоянию программы в этом случае. По-хорошему, даже сохранять конфиг нежелательно - он тоже м.б. битый. Сообщение было отредактировано: 7 апр 21, 12:41 |
||||||||
7 апр 21, 12:48 [22305363] Ответить | Цитировать Сообщить модератору |
softwarer Member Откуда: 127.0.0.1 Сообщений: 65410 Блог |
В то же время, по-хорошему, пользователь, который полчаса вбивал данные, очень не хотел бы их потерять. |
||||
7 апр 21, 13:19 [22305378] Ответить | Цитировать Сообщить модератору |
Мимопроходящий Member Откуда: бурятский тундрюк, эсквайр Сообщений: 32207 |
07.04.2021 13:19, softwarer пишет: > В то же время, по-хорошему, пользователь, который полчаса вбивал данные, очень не хотел бы их потерять. ога, при Access Violation in "ntdll.dll" Posted via ActualForum NNTP Server 1.5 |
7 апр 21, 13:38 [22305393] Ответить | Цитировать Сообщить модератору |
Maxim Rusov Member Откуда: Москва-Питер Сообщений: 2483 |
Вот - ListIndexOutOfBounds. Оно как - предусмотренное или нештатное? Тоже программу завершать будешь?
А по факту - иногда посмотришь серверные логи, а том сотни AV. А он работает 24/7 :) Я не говорю, что это хорошо - но бывает. Вообще, программы на Delphi довольно устойчивы к ошибкам. Чтобы она упала - это очень не повезти должно. |
||||||||
7 апр 21, 13:48 [22305400] Ответить | Цитировать Сообщить модератору |
Fr0sT-Brutal Member Откуда: Сообщений: 682 |
Зависит от ситуации. Как общее правило тут уже не отрубишь сплеча.
Ну да, когда я порчу ловил - у меня тоже крутилось неделями, сыпя AV периодически. Но это не детерминировано и потому даже хуже. Лучше уж когда сервер упал, чем когда месяцами втихую корруптит данные, и у клиентов внезапно обнуляются миллионные счета :)
Безусловно. Поэтому надо предусмотреть и сохранять во временный файл. Потому что пользователь, наверно, очень не хотел бы вместо счета на 100 руб получить счет на 4097097287 :) Сообщение было отредактировано: 7 апр 21, 14:22 |
||||||||||||||||
7 апр 21, 14:29 [22305424] Ответить | Цитировать Сообщить модератору |
didgik Member Откуда: Сообщений: 968 |
Вот жеж блин. По итогу оказалось, что grid_refresh в событии TitleClick очень нужная весч. И как теперь быть то? |
||||
8 апр 21, 14:32 [22305982] Ответить | Цитировать Сообщить модератору |
_Vasilisk_ Member Откуда: Украина, Харьков Сообщений: 12789 |
|
||||
8 апр 21, 14:52 [22306000] Ответить | Цитировать Сообщить модератору |
didgik Member Откуда: Сообщений: 968 |
Есть заголовок таблицы. Некоторые заголовки столбцов работают как локальная сортировка, а первая колонка "Все" должна отмечать или сбрасывать крыжики. Работает она через запрос, соответственно после запроса на крыжики надо перечитать данные, чтоб галочки появились или пропали, перечитываю по Close - Open, но тогда сбрасывается сортирока по столбцам, так как она локальная в датасете. К сообщению приложен файл. Размер - 77Kb |
||||||||
8 апр 21, 15:19 [22306015] Ответить | Цитировать Сообщить модератору |
_Vasilisk_ Member Откуда: Украина, Харьков Сообщений: 12789 |
DataSet.DisableControls; try BM := DataSet.GetBookmark; try DataSet.First; while not DataSet.Eof do begin DataSet.Fields[0].AsBoolean := True; DataSet.Next; end; DataSet.GotoBookmark(BM); finally DataSet.FreeBookmark(BM); end; finally DataSet.EnableControls; end; Сообщение было отредактировано: 8 апр 21, 15:50 |
||||
8 апр 21, 15:57 [22306041] Ответить | Цитировать Сообщить модератору |
JayDi Member Откуда: Сызрань, Россия Сообщений: 4173 |
госуслуги: время может отображаться со сдвигом в три часа К сообщению приложен файл. Размер - 8Kb |
12 апр 21, 13:05 [22307611] Ответить | Цитировать Сообщить модератору |
Мимопроходящий Member Откуда: бурятский тундрюк, эсквайр Сообщений: 32207 |
|
||||
12 апр 21, 13:07 [22307614] Ответить | Цитировать Сообщить модератору |
JayDi Member Откуда: Сызрань, Россия Сообщений: 4173 |
Кстати, довольно популярная ошибка. Когда хранишь даты в московском времени, а потом появляется задача отображать всё в разных часовых поясах. А если еще и база переедет на новый сервер в другом часовом поясе... ууу... Короче, если не продумать с самого начала -- можно большой геморрой отхватить в последствие. |
12 апр 21, 13:14 [22307617] Ответить | Цитировать Сообщить модератору |
Мимопроходящий Member Откуда: бурятский тундрюк, эсквайр Сообщений: 32207 |
|
||||
12 апр 21, 13:27 [22307630] Ответить | Цитировать Сообщить модератору |
Maxim Rusov Member Откуда: Москва-Питер Сообщений: 2483 |
Оказывается, в Delphi есть суровое ограничение - можно создать не более 1791 custom variant types. Причем - не одновременно, а вообще, инкрементально. При удалении типа - не освобождается. Казалось бы 1791 - должно хватить всем, а вот поди же ты - сегодня лимит был достигнут и сервак упал. Самое подлое - мне то они вообще нафиг не сдались. RTL их сам создает при инициализации модулей (Data.SqlTimSt, Data.FmtBcd). Казалось бы какие проблемы - оно же singleton. Но модули в Dll-ках, а вот Dll-ки - постоянно загружаются/выгружаются... |
12 апр 21, 15:55 [22307716] Ответить | Цитировать Сообщить модератору |
rgreat Member Откуда: Сообщений: 6653 |
Maxim Rusov, Как интересно... баг репорт надо. |
12 апр 21, 16:04 [22307721] Ответить | Цитировать Сообщить модератору |
softwarer Member Откуда: 127.0.0.1 Сообщений: 65410 Блог |
Зачем? Постоянно загружать/выгружать dll-ки - экстремально странное занятие, единственный результат которого - значительные потери производительности (хотя оно, конечно, такое же нелепо-популярное, как генерить интерфейс кодом в рантайме или компилить длл без рантайм-пакетов). Перегружать dll-ки нужно только если проводить обновление версии на ходу, без перезапуска приложения. |
||||
12 апр 21, 16:26 [22307732] Ответить | Цитировать Сообщить модератору |
Maxim Rusov Member Откуда: Москва-Питер Сообщений: 2483 |
softwarer, Dll-ка реализует сервис. Логично, что при остановке сервиса Dll-ка выгружается и освобождает ресурсы. Причем ресурсы - не только память, еще, например - лицензии. |
12 апр 21, 16:31 [22307733] Ответить | Цитировать Сообщить модератору |
softwarer Member Откуда: 127.0.0.1 Сообщений: 65410 Блог |
Сервис - в смысле, виндовый или в смысле какой-то внутри своего приложения? |
||||
12 апр 21, 16:36 [22307734] Ответить | Цитировать Сообщить модератору |
Maxim Rusov Member Откуда: Москва-Питер Сообщений: 2483 |
softwarer, По разному бывает, но в данном случае - сервис windows. Dll-ка - сервис, приложение - хост. |
12 апр 21, 16:39 [22307735] Ответить | Цитировать Сообщить модератору |
softwarer Member Откуда: 127.0.0.1 Сообщений: 65410 Блог |
Кто-то запускал-останавливал-запускал-останавливал сервис Windows, пока у приложения не кончились слоты под типы? Да, засада из серии "нарочно не придумаешь". Но опять же стоит заметить, что use runtime packages на DBRtl спас бы отца русской демократии и сервак никуда бы не упал. |
||||
12 апр 21, 16:44 [22307743] Ответить | Цитировать Сообщить модератору |
Топик располагается на нескольких страницах: ←Ctrl назад 1 .. 49 50 51 52 53 54 55 56 57 [58] |
Все форумы / Delphi | ![]() |