![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| M1ndAction |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 19.1.2008 Репутация: нет Всего: нет |
Добрый день!
Проблема в следующем: после запуска программы, некоторые надписи начинают отображаться кракозябрами. Притом некоторое время это может не проявляться, а затем происходит стабильно. Значения этих TLabel задается во время разработки и в процессе работы программы не изменяются. Но заметил, что, если "проблемным" TLabel переназначить их значения вручную, например, при возникновении события OnShow, то после этого они нормально отображаются. И, что самое интересно, не важно, что в этой надписи: кириллица или латиница. Если какая-то надпись начинала "сбоить", то я вручную записывал в нее значение, после этого с ней было все нормально, но начинались проблемы с другой надписью. Сначала проблемы были только в одной форме, а затем начались и в другой, у надписи, значение которой присваивается динамически (на этапе разработки она пустая - без текста), правда у себя этого пока не обнаружил, но на другой машине проявляется практически стабильно. Разрабатываю на Delphi 2009, WinXP SP3. На другой машине, на которой это точно проявляется, также установлена WinXP. Программа работает с потоками - как с файловыми, так и с TThread. Насколько мог заметить, проблема обычно проявляется после работы с одним из потоков, но не всегда - одна надпись сразу стабильно отображается неверно, если ее значение не переписать. Ее скриншот привожу ниже, на ней должно было быть написано: "Этап 3: Завершение регистрации" (без кавычек). ![]() В чем может быть дело? |
|||
|
||||
| imageman |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 30.9.2004 Репутация: 1 Всего: 1 |
из потока никогда нельзя менять визуальные компоненты на форме (в том числе и вызывать процедуры, которые это делают). только через Synchronize
Так же возможно у тебя разрушение памяти (пишешь за пределами массива, например). |
|||
|
||||
| M1ndAction |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 19.1.2008 Репутация: нет Всего: нет |
Это-то понятно
Здесь согласен, у меня тоже мысли крутятся вокруг чего-то подобного. Так как, если посмотреть на то, как изменяется текст, похоже, будто какой-то сбой в памяти происходит. Однако, некоторые надписи уже сразу после запуска программы с такими ошибками. То есть я еще не успеваю ничего создать и, соответственно, за пределы массива выйти не могу. При этом, использую достаточно много динамических массивов, в том числе и со сложными элементами (фреймы), может в эту сторону смотреть? |
||||
|
|||||
| imageman |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 66 Регистрация: 30.9.2004 Репутация: 1 Всего: 1 |
Если я правильно понимаю, то читать из визуальных компонентов можно из потоков без всяких ухищрений (напрямую)?
Может тогда попробовать временно упростить задачу и сделать всего один дополнительный поток. Затем в конце всех процедур и вообще в любых подозрительных местах ставить assert(label1.caption='Этап 3: Завершение регистрации'); таким образом ты (возможно) отследишь место (процедуру), где происходит сбой. Не исключено, что ошибка будет выскакивать в разных процедурах - значит или у тебя несколько ошибок или другие потоки виноваты. |
|||
|
||||
| M1ndAction |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 19.1.2008 Репутация: нет Всего: нет |
В том-то и дело, что некоторые надписи отображаются неверно еще до запуска всевозможных потоков (а некоторые - после, то есть различные надписи ведут себя по разному). Так что потоки здесь, возможно, лишь косвенную роль играют. Но за Assert спасибо, не знал про такое, попробую отловить момент ошибки
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |