Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26066
Рейтинг: 2120
#136: 2013-01-17 12:56:33 ЛС | профиль | цитата
Netspirit писал(а):
На уровне кода сервера делается только запрет/разрешение входящих подключений в процедуре MWnd(...).

Да, тут тестировать придется. Остановимся пока на простейшем варианте
карма: 22

0
Ответов: 4621
Рейтинг: 746
#137: 2013-01-17 13:04:04 ЛС | профиль | цитата
Хорошо. У кого есть ещё какие соображения - высказывайте.
карма: 26

0
Ответов: 127
Рейтинг: 0
#138: 2013-01-17 17:08:59 ЛС | профиль | цитата
И снова Thread + TCP_Client.
Нестабильно и не всегда выдает ошибку и закрывает программу.
Привожу модель. У меня в программе идет фоновое скачивание, плюс юзер работает. Видимо при одновременном подключении/открытии/скачивании глючит.
В делфи стабильно работает даже с задержкой в полсекунды.
code_30099.txt
карма: 0

0
файлы: 1code_30099.txt [3.4KB] [411]
Разработчик
Ответов: 26066
Рейтинг: 2120
#139: 2013-01-17 17:17:45 ЛС | профиль | цитата
faniss писал(а):
Нестабильно и не всегда выдает ошибку и закрывает программу

Похоже, что разработчики компилятора так и не победили глюки с мультипоточностью
карма: 22

0
Ответов: 4621
Рейтинг: 746
#140: 2013-01-17 17:32:59 ЛС | профиль | цитата
Возможно. Или где-то затаилась досадная ошибка, которая вылазит только на этом компиляторе. Наподобии той, что в XPMenus.pas, которую я раньше описывал. faniss, за схему спасибо, буду разбираться.
карма: 26

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#141: 2013-01-17 17:37:59 ЛС | профиль | цитата
Netspirit писал(а):
Наподобии той, что в XPMenus.pas

А что там было
------------ Дoбавленo в 17.37:
Netspirit писал(а):
Или где-то затаилась досадная ошибка, которая вылазит только на этом компиляторе

Я пробовал к старому FPC подцепить мультипоточный режим на API, че-то у меня он не очень устойчиво работал. Молча сваливался иногда. Что-то мне так кажется, что некорректно идет обращение к куче, те в стек попадают не валидные адреса
карма: 22

0
Ответов: 4621
Рейтинг: 746
#142: 2013-01-17 17:50:43 ЛС | профиль | цитата
nesco писал(а):
А что там было

В процедуре TXPMenu._MeasureItem объявляется переменная Bound типа Integer (4 байта), структура bb (6 байт) и указывается разместить структуру bb в адресном пространстве переменной Bound. В этом случае присвоение значения полю bb.ShiftWidth затирает 2 байта, лежащие за памятью, выделенной под переменную Bound. Почему на старых компиляторах не давало Access violation - не знаю, но на FPC 2.6.0 выдавало.
карма: 26

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#143: 2013-01-17 18:56:11 ЛС | профиль | цитата
Netspirit писал(а):
объявляется переменная Bound типа Integer

Это указатель на начало записи bb, об этом говорит директива absolute. Это еще один минус разработчикам FPC
карма: 22

0
Ответов: 4621
Рейтинг: 746
#144: 2013-01-17 19:01:07 ЛС | профиль | цитата
Нет, это bb - указатель на Bound. Это минус автору кода.
карма: 26

0
Разработчик
Ответов: 26066
Рейтинг: 2120
#145: 2013-01-17 19:37:33 ЛС | профиль | цитата
Netspirit писал(а):
это bb - указатель на Bound

Тогда вопрос -- почему делфя не выдает ошибку Да и вообще-то это не совсем указатель, это -- двойная переменная, имеющая один адрес, но разные типы. Блин, а ведь точно, ShiftWidth я добавил уже потом, не придав значения директиве.
Хорошо, понятно, а как ты это поправил Надо же исправить, не оставлять же так
карма: 22

1
Голосовали:Netspirit
Ответов: 4621
Рейтинг: 746
#146: 2013-01-18 12:45:48 ЛС | профиль | цитата
Почему не выдает ошибку - зависит от многих факторов, типа выравнивания локальных переменных - простых и 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

2
файлы: 1code_30102.txt [1.9KB] [476]
Голосовали:nesco, faniss
Ответов: 127
Рейтинг: 0
#147: 2013-01-18 15:10:18 ЛС | профиль | цитата
Netspirit писал(а):
в Delphi тоже стабильно падает

Netspirit, я в курсе. Схема из другой темы, не знаю как она здесь оказалась.

карма: 0

0
Ответов: 4621
Рейтинг: 746
#148: 2013-01-18 16:18:55 ЛС | профиль | цитата
А-а-а. Это бывает если редактируешь сообщение с аттачем, потом делаешь "Сбросить" и начинаешь редактированть другое сообщение. Тогда аттачи кочуют в это новое сообщение. В общем, если сообщение с аттачем, нужно всегда завершать редактирование по "Отправить".
карма: 26

0
Ответов: 258
Рейтинг: -27
#149: 2013-01-21 18:58:14 ЛС | профиль | цитата
не работает BorderStyle если Ctl3D включен

code_30131.txt
------------ Дoбавленo в 11.16:
А MMTimer убивает программу почти мгновенно
------------ Дoбавленo в 18.58:
RichText как и в старом FPC нельзя загружать картинку , в этой версии тоже так будет?
карма: 0

1
файлы: 1code_30131.txt [243B] [433]
Голосовали:Netspirit
Ответов: 413
Рейтинг: 57
#150: 2013-01-25 02:03:50 ЛС | профиль | цитата
Размещаю на пустой форме два объекта, например 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

0
файлы: 1code_30177.txt [404B] [441]
Сообщение
...
Прикрепленные файлы
(файлы не залиты)