Вернуться   CoderX :: Forums > Основные форумы > Программинг
Войти через OpenID

Программинг Форум для тем связанных с программированием

Чат (Новых сообщений с момента вашего последнего визита нет)
Загрузка...
Задавайте ваши вопросы на форуме. Чат предназначен для небольших разговоров.
 
Ответ
 
Опции темы Опции просмотра
Старый 27.07.2009, 19:39   #1
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию Проблема в Delphi 2006

Поставил Delphi 2006 и столкнулся с глюком - она отказываетсья правильно понимать конструкции вроде следующей:
delphi Код:
TL2SpelledList = class     isSummon, objectID: integer;     skills: array of record       skillID: integer;       skillName: string;       skillIcon: integer;       skillLevel: word;       duration: integer;     end;   end;

компилятор это проглатывает нормально (F9) и приложение запускается и без проблемм работает, но при попытке сделать действие в редакторе кода например автосоздание функции объявленной в классе (ctrl+shift+c) - редактор после раздумий несколко секунд выдает мне что: "identefier expected but ';' found после слова record, то есть он воспринимает его как уже объявленный тип. Причем в панели structure есть список классов только до этого объявления, дальше пусто. На delphi 7 работало, уже поставил кучу фиксов - но не помогает. Может кто знает в чем проблемма? Ну не хочеться объявлять эти записи отдельно , так как используются только в одном месте.
Yegor вне форума   Ответить с цитированием
Старый 27.07.2009, 20:17   #2
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Yegor, в RADStudio редактор более придирчив к синтаксису чем компилятор, он не любит создание типов внутри объявления класса (что кстати хоть и переваривается компилятором не считается хорошим тоном программирования)
короче чтобы это заработало надо просто более правильно и красиво это оформить:
delphi Код:
TSkills = array of record     skillID: integer;     skillName: string;     skillIcon: integer;     skillLevel: word;     duration: integer;   end;   TL2SpelledList = class     isSummon, objectID: integer;     skills: TSkills;   end;
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
За это сообщение xkor нажился спасибкой от:
Старый 27.07.2009, 23:02   #3
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

Спасибо так и сделаю. Я недавно только узнал что записи можно объявлять сразу как переменные и был этому дико рад, теперь прийдеться отвыкать .
В delphi меня злит что объявление и тело методов находиться в разных метсах, прихордится постоянно перемещаться по страницам. Хочу как в Java, можно даже класс в классе и все его методы сразу объявить и реализовать, это для меня удобно.
Yegor вне форума   Ответить с цитированием
Старый 28.07.2009, 01:22   #4
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Yegor, зато не надо много крутить прокрутку чтобы посмотреть весь список методов и полей класса), а для перемещения от обьявляния метода к его реализации и наоборот реализуется кликом мышкой по его названию удерживая клавишу Ctrl (правда пашет это только если все класса в модуле объявлены "красиво" для редактора...)
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 28.07.2009, 01:43   #5
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

xkor, я перемещаюсь по ctrl+shift+up(dn), а для удобного просмотра реализованных методов и полей есть специальные панели. Вобщем все на любителя.
Переписал все объявления записей отдельно от класса - все норм. Кстати после компиляции на 2006 появилось ощущение улучшения стабильности работы моей программы, у меня была большая проблемма с взаимными блокировками. Например vcl компонент timagelist (в нем я храню все используемые иконки), напрочь зависал при использовании tuj метода add из потока если был в критичесской секции.
Yegor вне форума   Ответить с цитированием
Старый 28.07.2009, 02:31   #6
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Yegor, с VCL компонентами следует работать только в основном потоке, для этого есть метод Synhronize (не помню точно как пишется)
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Старый 28.07.2009, 03:15   #7
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

xkor, метод Synhronize можно использовать если я для потоков использую класс TThread, а так мне пришлось вынести работу с этим компонентом в функции вызываемую по postmessage. Проблема в том что в основном потоке перерисовываются некоторые таблицы, карта, инвентарь и данные в них берутся из общих массивов. Соотвтетственно пришлось например на методы OnData, OnPaint, где я реализовал свою прорисовку или заполнение данными, вводить те же критичесские секции, а поэтому метод Sinhronize не сможет выполниться пока основной поток неосвободиться. Именно поэтому я сделал именно postmessage. Но тут есть тоже определенные нестыковки, даже незнаю как лучше сделать.
Yegor вне форума   Ответить с цитированием
Старый 28.07.2009, 11:46   #8
Рыцарь
 
Аватар для alexteam
 
Регистрация: 07.03.2009
Сообщений: 9,139
Сказал Спасибо: 70
Имеет 2,820 спасибок в 1,735 сообщенях
alexteam на пути к лучшему
По умолчанию

при передаче сообщения по postmessage вместе с сообщением можно передавать указатель на структуру в которую скопированы необходимые данные. не забываем разрушай эту структуру после обработки в самом обработчике.

зы. почему не сендмессейдж ?. или блокировка доп нитей нежелательна ?
__________________
L2Ext - project closed.
alexteam вне форума   Ответить с цитированием
Старый 29.07.2009, 01:53   #9
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

alexteam, сендмессейдж будет ожидать освобождения основного потока чтобы его обработать, а он как рас может в данный момент быть на "паузе" из за той же критичесской сесии.

Добавлено через 12 часов 46 минут
Поработал я денек на этой среде и появилось громадное желание вернуться к Delphi 7. Редактор кода по непонятным причинам иногда начинает о чем то думать секунд по 10-20, находит синтаксические ошибки и подчеркивает их красным, хотя ошибки реально нет (после перезагрузки почему то уже все норм), очень медленно запускаеться проект (какие то тут глюки с перерисовкой форм). Скажите это только у меня или реально delphi 7 рулит, может стоит более новую версию поставить?

Последний раз редактировалось Yegor, 29.07.2009 в 01:53. Причина: Добавлено сообщение
Yegor вне форума   Ответить с цитированием
Старый 29.07.2009, 03:47   #10
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

Yegor, ну 2007 работает значительно стабильнее, но по стабильности всё равно глубоко сосет у 7ки, однако мне он нравиться больше)
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием
Ответ

  CoderX :: Forums > Основные форумы > Программинг



Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 07:09.

vBulletin style designed by MSC Team.
Powered by vBulletin® Version 3.6.11
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Locations of visitors to this page
Rambler's Top100

Вы хотите чувствовать себя в безопасности? чоп Белган обеспечит её!