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

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

Модерирует : 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

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

Eternal_Shield

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

Всего записей: 767 | Зарегистр. 18-05-2009 | Отправлено: 11:53 10-03-2013
RageSV

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

Цитата:
хотя разве нет копирующих ctor сейчас в Delphi?

Их и не было.

Всего записей: 72 | Зарегистр. 20-01-2006 | Отправлено: 10:48 11-03-2013
sergionn

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Друзья! давайте вновь окинем взором RO, хоть я и зарекался не смотреть в его сторону. НО!
Здесь Марк выложил свое новое нугатворение: _http://blogs.remobjects.com/blogs/mh/2013/03/11/p5663
Глядя на исходники _https://github.com/dwarfland/TicTacToe  (крестики-нолики) у меня зашевелились волосы на ***** и возник резонный (для меня) ВОПРОС
- почему так много КОДА? для такой весьма незатейливой игры?
Варианты:
1) Так и должно быть для object-c стиля программирования это норма
2) Так не должно быть, все мудреность возможно от скрещивания паскаля и обжект-с методом "оксигенной" инженерии
3) Это вообще норма для mvc-го подхода - ты откуда вылез вообще, сейчас все так пишется
4) Кода на самом деле в самый раз - у меня разыгралось воображение
Какие у вас мнения, господа?

Всего записей: 472 | Зарегистр. 02-11-2011 | Отправлено: 19:03 12-03-2013 | Исправлено: sergionn, 19:06 12-03-2013
Eternal_Shield

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

Цитата:
3) Это вообще норма для mvc-го подхода - ты откуда вылез вообще, сейчас все так пишется

Я за этот вариант. Имхо, всё чисто ППЦшное ... и даже без глазури
 
Хотя, может, автор хотел какие-то супер-пупер удобные конструкции/подходы показать в этом абсолютно диком, не читаемом коде
 
Подробнее...

Всего записей: 767 | Зарегистр. 18-05-2009 | Отправлено: 22:51 12-03-2013
deks



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
sergionn
Eternal_Shield
 
На Delphi было бы короче? Незатейливая игра умеет играть через GameCenter на двух дивайсах. Как бы вы делали сетевую пошаговую игру?
 
Ну и про количество кода. Есть пять файлов:  
 
1) AppDelegate - стандартный делегат iOS-приложения, кода почти нету (делается шаблоном iOS приложения);
 
2) Board - кастомный iOS контрол для игровой доски.
 
3) ComputerPlayer - код для компьютерного игрока (типа, AI)
 
4) Program - код из шаблона iOS приложения (точка входа, типа .dpr) - кода почти нету;
 
5) RootViewController - основная логика GUI + делегаты для реализации сетевой пошаговой игры через GameCenter.
 
Где именно много кода? Ну, кроме шуток - чего в этой проге непонятного??

Всего записей: 857 | Зарегистр. 09-10-2003 | Отправлено: 10:16 13-03-2013 | Исправлено: deks, 10:17 13-03-2013
Eternal_Shield

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

Цитата:
На Delphi было бы короче?

Как раз таки сетевая составляющая - это пара строк и 1 делегат (типа обработчик обновлений). Вот и вся сетевая игра ... правда, я не в курсе, что за GameCenter. Какой-то рандеву сервер, чтобы с p2p не сношаться? В общем-то, не суть;
 
Объём кода великоват. Возможно я что-то недооцениваю или, наоборот, переоцениваю ... Подробнее... Есть вероятность, что аналог на Delphi может получиться и более объемный, а может и нет; Проверять нет времени;
 
Подробнее...
 

Всего записей: 767 | Зарегистр. 18-05-2009 | Отправлено: 18:07 13-03-2013 | Исправлено: Eternal_Shield, 18:08 13-03-2013
sergionn

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
deks
мне тоже показалось, что GameCenter должен взять на себя сетевую часть, как верно подметил Eternal_Shield в пару-тройку строк.
Про Ai в крестиках-ноликах я скромно промолчу.
А вообще раз ты говоришь что это теперь норма для таких вещей, тогда ой.
Я 15 лет не программировал, сейчас наверстываю упущенное.
От экосистемы object-c я в ужасе, думал оксиген сгладит переход,
но мне кажется он усугубляет все, главный вопрос: на чистом object-c все было бы в таком же объеме?
 
А вообще как я заметил, неумолимая тенденция к ИЗЛИШНЕМУ усложнению технологий и реализаций
свойственна не только ИТ, все со временем становится сложнее и сложнее, все увязают как в болоте,
потом бац, кто-то посмотрел на вещи новым взглядом, откинул все лишнее, и вот - рождение новой звезды!
 
p.s. буду голословным, НО, дцать лет назад я писал крестики-нолики на с++ под дос,
все компактно сидело в одном файле, с нАмного меньшим количеством кода,
учитывая даже то, что графическая часть отрисовывалась без объектной модели по канве низкоуровневыми примитивами...

Всего записей: 472 | Зарегистр. 02-11-2011 | Отправлено: 18:58 13-03-2013 | Исправлено: sergionn, 19:11 13-03-2013
Arioch1



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Разбавим священные войны...
 
Попробуйте в XE3 вот эту программку: qc.embarcadero.com/wc/qcmain.aspx?d=113671
 
в Delphi 2006 работает правильно.

Всего записей: 904 | Зарегистр. 03-03-2010 | Отправлено: 19:24 13-03-2013
Eternal_Shield

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Arioch1
И в чём проблема? Подробнее...

Всего записей: 767 | Зарегистр. 18-05-2009 | Отправлено: 19:59 13-03-2013
Arioch1



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AS. А картинки зачем? текст скопировать нельзя было ?
 
в xe2 первый три строчки будут
Цитата:
'@' is: 64

 
Потому что '@' - это varInteger  :-[..]

Всего записей: 904 | Зарегистр. 03-03-2010 | Отправлено: 20:06 13-03-2013 | Исправлено: Arioch1, 20:07 13-03-2013
Eternal_Shield

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

Цитата:
AS. А картинки зачем? текст скопировать нельзя было ?

Нет нельзя, ибо не православно
 

Цитата:
в xe2 первый три строчки будут

Ну...и? Какая там связь с ХЕ3?
 

Всего записей: 767 | Зарегистр. 18-05-2009 | Отправлено: 21:27 13-03-2013 | Исправлено: Eternal_Shield, 21:28 13-03-2013
deks



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Eternal_Shield
sergionn
 
GameCenter от Apple - это типа OpenFeint, Origin, Crystal: внутри-игровая социальная сеть (друзья, достижения, таблицы результатов и тп). Для пошаговых игр есть возможность сделать игру или с другом, или со случайным человеком (который готов играть в ту же игру). подробнее марк писал в блоге (_http://blogs.remobjects.com/blogs/mh/2013/03/11/p5663). И для взаимодействия с GameCenter нужна не пара строчек, а чуть побольше. Думаю, у досовской программы на C++таких возможностей не было Взаимодействию с GameCenter посвещен ровно один файл из трех с кодом. Разбиение на файлы в Objective-C по классу (ну и вспомогательные классы к основному) на файл - это так принято, типа как с формами на дельфи.  
 
По поводу избыточной графомании под Objective-C: программа на Oxygene один в один как на Objective-C, только синтаксис чуть приятнее (нет квадратных скобок, пара плюшек с синтаксическим сахаром). В TicTacToe не использовалось никакого RTL от Oxygene - только нативные средства iOS. Зачем тогда Oxyegen? Ну, пару файлов ( AI + некоторую логику игры) можно перенести под Android - тупо использовать на другой платформе!  
 
 

Всего записей: 857 | Зарегистр. 09-10-2003 | Отправлено: 09:16 14-03-2013
Arioch1



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

Цитата:
Нет нельзя, ибо не православно  

 
Ещё одна строчка в кондуит православия :-D
 

Цитата:
Ну...и? Какая там связь с ХЕ3?

 
Простая - у меня нет XE3, вот и спрашиваю протестить как там.
Кстати, перечитай QC. Это уже забавно.
 
Этот баг сообщили еще в 2009, но вместо того, чтобы исправить, его, как водится, просто закрыли.
"Вы смогли обойти наши баги ? ну значит это и не баги вообще"
"Вот когда убьют - тогда и приходите"
 
И еще, если твой отчёт правильный - то значит в XE3 его втихую поправили. Но про это не знают не QC ни QA Team.
 
Пойду за попкорном. Читать QC инетреснее, чем смотреть Дом 2

Всего записей: 904 | Зарегистр. 03-03-2010 | Отправлено: 10:47 14-03-2013 | Исправлено: Arioch1, 10:49 14-03-2013
AlekXL



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

Цитата:
'@' is: 64  

нет такого в xe3. ни 32, ни 64-bit. Видимо где-то добавили еще один баг, и он случайно исправил прежний.
 
У меня вопрос, может, уже задавал: существует ли готовый класс, библиотека для Overlapped IO? Или файловый IO CP?
 
И еще: вот есть метод _Release класса TInterfacedObject, реализующий метод интерфейса IInterface, как я полагаю. То есть по сути, он виртуальный. Мне нужно , чтобы класс , унаследованный от TInterfacedObject гарантированно перехватывал все виртуальные вызовы _Release, несмотря на то, что _Release объявлен в базовом статически.

Всего записей: 792 | Зарегистр. 24-04-2008 | Отправлено: 13:32 14-03-2013 | Исправлено: AlekXL, 16:57 14-03-2013
AlekXL



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

вот, разобрался. Короче оказывается, если метод интерфеса в реализации  сам объявлен как виртуальный, то при вызове этого метода через интерфейс механизм вызова тоже будет виртульным:
сначала будет вызов через vtable интерфейса, который приведет на ассемблерную, сгерененную компиляторм заглушку, и в ней будет не прямой вызов, а виртуальный, через собственную vmt класса.
 
То есть  Delphi допускает как статическую реализацию методов интефейса, так и полиморфную.
Как, интересно, дела обстоят в C++ с этим?

Всего записей: 792 | Зарегистр. 24-04-2008 | Отправлено: 18:19 14-03-2013
Eternal_Shield

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

Цитата:
И еще, если твой отчёт правильный - то значит в XE3 его втихую поправили. Но про это не знают не QC ни QA Team.

Походу, в Ем-ро вообще все сами по себе. Как-то раз, Япошка из QC мне вообще следующее задвинул: у нас есть Internal QC трэкер и он никак не коррелирует с основным Там всё что надо закрыто, а до "внешнего" QC руки не доходят ... ТруЪ? das ist ТруЪ!
 

Цитата:
Пойду за попкорном. Читать QC инетреснее, чем смотреть Дом 2

Попкорну не хватит
 
AlekXL

Цитата:
вот, разобрался.

Грац. Р-р-растёте!
 

Цитата:
Как, интересно, дела обстоят в C++ с этим?

А что, в C++ уже появились интерфейсы?

Всего записей: 767 | Зарегистр. 18-05-2009 | Отправлено: 19:55 14-03-2013
Arioch1



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

Цитата:
И еще: вот есть метод _Release класса TInterfacedObject, реализующий метод интерфейса IInterface, как я полагаю. То есть по сути, он виртуальный. Мне нужно , чтобы класс , унаследованный от TInterfacedObject гарантированно перехватывал все виртуальные вызовы _Release, несмотря на то, что _Release объявлен в базовом статически.

 
Обломись, моя черешня.
 
во-первых любой потомок может заново реализовать интерфейс и заново указать другие реализующие методы.
 
во-вторых в отличие от .net, в Delphi/x86-x64 каждый интерфейс наследуется от IInterface, поэтмоу каждый интерфейс - в соответствии с заветами COM - содержит свои, независимые _AddRef и _Release.
Именно поэтому невозможно множественное наследование интерфейсов в нативнйо Дельфи.
 
 

Цитата:
у нас есть Internal QC трэкер и он никак не коррелирует с основным

и не один, судя по косвенным

Всего записей: 904 | Зарегистр. 03-03-2010 | Отправлено: 22:11 14-03-2013
AlekXL



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

Цитата:
во-первых любой потомок может заново реализовать интерфейс и заново указать другие реализующие методы.  

нет, не может, как я считаю. Реально, практически - не может.
Подробнее...
как вот покажите на примере, как можно можно переопределить метод _Release в TMyClass, чтобы при манипуляциях с IMyInterface вызывался именно он, а не TInterfacedObject._Release. Я думаю, не сможете, и ваша самоуверенность вас подведет.

Всего записей: 792 | Зарегистр. 24-04-2008 | Отправлено: 10:10 15-03-2013 | Исправлено: AlekXL, 10:11 15-03-2013
DeathMAD

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
И в чём проблема, хоть я и не (кровь и души) Ариох?

Код:
 
{$APPTYPE CONSOLE}
 
{$R *.res}
 
uses
  System.SysUtils,System.Classes;
  type
  IMyInterface=interface
  ['{A0CBB24B-DF8E-411E-A7AD-A879AEADD8D2}']
    procedure SomeMethod();
  end;
 
  TMyClass=class(TInterfacedObject,IMyInterface,IInterface)
  public
      procedure SomeMethod();
      function _Release(): integer;  stdcall;
      function IMyInterface._Release=_Release;//
      function IInterface._Release=_Release;//
  end;
 
{ TMyClass }
 
procedure TMyClass.SomeMethod;
begin
//
end;
 
function TMyClass._Release: integer;
begin
  Writeln('Test');
  Result := inherited _Release;
end;
 
var
  i: IMyInterface;
begin
  i := TMyClass.Create as IMyInterface;
  try
    ReadLn;
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
end.
 

Всего записей: 114 | Зарегистр. 13-10-2004 | Отправлено: 11:33 15-03-2013
Eternal_Shield

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

Цитата:
как вот покажите на примере, как можно можно переопределить метод _Release в TMyClass, чтобы при манипуляциях с IMyInterface вызывался именно он, а не TInterfacedObject._Release. Я думаю, не сможете, и ваша самоуверенность вас подведет.

Подробнее...
 
Вуаля, нет терь вызова TInterfacedObject._Release...Ну и?

Всего записей: 767 | Зарегистр. 18-05-2009 | Отправлено: 11:53 15-03-2013
Открыть новую тему     Написать ответ в эту тему

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

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


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

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

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru