Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Embarcadero RAD Studio

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322

Открыть новую тему     Написать ответ в эту тему

V1s1ter



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
         
Обсуждаем новые возможности и баги
 
Просьба писать про Embarcadero RAD Studio XE5, XE6, XE7, XE8, 10.x (Seattle, Berlin,Tokyo)
  По вопросам скачивания - Тема в Варезнике (lite-версии тут)
  Вопросы по неюникодным версиям Delphi — шестая бумага
  Бесплатные Компоненты и утилиты для Delphi/BCB/FreePascal/Lazarus
  Коммерческие компоненты и утилиты для Delphi/BCB
  Вопросы по компонентам для Delphi, C++ Builder разных версий
  Новые языковые возможности, начиная с Delphi 2005 по XE4 — здесь, и New!здесь еще
  Англоязычный официальный форум Embarcadero — здесь
  Embarcadero Quality Central, веб интерфейс — здесь, новый Quality Portal тут
  Программирование на Delphi — викиверситет
  Другие ресурсы
   Предыдущие бумаги
 
     Вопросы ..XE4       Вопросы ..XE3    Вопросы ..XE2      
  Вопросы ..2009-XE    Вопросы ..<2009 / ч.5    Вопросы ..<2009 / ч.4      
  Вопросы ..<2009 / ч.3    Вопросы ..Delphi 2 / ч.2    Вопросы ..Delphi  

  Выключение встроенного эксперта Castalia  для XE8 (иногда помогает при вылетах и тормозах)  
  Полезные плагины(эксперты)

Всего записей: 948 | Зарегистр. 06-02-2007 | Отправлено: 15:25 11-09-2013 | Исправлено: Komandor, 18:58 18-03-2022
kaz_av

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
cyrilo

Цитата:
 А какой период поддержки?

https://support.embarcadero.com/article/37740 Там же, в начале, даны определения терминов.
 
StalkerSoftware

Цитата:
Единственно что, меня смущает комментарий по поводу заголовка файла в форме PE32.
Правильно ли я понимаю, что при компиляции в Win64, этот код не будет работать ?

На XE2 x64 работает, на более новых не проверял.
 
p.s. Формат 64-битных исполняемых модулей называется PE32+

Всего записей: 437 | Зарегистр. 15-02-2006 | Отправлено: 15:49 23-10-2017
StalkerSoftware



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Hi All,
 
Есть вопрос по поводу нового цикла for in do в его использовании для своих коллекций.
 
1) В чем преимущество обхода коллекции через for in do по сравнению со стандартным циклом
for to do, может for in быстрее чем for to или у него есть еще какие то преимущества ?
 
2) Есть моя коллекция
TSelectedCache = class(TCollection)
и ее элементы
TSelectedCacheItem = class(TCollectionItem)
 
Правильно ли я понимаю, что для того, что бы я мог обойти свою коллекцию через for in do, мне надо для нее написать свой Enumerator ?

Всего записей: 682 | Зарегистр. 23-06-2008 | Отправлено: 11:44 26-10-2017
kaz_av

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
StalkerSoftware
1. Удобство. Иногда бывает так, что количество элементов в коллекции заранее неизвестно и его получение будет равноценным просмотру всей коллекции. Но даже в случае, когда всё известно заранее for-in-do удобен тем, что исключает возможность накосячить с индексами в прикладном коде. Плюс, есть возможность совершать некие действия до просмотра коллекции и сразу после, например устанавливать и снимать блокировку.
 
2. Да, нужен перечислитель и метод GetEnumerator в коллекции. На счёт оверхеда можно не беспокоиться, если реализовать перечислитель в виде записи.
 
p.s. Этому новому циклу лет 12 уже

Всего записей: 437 | Зарегистр. 15-02-2006 | Отправлено: 11:59 26-10-2017
StalkerSoftware



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kaz_av

Цитата:
Плюс, есть возможность совершать некие действия до просмотра коллекции и сразу после, например устанавливать и снимать блокировку.
Не совсем понял по поводу блокировки ...
 

Цитата:
2. Да, нужен перечислитель и метод GetEnumerator в коллекции. На счёт оверхеда можно не беспокоиться, если реализовать перечислитель в виде записи.  
Можно небольшой пример реализации перечислителя для коллекции, а то в документации к delphi и в инете я такого примера не нашел.
Разве что пример перечислителя для TCollection в коде самой Delphi ...
Кстати, какой вообще был смысл создания перечислителя для TCollection эмбаркадеровцами, если его все равно нельзя использовать для наследников TCollection и TCollectionItem ?
 

Цитата:
p.s. Этому новому циклу лет 12 уже  
Согласен, просто я до последнего времени сидел на Delphi 7.1, а теперь постепенно переползаю на Delphi 10.2, отсюда и возникают периодически по ней вопросы,
 

Всего записей: 682 | Зарегистр. 23-06-2008 | Отправлено: 11:06 27-10-2017 | Исправлено: StalkerSoftware, 11:09 27-10-2017
kaz_av

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
StalkerSoftware

Цитата:
Не совсем понял по поводу блокировки ...

Например, если доступ к коллекции требуется обеспечить из разных потоков. В случае с обычным циклом нужно блокировать коллекцию, затем оборачивать цикл в блок try-finaly и после обработки разблокировать. В случае с циклом for-in-do перечислитель может самостоятельно, в конструкторе, блокировать коллекцию, а в деструкторе снимать блокировку. Объекты перечислителей уничтожаются сразу после тела цикла (по крайней мере это так для классических компиляторов. Возможно, с ARC ситуация другая).
 

Цитата:
а то в документации к delphi и в инете я такого примера не нашел

Так в дельфях этих перечислителей... Поищи по исходникам GetEnumerator.
 

Цитата:
Кстати, какой вообще был смысл создания перечислителя для TCollection эмбаркадеровцами, если его все равно нельзя использовать для наследников TCollection и TCollectionItem ?

Почему нельзя? Например, Web.HttpApp.TWebActionItems.TEnumerator как раз от него и наследуется.

Всего записей: 437 | Зарегистр. 15-02-2006 | Отправлено: 12:23 27-10-2017
Steepe_Hare



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Господа, подскажите плиз, как на Delphi писать виджеты для Андроида

Всего записей: 1162 | Зарегистр. 27-10-2001 | Отправлено: 12:12 29-10-2017
reenoip



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
There is no out of the box support for Android Widgets. However, you should be able to create a widget in Java and include it in your project. It is defined/called from the Android manifest.

 
Steepe_Hare, 3 года назад было так. Вряд ли что-то изменилось, но всё возможно в этом мире.

Всего записей: 1768 | Зарегистр. 10-03-2006 | Отправлено: 15:50 29-10-2017
Steepe_Hare



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
reenoip
 
Если это делается на Java, то зачем тогда Delphi? тогда надо на Android Studio переходить

Всего записей: 1162 | Зарегистр. 27-10-2001 | Отправлено: 08:55 30-10-2017
kaz_av

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Steepe_Hare

Цитата:
Если это делается на Java, то зачем тогда Delphi? тогда надо на Android Studio переходить
 

Вот именно. А если, при этом, не хочется расставаться с паскалем, то прямая дорога на RemObjects Oxygene.

Всего записей: 437 | Зарегистр. 15-02-2006 | Отправлено: 10:13 30-10-2017
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
тогда надо на Android Studio переходить
Светлая мысль. Давно слежу за вашими мучениями писать для Андроида на Дельфях.

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 12:11 30-10-2017
reenoip



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Если это делается на Java, то зачем тогда Delphi?

Эх, этот бы вопрос да Марку в уши.

Всего записей: 1768 | Зарегистр. 10-03-2006 | Отправлено: 15:38 30-10-2017
zedxxx

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите, а существует какая-то возможность автозаполнения интерфейса. Т.е. пишу вот такой код:

Код:
IMyInterface = interface
['{04653DF6-4CD8-4ED7-8018-39986E1E09C1}']
  property MyProp: MyType;
end;

нажимаю волшебные клавиши и получаю вот такое:

Код:
IMyInterface = interface
['{04653DF6-4CD8-4ED7-8018-39986E1E09C1}']
  function GetMyProp: TMyType;
  procedure SetMyProp(const Avalue: TMyType);  
  property MyProp: TMyType read GetMyProp write SetMyProp;
end;

Всего записей: 1501 | Зарегистр. 14-07-2008 | Отправлено: 16:34 31-10-2017
Steepe_Hare



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Dronton2

Цитата:
Светлая мысль. Давно слежу за вашими мучениями писать для Андроида на Дельфях.  

 
На самом деле кое-что стоящее получается иногда сделать на Дельфях для Андроида

Всего записей: 1162 | Зарегистр. 27-10-2001 | Отправлено: 18:36 31-10-2017 | Исправлено: Steepe_Hare, 18:38 31-10-2017
Dronton2

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Steepe_Hare

Цитата:
кое-что стоящее получается иногда сделать
Можно и шурупы забивать микроскопом. Но есть ведь молоток. Или даже отвёртка. Количество приложенных усилий будет меньше.
Мне, например, после работы в IDE от JetBrains, IDE отEmbarcadero совсем перестало нравиться.

Всего записей: 460 | Зарегистр. 27-06-2005 | Отправлено: 11:42 01-11-2017
reenoip



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
иногда

 
Представил новую рекламную кампанию от Марка: "Delphi. Sometimes."

Всего записей: 1768 | Зарегистр. 10-03-2006 | Отправлено: 13:11 01-11-2017
StalkerSoftware



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
kaz_av

Цитата:
Почему нельзя? Например, Web.HttpApp.TWebActionItems.TEnumerator как раз от него и наследуется.

 
С удобством понятно. А как насчет скорости, особенно это актуально при частом вызове кода, где идет обход коллекции.
Делал ли кто то сравнения скорости обхода коллекции обычным циклом
for ... to ... do
и  
for ... in ... do ?
 
И еще небольшой вопрос касательно for ... in ... do:
Если при обходе коллекции надо удалять ее элементы, то делается обратный цикл for ... downto ... do.
А как с этим обстоит дело в цикле for ... in ... do ? Позволяет ли он удалять элементы без возникновения ошибки или может быть у него есть обратная версия ?
 
 
 

Всего записей: 682 | Зарегистр. 23-06-2008 | Отправлено: 15:52 02-11-2017
uranic2

Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Кто подскажет CodeSiteLogging из Delphi XE10.2 (Tokyo) исключили?
 
 
 
Добавлено:
Сам себе отвечу
Действительно исключили CodeSite Express.  
Я уже успел привыкнуть
 

Всего записей: 297 | Зарегистр. 17-08-2004 | Отправлено: 15:59 02-11-2017
DmitryKz

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
CodeSite Express

С GetIt'а скачивается.

Всего записей: 3142 | Зарегистр. 29-09-2005 | Отправлено: 16:41 02-11-2017
Frodo_Torbins

Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
StalkerSoftware
Результатом for ... in ... do является элемент коллекции, которому можно сделать Free. Но при этом он должен уметь удалить себя из коллекции.

Всего записей: 2318 | Зарегистр. 24-05-2007 | Отправлено: 16:49 02-11-2017
kaz_av

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
StalkerSoftware

Цитата:
А как насчет скорости, особенно это актуально при частом вызове кода, где идет обход коллекции.

for-in-do будет всегда медленне (на каждую итерацию будет выполнятся вызов метода MoveNext и GetCurrent. и если GetCurrent можно заинлайнить, то MoveNext инлайнить бесполезно т.к. он используется в уловии цикла, а в такой ситуации инлайнинг не работает), чем обычное обращение по индексу. Насколько, и имеет ли смысл из-за этого отказываться от for-in-do зависит от конкретной ситуации. Чаще всего отказываться смысла нет.
 

Цитата:
Если при обходе коллекции надо удалять ее элементы, то делается обратный цикл for ... downto ... do.
А как с этим обстоит дело в цикле for ... in ... do ?

В общем случае коллекцию просматриваемую for-in-do модифицировать нельзя, но вообще, всё зависит от перечислителя. Можно написать перечислитель, который будет корректно обрабатывать такую ситуацию.
 
На счёт перечисления в обратную сторону. Такой конструкции нет, но всегда можно сделать свойство/функцию Reversed которая будет возвращать объект/запись (что предпочтительнее) у которых будет собственный перечислитель или они будут инициализировать родительский перечислитель передавая в параметре направление перебора.

Всего записей: 437 | Зарегистр. 15-02-2006 | Отправлено: 17:15 02-11-2017
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Embarcadero RAD Studio


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru