Netspirit писал(а):
На уровне кода сервера делается только запрет/разрешение входящих подключений в процедуре MWnd(...).Да, тут тестировать придется. Остановимся пока на простейшем варианте
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Netspirit писал(а): На уровне кода сервера делается только запрет/разрешение входящих подключений в процедуре MWnd(...).Да, тут тестировать придется. Остановимся пока на простейшем варианте |
|||
карма: 22 |
|
Ответов: 4628
Рейтинг: 749
|
|||
Хорошо. У кого есть ещё какие соображения - высказывайте.
|
|||
карма: 26 |
|
Ответов: 127
Рейтинг: 0
|
|||
И снова Thread + TCP_Client.
Нестабильно и не всегда выдает ошибку и закрывает программу. Привожу модель. У меня в программе идет фоновое скачивание, плюс юзер работает. Видимо при одновременном подключении/открытии/скачивании глючит. В делфи стабильно работает даже с задержкой в полсекунды. code_30099.txt |
|||
карма: 0 |
| ||
файлы: 1 | code_30099.txt [3.4KB] [490] |
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
faniss писал(а): Нестабильно и не всегда выдает ошибку и закрывает программуПохоже, что разработчики компилятора так и не победили глюки с мультипоточностью |
|||
карма: 22 |
|
Ответов: 4628
Рейтинг: 749
|
|||
Возможно. Или где-то затаилась досадная ошибка, которая вылазит только на этом компиляторе. Наподобии той, что в XPMenus.pas, которую я раньше описывал. faniss, за схему спасибо, буду разбираться.
|
|||
карма: 26 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Netspirit писал(а): Наподобии той, что в XPMenus.pasА что там было ------------ Дoбавленo в 17.37: Netspirit писал(а): Или где-то затаилась досадная ошибка, которая вылазит только на этом компилятореЯ пробовал к старому FPC подцепить мультипоточный режим на API, че-то у меня он не очень устойчиво работал. Молча сваливался иногда. Что-то мне так кажется, что некорректно идет обращение к куче, те в стек попадают не валидные адреса |
|||
карма: 22 |
|
Ответов: 4628
Рейтинг: 749
|
|||
nesco писал(а): А что там былоВ процедуре TXPMenu._MeasureItem объявляется переменная Bound типа Integer (4 байта), структура bb (6 байт) и указывается разместить структуру bb в адресном пространстве переменной Bound. В этом случае присвоение значения полю bb.ShiftWidth затирает 2 байта, лежащие за памятью, выделенной под переменную Bound. Почему на старых компиляторах не давало Access violation - не знаю, но на FPC 2.6.0 выдавало. |
|||
карма: 26 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Netspirit писал(а): объявляется переменная Bound типа IntegerЭто указатель на начало записи bb, об этом говорит директива absolute. Это еще один минус разработчикам FPC |
|||
карма: 22 |
|
Ответов: 4628
Рейтинг: 749
|
|||
Нет, это bb - указатель на Bound. Это минус автору кода.
|
|||
карма: 26 |
|
Разработчик
Ответов: 26113
Рейтинг: 2126
|
|||
Netspirit писал(а): это bb - указатель на BoundТогда вопрос -- почему делфя не выдает ошибку Да и вообще-то это не совсем указатель, это -- двойная переменная, имеющая один адрес, но разные типы. Блин, а ведь точно, ShiftWidth я добавил уже потом, не придав значения директиве. Хорошо, понятно, а как ты это поправил Надо же исправить, не оставлять же так |
|||
карма: 22 |
| ||
Голосовали: | Netspirit |
Ответов: 4628
Рейтинг: 749
|
|||
Почему не выдает ошибку - зависит от многих факторов, типа выравнивания локальных переменных - простых и record - в стеке, размещения в стеке входных параметров функций и возвращаемых результатов, которое в частности зависит и от настроек компилятора.
Как поправил. Чисто логически нужно размещать меньшую переменную в памяти большей bb:packed record
Height:word; Width:word; ShiftWidth:word; end; Bound:integer absolute bb; НО, конкретно в этой процедуре в этом нет никакой необходимости, так как наружу из процедуры требуется выдать только bb.Height + bb.Width, а ShiftWidth - это обычная локальная переменная. Поэтому предлагаю code_30102.txt [offtop]А вот имитация, на которой баг таки вылазит: test absolute bug.sha[/offtop] ------------ Дoбавленo в 12.45: faniss, твой code_30085.txt в Delphi тоже стабильно падает, так что в этом случае причина не в компиляторе, а в особенностях работы паралельных потоков с визуальными компонентами (да и многими другими, которые не тестировались на такое использование). Проблема с TCP пока остается. |
|||
карма: 26 |
| ||
файлы: 1 | code_30102.txt [1.9KB] [525] | ||
Голосовали: | nesco, faniss |
Ответов: 127
Рейтинг: 0
|
|||
Netspirit писал(а): в Delphi тоже стабильно падаетNetspirit, я в курсе. Схема из другой темы, не знаю как она здесь оказалась. |
|||
карма: 0 |
|
Ответов: 4628
Рейтинг: 749
|
|||
А-а-а. Это бывает если редактируешь сообщение с аттачем, потом делаешь "Сбросить" и начинаешь редактированть другое сообщение. Тогда аттачи кочуют в это новое сообщение. В общем, если сообщение с аттачем, нужно всегда завершать редактирование по "Отправить".
|
|||
карма: 26 |
|
Ответов: 258
Рейтинг: -27
|
|||
не работает BorderStyle если Ctl3D включен
code_30131.txt ------------ Дoбавленo в 11.16: А MMTimer убивает программу почти мгновенно ------------ Дoбавленo в 18.58: RichText как и в старом FPC нельзя загружать картинку , в этой версии тоже так будет? |
|||
карма: 0 |
| ||
файлы: 1 | code_30131.txt [243B] [487] | ||
Голосовали: | Netspirit |
Ответов: 413
Рейтинг: 57
|
|||
Размещаю на пустой форме два объекта, например RichEdit или ChildPanel и между ними Splitter не работает.
code_30177.txt [flood]Есть еще ошибочка: Программа компилируется на FPC нормально (windows XP), без ошибок, но при закрытии выдает такую ошибку: An unhandled exception occurred at $004429934: EAccessVialation: Access vialation $00429934 $00438EEB Ошибка происходит когда команда поступает на точку doClose главной формы, на точке onClose и Close ничего не весит. Попробовал по частям удалять куски схемы и взаимосвязи от удаленных кусков не заметил, в какой то момент ошибка пропадает, но при повторении эксперимента она пропадает при удалении другой части программы. Может эта ошибка как-то связана с большим числом компонентов в схеме All: 4235, sdk: 134, MultiElements: 112, Core: 1934, links: 0, points: 11042 Создать маленький пример схемы с такой ошибкой не получается.[/flood] |
|||
карма: 0 |
| ||
файлы: 1 | code_30177.txt [404B] [514] |