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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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 323 324

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

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, 15:49 31-03-2024
xpin2013



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня вопрос, суть которого проще понять после моего, возможно корявого пояснения (на случай поспорить - я пас, пояснение оно только для вопроса).
 
Простите новичка, недавно столкнулся с необходимостью узнать, что такое MVC (Model View Controller), в руках исходники с MVC. Я под впечатлениями, как от исходников, так и от того что в интернете бросилось в глаза.
1) Модель - обёртка данных. Смысл её существования в обеспечении отдельного развития модели от конечных реализаций. Неоднократно делаются замечания, что хороший тон, это когда бизнес-логика закладывается в модели. Ну это понять просто, например, - бизнес-логика в триггерах, а никак не в событиях датасета. Зачем же Модель, то есть обёртки? Использование модели уже отменяет технологию DB->DataSet->DBControl и обязывает продублировать работу с данными - данные изменяются и в модели и в файле DB. Оказывается Controller умеет строить модель независимо, - либо он читает данные из датасета/базы и заполняет коллекцию/список, либо строит её не связанно с базами, - на момент существования процесса или задачи. Остальной код не знает как заполнять обёртки и использует для этого контроллер. (сомневаюсь, что ради этого можно согласиться на дублирование данных, когда нам не хочется использовать ClientDataSet мы его не используем).
2) View - представление. Тут понятно, если мы добавили поле в модель, мы его добавляем в гридину, всё так же как обычно за исключением - это не DBControl, нет датасетов/датасурсов. Мы из обёрток вытаскиваем строки и передаём их в грид. Если не ошибаюсь в сишарпе это метод Fill тоже какого-то контроллера, но вызывает его именно представление. Почему View мы связываем с моделью, а не с датасетом? Чем можно заменить технологию событий протекающих через DataSource? Ну есть пассивный MVC - обёртки есть, событий их изменений нет. Есть активный, в классическом варианте MVC - это активный MVC. В этом случае View подписывается на события модели, у меня десяток View - 5 подписалось на события одного справочника, а 5 подписалось на события другого. Там в сишарпе событие это не один обработчик OnChanged, а сколько угодно все происходят пачкой последовательно. В шарпе это реализовано на уровне языка и понятно, почему можно согласиться на MVC, для чего пассивная модель может быть использована в Delphi совершенно теряюсь, для активной модели приведу свой суррогат/заменитель
Подробнее...
Для своего типа события свой класс-реализация с тремя методами. Думаю легко переделывается в генерик, у меня их ещё не было. Про пассивную модель я понял, что к ней отношение негативное. Хотя у меня в той программе именно пассивная модель, мне стало интересно понять плюсы MVC, кроме тех, что если в Delphi MVC, то заказчику кроме меня никто не поможет, он побежит ко мне. Но хоть и реальный плюс - озвучивать его не желательно.
3) Контроллер. Ну если модель не знает как хранятся данные, то она и не умеет их удалять из DB файла. Это делает, на сколько понимаю контроллер - даёт команду удалить из модели и сразу же удаляет из файла, или тоже является подписчиком и удаляет когда модель генерирует событие удаления. Контроллер можно выбирать, тут я вообще не ориентируюсь - зачем? View обязан знать модель, чтобы её отобразить, но вроде, чтобы поменять данные, - он просит контроллер. Это как если бы мы хотели AfterInsert перенести в контроллер, бизнес-логику из AfterInsert распихать по модели, а что касается того, что у меня изменения и в базе и в модели, так это остаётся в контроллере. Ну пока для меня это тихий ужас, который простителен, если речь идёт о том, что это не в Delphi и нет DataSource.
 
Наконец то добрался до вопроса. Я там читал на Хабре, как они там бряцая талмудами мусолят что есть истинный MVC, а что не истинный. Идёт чёткая установка, что удобства тут в расчёт не принимаются. Гораздо важнее истинный MVC. Тема то популярная, а что полезного можно извлечь в Delphi? Второй вопрос, а встроят ли делегаты в Delphi когда ни будь? Ну могло бы быть интересным тот же MVC покрутить "с девками". А пассивный, то, что-то совсем не понравился. Когда я подписываюсь на событие, я как следствие не дублирую модели пачками на каждое окно и знаю где я должен менять циферки. А так у меня в одном окне я меняю данные - их редактировали, в другом окне перестраиваю, так как могли редактировать, но данные беру уже из другого места. Такая модель ну очень не нравится. Что полезного для Delphi и будут ли делегаты?  На сколько вообще я отстал от жизни?
 
Добавлено:
Совершенно забыл. Тут есть файлик vlb вроде. Он для каждого модуля пустой, но дата его всегда меняется. Чтобы в нём что-то было, в Опциях Delphi в ветке Live Bindings надо Display LiveBindings. Потом увидим внутри vlb ини формат для хранения координат квадратиков (очень похоже на ddp в Delphi7). Это пока для того чтобы не писать строчку присвоить а иметь её в графическом виде. Интересно, что это позволяет натравить генерик на источник данных. Вот бы это увязать как-то с MVC.

Всего записей: 291 | Зарегистр. 16-01-2014 | Отправлено: 23:24 18-02-2015
dix75



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Подскажите как безболезненно перейти с RAD 2007 на xe7
 
Ранее года 4 назад пытылся с RAD2007 на RAD2009 не вышло возникли проблемы со строками.

Всего записей: 157 | Зарегистр. 08-12-2005 | Отправлено: 12:19 19-02-2015
Mic777

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dix75
Стесняюсь спросить, а каких собственно заболеваний боитесь?
И что собственно страшного со строками, юникод?
По идее главное чтобы сторонние компоненты "перешли" на ту версию, которая вас интересует.
Остальное в ваших руках, имхо.

Всего записей: 90 | Зарегистр. 15-12-2005 | Отправлено: 12:27 19-02-2015
dix75



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mic777
Ну на 2007 у меня лицензия была ( в смысле есть)
 
Проект большой и все было на ANSI.
Может быть еще какие-нить подводные камни есть

Всего записей: 157 | Зарегистр. 08-12-2005 | Отправлено: 12:38 19-02-2015 | Исправлено: dix75, 12:39 19-02-2015
Eternal_Shield

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

Цитата:
Подскажите как безболезненно перейти с RAD 2007 на xe7  


Цитата:
Проект большой и все было на ANSI.  
Может быть еще какие-нить подводные камни есть

"Война план покажет" (с)
 
А вам сразу план, без войны, подавай .... Может просто заставить проект скомпилиться под ХЕ7, потестировать трохи и уже отталкиваясь от результатов бороться с конкретными недугами?

Всего записей: 767 | Зарегистр. 18-05-2009 | Отправлено: 14:42 19-02-2015
dix75



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

Цитата:
А вам сразу план, без войны, подавай .... Может просто заставить проект скомпилиться под ХЕ7, потестировать трохи и уже отталкиваясь от результатов бороться с конкретными недугами?  

 
Это понятно.
 
 
Добавлено:
Возможно есть возможность использовать (Возможно компонент) икноки png вместо bmp  в RAD2007

Всего записей: 157 | Зарегистр. 08-12-2005 | Отправлено: 15:15 19-02-2015
Mic777

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dix75
Честно сказать как стал работать с компонентами DevExpress даже не задавался вопросом, а действительно есть ли такая возможность так сказать в нативном варианте.
 
Но думаю если и нет, то это не преграда для перехода

Всего записей: 90 | Зарегистр. 15-12-2005 | Отправлено: 15:38 19-02-2015
dix75



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mic777
 
Я не пользуюсь DevExpress.
В нативном под RAD2007 нет. И честно меня достало руками подбирать приемлеммые иконки bmp
 
Это просто кошмар.
 
Сегодня  буду пробовать переходить.

Всего записей: 157 | Зарегистр. 08-12-2005 | Отправлено: 16:01 19-02-2015
Mic777

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
dix75
А что мешает PNG конвертить?
Думаю можно много чего по этой теме найти.
Сам пользуюсь __http://www.awicons.com/icon-editor/
сохраняет в различные форматы, удобно дорисовать чего-нить, разные эффекты есть.
 
Посмотри, может поможет...

Всего записей: 90 | Зарегистр. 15-12-2005 | Отправлено: 16:10 19-02-2015
yura371



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Вопрос к знатокам SQLite:
Я имею три таблицы "Фамилия" и "Имя" и "ФИ".
В первые два введены список фамилий и имен. "ФИ" - пустая.
Вопрос, как сделать чтобы в "ФИ" записались сначала значения с таблицы "Фамилия", а потом с таблицы "Имя".
Т.е.
Фамилия|Имя      | ФИ
Петров   |Петр    | Петров
Иванов   |Иван    | ИВанов
                         | Петр
                         | Иван
 

Всего записей: 20 | Зарегистр. 10-02-2013 | Отправлено: 19:48 19-02-2015
stanzdor



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
что то типа такого наверное: UPDATE table SET ФИ = CONCAT(Фамилия, ' ', Имя)

Всего записей: 595 | Зарегистр. 12-04-2004 | Отправлено: 20:39 19-02-2015 | Исправлено: stanzdor, 20:41 19-02-2015
dred2k



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

Цитата:
как сделать

Сделать так можно по-всякому.
Если ты про запрос, то - смотри в сторону select + union.

Всего записей: 403 | Зарегистр. 15-02-2006 | Отправлено: 20:56 19-02-2015
ZloyBrawler



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
INSERT [LOW_PRIORITY | DELAYED] [IGNORE]
        [INTO] tbl_name [(col_name,...)]
 
SELECT ...
UNION [ALL | DISTINCT]  
SELECT ...

Всего записей: 514 | Зарегистр. 19-10-2010 | Отправлено: 21:15 19-02-2015
yura371



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ZloyBrawler, спасибо работает) Только как вставить начиная с первой строки поля "ФИ", а не после всех записей?

Всего записей: 20 | Зарегистр. 10-02-2013 | Отправлено: 21:29 19-02-2015 | Исправлено: yura371, 21:58 19-02-2015
ZloyBrawler



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

Цитата:
Вопрос к знатокам SQLite:  
Я имею три таблицы "Фамилия" и "Имя" и "ФИ".  
В первые два введены список фамилий и имен. "ФИ" - пустая.  
Вопрос, как сделать чтобы в "ФИ" записались сначала значения с таблицы "Фамилия", а потом с таблицы "Имя".  
Т.е.  
Фамилия|Имя      | ФИ  
Петров   |Петр    | Петров  
Иванов   |Иван    | ИВанов  
                         | Петр  
                         | Иван  

 
Поставьте яснее задачу, а то говорите, что три таблицы, а у вас три поля на самом деле в одной таблице. И может вам нужно в поле ФИ не столбик получить перемешав фамилии и имена, что не имеет практического смысла, а Фамилия + " " + Имя? "Петров Петр", "Иванов Иван".
Тогда все делается одним UPDATE

Всего записей: 514 | Зарегистр. 19-10-2010 | Отправлено: 21:49 19-02-2015
yura371



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть ли возможность упростить код? Он записывает данные(числа по порядку) в Поле1 начиная с первой строки этого поля и заканчивая 100 строкой, независимо от заполненности соседних полей. Может есть способ проще?
 
//Получаем количество записей(в нашем случае 3)
SQLQuery2.SQL.Clear;
SQLQuery2.SQL.Add('SELECT count(*) FROM "Таблица1"');
SQLQuery2.ExecSQL();
SQLQuery2.Active:=true;
MAX:=SQLQuery2.Fields.Fields[0].AsInteger;
 
for i := 1 to 100 do begin
  SQLQuery2.SQL.Clear;
  if i>MAX then
     SQLQuery2.SQL.Append('insert into "Таблица1" ("Поле1") values (:Name)')
   else begin
     SQLQuery2.SQL.Append('UPDATE "Таблица" SET "Поле1"=:Name WHERE _rowid_=:Index;');
     SQLQuery2.ParamByName('Index').AsInteger:=i end;
  SQLQuery2.ParamByName('Name').AsString:=intToSTr(i);
  SQLQuery2.ExecSQL();
end;
 
Иллюстрация проблемы:


Всего записей: 20 | Зарегистр. 10-02-2013 | Отправлено: 21:59 19-02-2015 | Исправлено: yura371, 22:00 19-02-2015
landy



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Способ проще - сперва обновить номера всех имеющихся строк, затем добавить недостающее количество. Получится всего два последовательных SQL-оператора, а не отдельный на каждую строчку.

Всего записей: 576 | Зарегистр. 17-01-2003 | Отправлено: 22:03 19-02-2015 | Исправлено: landy, 22:13 19-02-2015
yura371



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
landy а можно пожалуйста поподробнее как это сделать желательно сам код.

Всего записей: 20 | Зарегистр. 10-02-2013 | Отправлено: 13:11 20-02-2015
VitaliM



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Поделитесь, у кого есть опыт работы в Студиях от XE2 до XE7, какая IDE самая стабильная?
Имею опыт работы в XE2 и XE4. И в той и другой то DesktopView/DebugView ломается, то Toolbar разваливается, то оба вместе.
Устал уже восстанавливать. Когда пустая IDE загружается еще ничего, а когда загружается с последним открытым проектом, то всегда все настройки съезжают. Может есть какая хитрость, которую я не знаю.

Всего записей: 2184 | Зарегистр. 12-01-2005 | Отправлено: 23:01 20-02-2015
xpin2013



Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Отключить автосохранение Autosave Options - Project Desktop. И везде где можно удалять файлы dsk.

Всего записей: 291 | Зарегистр. 16-01-2014 | Отправлено: 23:51 20-02-2015
Открыть новую тему     Написать ответ в эту тему

Страницы: 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 323 324

Компьютерный форум 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