Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
| ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
| [216.73.216.156] |
|
|
Правила раздела:
| Страницы: (495) « Первая ... 224 225 [226] 227 228 ... 494 495 ( Перейти к последнему сообщению ) |
Delphi vs C++ vs C#
, ну и Java немножко, где-то ближе к старшему байту номеров страниц
|
Сообщ.
#3376
,
|
|
|
|
Цитата Мяут-Настоящий @ Кстати korvin еще N страниц назад предлагал реализовать что-то ORM-подобное на дельфи-сиплюсплюс. Удаленный вызов объектов? Или мэппинг структруры БД на объекты? |
|
Сообщ.
#3377
,
|
|
|
|
Цитата Romkin @ Или мэппинг структруры БД на объекты? Ога. А потом цепляешь что-нить вроде манифеста, а оно еще и формочками плюется |
|
Сообщ.
#3378
,
|
|
|
|
Цитата Мяут-Настоящий @ Ога. А потом цепляешь что-нить вроде манифеста, а оно еще и формочками плюется Для Delphi это не так уж нужно, средства работы с БД развиты, причем немного с другим подходом, код не генерируется. Не слишком ли много писать? |
|
Сообщ.
#3379
,
|
|
|
|
Цитата Romkin @ Не слишком ли много писать? Ну для задания наверное хватило бы Proof-of-concept =) Цитата Romkin @ Для Delphi это не так уж нужно, средства работы с БД развиты, причем немного с другим подходом, код не генерируется. Что значит не так уж нужно? Это позволило бы отделить логику приложения от кода (формочек и хранилища). Ну тут правда другой момент интересен - если выстроить ряд C - C++ - Java, можно видеть как происходит переход от чисто системного языка к чисто прикладному (собственно ORM и формочкагенерилка - это все я у явистов узнал). Куда из этого метит Delphi - мне лично непонятно =) Добавлено Цитата Romkin @ Для Delphi это не так уж нужно Формочко-генерилка не нужна? Наверное рисовать на каждый чих новую формочку нравится, да? |
|
Сообщ.
#3380
,
|
|
|
|
Почитал, врубился. Код не генерируется, объявляется только мэппинг.
Добавлено Цитата Мяут-Настоящий @ Формочко-генерилка не нужна? Наверное рисовать на каждый чих новую формочку нравится, да? А зачем? Брр. 1. Я могу нарисовать фрейм как мне хочется и совать его везде. При необходимости вполне нормально наследуется. 2. Этот фрейм я могу сохранить в виде простого текста и считать. А если генерить автоматом, то как? Задавать правила где что лежит? Так оно есть. 3. Я люблю data-aware компоненты. Цитата Мяут-Настоящий @ Что значит не так уж нужно? Это позволило бы отделить логику приложения от кода (формочек и хранилища). Ну тут правда другой момент интересен - если выстроить ряд C - C++ - Java, можно видеть как происходит переход от чисто системного языка к чисто прикладному (собственно ORM и формочкагенерилка - это все я у явистов узнал). Куда из этого метит Delphi - мне лично непонятно =) Логика и так отделяется, при наличии модуля данных, визуаьного проектироания таблиц и дата-аваре контролов мэппинг данных на объекты, потом мэппинг этих объектов на контролы формы а потом обратно выглядит нудно. Сейчас делается просто: объект данных - это модуль данных, потомок. У него есть свойства и методы. Строится визуально, запросы там тоже автоматом генерятся в рантайме если что. Он и выступает объектом данных. Это проще, чем выстраивать цепочку с объектами переноса данных. Еще можно учесть, что выдать таблицу в виде xml (или ее строку) - даже кода писать особо не надо. Добавляй к этому передачу объектов JSON, плюс RPC через tcp & http - и что еще нужно? Впрочем, замепить простой объект на табличку - это тоже быстро. |
|
Сообщ.
#3381
,
|
|
|
|
Romkin, ну смотри. Есть xml-ина с описанием логики (условно). Из нее генерится как код работы с данными так и конечные формочки для юзеров.
Идея кстати взята отсюда: http://www.ozon.ru/context/detail/id/5430638/ |
|
Сообщ.
#3382
,
|
|
|
|
Цитата Мяут-Настоящий @ Romkin, ну смотри. Есть xml-ина с описанием логики (условно). Из нее генерится как код работы с данными так и конечные формочки для юзеров. Знаешь, я привык отделять описание интерфейса от описания данных. А тут все в одном. Вот вопрос: а контролы-то на форме как генерятся? То есть, как задается какой контрол, какие координаты и т.д.? Да и код я привык генерировать в дизайне. Вот, кстати, насчет форм: ![]() ![]() program FormLoad; uses Forms, FMain in 'FMain.pas' {frmMain}, FLoaded in 'FLoaded.pas' {frmCustom}; {$R *.res} begin Application.Initialize; Application.MainFormOnTaskbar := True; Application.CreateForm(TfrmMain, frmMain); Application.Run; end. ![]() ![]() unit FMain; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TfrmMain = class(TForm) edtDefFile: TEdit; btnGenForm: TButton; procedure btnGenFormClick(Sender: TObject); procedure FormShow(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmMain: TfrmMain; implementation uses FLoaded; {$R *.dfm} procedure TfrmMain.btnGenFormClick(Sender: TObject); var frm: TComponent; TextDFM, BinaryDFM: TStream; begin TextDFM := TFileStream.Create(edtDefFile.Text, fmOpenRead); try BinaryDFM := TMemoryStream.Create; try ObjectTextToBinary(TextDFM, BinaryDFM); BinaryDFM.Position := 0; frm := BinaryDFM.ReadComponent(nil); Application.InsertComponent(frm); (frm as TCustomForm).Show; finally BinaryDFM.Free; end; finally TextDFM.Free; end; end; procedure TfrmMain.FormShow(Sender: TObject); begin edtDefFile.Text := IncludeTrailingPathDelimiter(ExtractFilePath(ParamStr(0))) + 'hello.dfm'; end; initialization RegisterClass(TfrmCustom); end. ![]() ![]() unit FLoaded; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TfrmCustom = class(TForm) procedure ButtonClick(Sender: TObject); private { Private declarations } public { Public declarations } end; var frmCustom: TfrmCustom; implementation {$R *.dfm} procedure TfrmCustom.ButtonClick(Sender: TObject); begin ShowMessage((Sender as TButton).Caption); end; initialization RegisterClasses([TLabel, TButton, TPanel]); end. Файл hello.dfm: ![]() ![]() object frmCustom: TfrmCustom Left = 0 Top = 0 Caption = 'Custom form' ClientHeight = 110 ClientWidth = 271 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'Tahoma' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object Label1: TLabel Left = 20 Top = 8 Width = 52 Height = 13 Caption = 'Hello world' end object Panel1: TPanel Left = 0 Top = 69 Width = 271 Height = 41 Align = alBottom TabOrder = 0 object Button1: TButton Left = 12 Top = 8 Width = 75 Height = 25 Caption = 'OK' TabOrder = 0 OnClick = ButtonClick end end end Хочешь экзешник вложу поиграться? |
|
Сообщ.
#3383
,
|
|
|
|
Цитата Romkin @ Для Delphi это не так уж нужно, средства работы с БД развиты ой ли? как DBGrid научить не перемещать курсор позиции при прокрутке? =) какой компонент-модель (Table/Query) умеет отдавать набор (список/массив) объектов, представляющих записи? как насчет вменяемых открытых драйверов для PostgreSQL, Sqlite? (сторонние компоненты не предлагать -- дорого) Добавлено Цитата Romkin @ Да и код я привык генерировать в дизайне. дерьмовый подход, кстати |
|
Сообщ.
#3384
,
|
|
|
|
Цитата korvin @ ой ли? как DBGrid научить не перемещать курсор позиции при прокрутке? =) какой компонент-модель (Table/Query) умеет отдавать набор (список/массив) объектов, представляющих записи? как насчет вменяемых открытых драйверов для PostgreSQL, Sqlite? (сторонние компоненты не предлагать -- дорого) Ну, во-первых, DBGrid - это не "средство работы с БД". Это просто компонент отображения таблицы, не более. Во-вторых, есть сторонние и бесплатные, jvcl посмотри. В-третьих, зачем тебе список-массив объектов, представляющих записи? С какой целью? Готового компонента нет и быть не может, поскольку отображение объекта на запись - крайне тупо. Способов отображения объекта на БД много, в каждом случае ты создаешь объект и мэппишь его на таблицы. Индивидуально. Трудоемкость примерно та же, что xml описание сделать. Открытые драйвера? Почему именно открытые надо, и именно под эти БД? SQLite вообще надо выкинуть за ненадобностью, Postgre - сядь и напиши, спецификация есть. Добавлено Цитата korvin @ как насчет вменяемых открытых драйверов для PostgreSQL, Sqlite? Postgre Ole DB - вот бери и пользуй |
|
Сообщ.
#3385
,
|
|
|
|
Цитата Romkin @ поскольку отображение объекта на запись - крайне тупо вовсе нет, это очень удобно, так реализовано в Rails, например. Добавлено Цитата This is PostgreSQL OLE DB Provider project. OLE DB is the default ADO driver technology, and is used by many programs ... PgOleDb 1.0.0.20 April 17, 2006 нет, спасибо, я так и просто через ODBC могу хотел заюзать ZEOSlib, но не понял как его устанавливать. Добавлено Цитата Romkin @ SQLite вообще надо выкинуть за ненадобностью весьма громогласное заявление, учитывая, что многие OpenSource-проеграммы его используют в качестве встроенной БД Цитата Romkin @ Postgre - сядь и напиши, спецификация есть. у меня нет на это времени, это не входит в мои обязанности, в отличие от разработчиков "развитых средств работы с БД". рекомендую, кстати, посмотреть NeXTSTEP 3.0 demo, последние минут десять =) |
|
Сообщ.
#3386
,
|
|
|
|
Цитата korvin @ вовсе нет, это очень удобно, так реализовано в Rails, например. Да? Может, там и удобно. И в чем разница? Как в Rails? Цитата korvin @ весьма громогласное заявление, учитывая, что многие OpenSource-проеграммы его используют в качестве встроенной БД Вот пусть и используют. Я использую в качестве встроенной Firebird. Цитата korvin @ у меня нет на это времени, это не входит в мои обязанности, в отличие от разработчиков "развитых средств работы с БД". Ну да, ну да. То есть ты считаешь, что в Эмбаркадеро должны сесть и написать нативный драйвер для Postgre? С чего вдруг? Они пишут нативные драйвера для распространенных БД, таких как Oracle, MSSQL, DB2, Firebird, MySQL... Для остального - плиз, есть работа с ADO и ODBC, задача разработчиков БД написать драйвера. Или ты считаешь, что MS, например, вот должна кинуться и написать .NET провайдеры для всех БД? |
|
Сообщ.
#3387
,
|
|
|
|
Цитата Romkin @ То есть ты считаешь, что в Эмбаркадеро должны сесть и написать нативный драйвер для Postgre? А что бесплатные библиотеки предоставляет только Эмбаркадеро? У Delphi нет развитой экосистемы? |
|
Сообщ.
#3388
,
|
|
|
|
Цитата Romkin @ поскольку отображение объекта на запись - крайне тупо. А как же ActiveRecord? Добавлено Цитата Romkin @ Ну да, ну да. То есть ты считаешь, что в Эмбаркадеро должны сесть и написать нативный драйвер для Postgre? С чего вдруг? Они пишут нативные драйвера для распространенных БД, таких как Oracle, MSSQL, DB2, Firebird, MySQL... С каких пор postgresql стал нераспространенной СУБД? Добавлено Romkin, а как же(или даже "где же") сообщество? Вообще ничего не пишет? |
|
Сообщ.
#3389
,
|
|
|
|
Цитата Мяут-Настоящий @ А что бесплатные библиотеки предоставляет только Эмбаркадеро? У Delphi нет развитой экосистемы? Цитата korvin @ у меня нет на это времени, это не входит в мои обязанности, в отличие от разработчиков "развитых средств работы с БД". Это к этому. В Delphi реализована очень неплохая структура, когда все идет через единый набор объектов, независимо от вида доступа: ADO, или нативно, или ODBC или DBX. Какие проблемы-то? Драйвер для доступа должен писать разработчик БД, это мое мнение. |
|
Сообщ.
#3390
,
|
|
|
|
Цитата Romkin @ Драйвер для доступа должен писать разработчик БД, это мое мнение. Даже если так, то зачем им писать что-то для Delphi? Подозреваю, что они о ней даже не задумывались... |