
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.5] |
![]() |
|
Страницы: (117) « Первая ... 23 24 [25] 26 27 ... 116 117 ( Перейти к последнему сообщению ) |
![]() |
Сообщ.
#361
,
|
|
вопрос вообще ньюб поднял... наверное потому, что хотят искоренить зло
![]() |
Сообщ.
#362
,
|
|
|
Цитата Profi @ Кстати, что меня больше всего удивляет, это то, что Delphi’сты никогда не начинают кричать первыми: «C++ - отстой, Delphi – рулит!». Это всегда начинают C’шники. Вопрос: почему? А меня удивляет, почему кричать начинают дельфисты, а приписывают это сишникам? ![]() Цитата Smike @ Не читал предыдущих ораторов, но по долгу службы мне пришлось недавно разбираться с крупным сишным проектом. Это ядро для программы, визуальная часть которой пишется на Delphi. Так вот, в ходе своего знакомства я увидел, что для элементарных вещей в Delphi в C++ требуются большие усилия. Например, чтобы задать экспортирумым функциям нормальные имена (а не _Function@8) нужно вручную править DEF-файл. То же самое в Delphi делается без всякого вмешательства программиста: всем функциям изначально даются такие же имена, как в коде. |
![]() |
Сообщ.
#363
,
|
|
Цитата archimed7592 @ сказать то большего нечего ![]() ты либо обоснуй, что проперти - незаменимый инструмент, без которого не прожить, либо докажи мне, что шаблоны из себя ничего не представляют, кроме как пыли в глаза... Ok. Перепиши на C++: ![]() ![]() Function GetAllProp(const AObject:TObject; const Parent:String):TStringList; var pl:PPropList; Count:integer; i,j:integer; sp:TStrings; begin Result:=TStringList.Create; Count:=GetPropList(AObject,pl); for I := 0 to Count - 1 do if (pl^[i]^.PropType^^.Kind in [tkChar, tkString, tkClass, tkWChar, tkLString, tkWString]) then begin if (pl^[i]^.PropType^^.Kind=tkClass) then begin if pl^[i]^.PropType^^.Name='TCaption' then begin result.Add(Parent+pl^[i]^.Name+' = '+GetStrProp(AObject,pl^[i]^.Name)); end else begin if pl^[i]^.PropType^^.Name='TStrings' then begin sp:=TStrings(GetObjectProp(AObject,pl^[i]^.Name)); for j := 0 to Sp.Count - 1 do begin Result.Add(Parent+pl^[i]^.Name+'\'+IntToStr(j)+' = '+sp[j]); end; end else begin if (GetObjectProp(AObject,pl^[i]^.Name)<>nil) then Result.AddStrings(GetAllProp(GetObjectProp(AObject,pl^[i]^.Name),pl^[i]^.Name+'\')); end; end; end else begin result.Add(Parent+pl^[i]^.Name+' = '+GetStrProp(AObject,pl^[i]^.Name)); end; end; end; Я без template смог обойтись. Обойдись без property. |
![]() |
Сообщ.
#364
,
|
|
Цитата Profi @ динасическое выяснение есть ли у объекта пропертся с определённым названием? ну и где здесь полезность? заменяется всё это парочкой паттернов, которые, замечу, намного более приятное проектное решение, чем такой вот поиск пропертей Ok. Перепиши на C++: |
![]() |
Сообщ.
#365
,
|
|
Цитата archimed7592 @ динасическое выяснение есть ли у объекта пропертся с определённым названием? Нет. |
Сообщ.
#366
,
|
|
|
Profi, templates это не просто шаблоны - это STL, Boost, Итераторная модель, метапрограммирование шаблонов и прочие радости жизни
![]() |
![]() |
Сообщ.
#367
,
|
|
Цитата archimed7592 @ заменяется всё это парочкой паттернов, которые, замечу, намного более приятное проектное решение, чем такой вот поиск пропертей А теперь представь что у тебя пару десятков сторонних компонентов. Цитата Мяут @ Profi, templates это не просто шаблоны - это STL, Boost, Итераторная модель, метапрограммирование шаблонов и прочие радости жизни ![]() А я и не говорю, что template фигня, я говорю, что property тоже очень облегчают жизнь, как и variant. |
![]() |
Сообщ.
#368
,
|
|
Цитата Profi @ Нет. Цитата Profi @ что код делает (в двух словах) А теперь представь что у тебя пару десятков сторонних компонентов. Добавлено опять же, насчёт твоего неповторимого примера с делегатами, да ещё и без шаблонов: а если я хочу подсунуть любую ф-цию, а не только такую, которая берёт массив вариантов? |
![]() |
Сообщ.
#369
,
|
|
Цитата archimed7592 @ что код делает (в двух словах) Проходиться по всем свойствам и сохраняет в TStringList те, что являются строковыми. |
![]() |
Сообщ.
#370
,
|
|
ну и в чем его полезность? зачем это нужно? не просто же так эту ф-цию написали... какой-то целью задавались...
|
![]() |
Сообщ.
#371
,
|
|
Цитата archimed7592 @ опять же, насчёт твоего неповторимого примера с делегатами, да ещё и без шаблонов: а если я хочу подсунуть любую ф-цию, а не только такую, которая берёт массив вариантов? А-а-а, где Астарот! ![]() ![]() ![]() -Added Цитата archimed7592 @ ну и в чем его полезность? зачем это нужно? не просто же так эту ф-цию написали... какой-то целью задавались... Создание многоязычного приложения. |
![]() |
Сообщ.
#372
,
|
|
Цитата Profi @ Создание многоязычного приложения. Цитата Profi @ че правда, что ль? TStringList ![]() ну а если серьёзно, зачем в риалтайме нужен список строковых проперти при создании многоязычного приложения? |
Сообщ.
#373
,
|
|
|
Profi, variant это что-то типа неявной типизации?
По поводу property, так это просто способ быстрой и простой инкапсуляции данных без всяких заморочек ![]() Цитата Profi @ Ok. Перепиши на C++: Оно юзает какую-то чтуку типа PPropList? Ну что-то вроде list, да? А еще говорят что код на Delphi крайне понятен ![]() ![]() |
![]() |
Сообщ.
#374
,
|
|
Цитата archimed7592 @ ну а если серьёзно, зачем в риалтайме нужен список строковых проперти при создании многоязычного приложения? Будешь каждое свойство ручками менять? Ну-ну.. |
![]() |
Сообщ.
#375
,
|
|
Мяут, это у них такой "крутой" RTTI
![]() Добавлено Цитата Profi @ будешь в риалтайме переводить? lingvo automation Будешь каждое свойство ручками менять? Ну-ну.. ![]() почему бы не сформулировать задачу полностью? Добавлено я вот тебе сейчас покажу кусочек из недр STL или boost и скажу "перепиши"... мы ж здесь не переводом занимаемся... |