Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Вопросы по Embarcadero RAD Studio XE3

Автор: Arioch1
Дата сообщения: 14.12.2012 17:01
То что называется по разному - это фигня. Это они сделают конечно же. Это и в Delphi на инлайнах можно сделать.

А вот то, что ведёт себя по разному... Помнится тут прилетал один дизайнер и обещал на раз-два сделать FMX полностью соответствующим любому нативному UI
И его не смутило что SWT развивается годами...

Будет у них обычное "наименьшее подмножество" поведений.

Добавлено:
salexn1 отлистни страничку назад
Автор: kot3
Дата сообщения: 14.12.2012 17:12

Цитата:
отлистни страничку назад

Может в шапку лучше отправить?
Автор: deks
Дата сообщения: 14.12.2012 19:25
Arioch1

Вся прелесть в том, что в Sugar есть mapped types, которые прямо соответствуют нативному классу на платформе! То есть, ничего не мешает задействовать платформенные фишки. И никакого lock на common denominator!) И на платформе никто не ограничен возможностями кросс-платформенного API класса. Хочешь - задействуй класс через кросс-платформенные методы, хочешь - этот же объект имеет и все нативные методы для платформы.

Разности поведения тоже не происходит, так как у mapped класса могут быть только методы, причем они будут inline. Очень многие методы могут быть просто mapped на соответствующий метод нативного класса.

А уж если нужно такую же фишку провернуть на другой платформе, ничего не стоит добавить собственный mapped-method.

Довольно здравая тема на самом деле - и гибкая, и многофункциональная! Я как то проникся))

Про GUI: идея общего GUI на разных платформах наталкивается на проблему с разными HIG платформ. Не все можно откорректировать стилями. Иногда GUI проще полностью переделать. Не вижу большой актуальности в кросс-платформенном GUI.

А вот общий backend на разных платформах бы не помешал!) типа, JSON, XML, rest, oauth, zip, SQLite, ...
Автор: Frodo_Torbins
Дата сообщения: 14.12.2012 21:27
deks
Мне как то попадалась статья, в которой было описано, насколько сложно писать XAML-код, работающий одинаково на разных майкрософтовых платформах. Проблема была как раз в том, что при наличии одних и тех же функций и классов на всех платформах, все они ведут себя немного по разному. Это оказался такой мощный источник багов, что автор отказался от идеи добавить в свою библиотеку поддержку WinRT.
В mapped types таких особенностей поведения будет еще больше. Хорошо хоть платформ пока что всего около восьми.
Автор: xRay
Дата сообщения: 14.12.2012 21:44
Arioch1

Цитата:
Взять готовый, написанный другими парсер C++ от LLVM CLang и добавить в него интеграцию с IDE и возможно borland-specific расширения языка - это одно.
С нуля реализовать Delphi-парсер, свой собственный - это другое.

Сам не щупал, но есть вот такой проект http://code.google.com/p/llvm-pascal/ и судя по логу измений исходников в репе он живет и комитится
Автор: deks
Дата сообщения: 14.12.2012 22:12
Frodo_Torbins

Без ссылки на первоисточник сложно обсуждать сабж, но замечу - xaml'ом у ms описывается интерфейс, то есть frontend. Я же говорю о backend - это разные вещи)) Так что mapped types отлично подходят для своей задачи!) Просто задачу нужно понимать правильно. Ну и mapped types не претендуют на роль серебрянной пули в cross platform. Создать хорошие API для RTL - это непросто!)

Думаю, RemObjects постараются взять идеи из .net)
Автор: Arioch1
Дата сообщения: 15.12.2012 14:11
так это все уже есть - Apache Runtime, Qt, C RTL, C++ RTL, Delphi/FPC RTL - они все задают тот самый RTL API
Не говоря про библиотеки класов .Net/Java/Android

Зачем новый API придумывать ? возьми готовый и если хочется сделай свою реализацию (как FPC для Delphi API)

И кстати Дельфи после D8 тоже пытаются свой RTL API слизать с .Net и его хороших идей. Иногда - как с TEncoding - получается жуть

Ты считаешь что в RO сидят мега-таланты которые сделают это лучше, чем все до них.
Мы скептики, мы считаем что у них получится ровно то же, что у других - не хуже и не лучше.
И поетнциально у них не будет большого сообщества, которое смогло бы недостатки выправлять заних, как только они сочтут проект законченным и снимут с него своих ключевых программистов
Автор: Kiklo
Дата сообщения: 15.12.2012 17:55
И всё-таки хотелось бы услышать более определенный ответ на вопрос: способен ли XE3 U1 компилить плавающую арифметику по-старинке под x87, не пользуясь SSE2/SSE3? Вопрос стоит не про режим умолчания, а саму принципиальную возможность его к этому принудить, выставляя разные опции. Одинаково ли обстоит с этим делом в x32 и в x64 вариантах, или по-разному?

В этой же связи непонятно, является ли код x87 запрещенным в режиме x64 или же его использование заблокировано исключительно по политическим мотивам? Т.е. могу ли я линковать с x64-кодом ассемблерные модули, содержащие в себе расчеты на x87?
Автор: Arioch1
Дата сообщения: 15.12.2012 19:49
1) повторяю: люди делали модуль, на инлайн-функциях и рекорд-хелперах для XE2 x64 чтобы верунть рассчёты Extended на x87
Он разумеется работает медленее родной поддержки, хотя бы потому что не может ставить FWAIT только где надо, а не везде-либо-нигде. Тем не менее, он существует и люди им пользовались.

2) Компилятор в XE3 - это продолжения компилятора XE2, а не что-то новое. Поэтому он точно так же бедт использовать 10-байтовый x87 в x86-режиме, и 8-байтовый SSE в x64
Автор: deks
Дата сообщения: 16.12.2012 06:31
Arioch1

Принципиальная новизна подхода от RO - в mapped types. Их API, который предлагается реализовать в Sugar, не содержит реализации. Скорее можно говорить об аналогии с XSLT - схеме трансформации API в нативный на платформе (или к любому коду, содержащему реализацию).

Да, есть куча RTL, но все они стараются сделать свою реализацию API.

Sugar будет делать трансляцию вызовов в native API на каждой платформе. И

Именно такого подхода я раньше не встречал, и мне он кажется интересным. И нет, я не считаю что в RO мега-таланты могут сделать лучше других. Но они уже сделали не так, как другие, и именно это я отмечаю.

В ИТ важно говорить о преимуществах технологии не в терминах "нравится/нет", а выделять именно отличительные особенности. Набор отличительных особенностей делает ту или иную технологию приемлемой для использования для определенной задачи. И эти особенности важно знать.

Мне уже становилось грустно от поддержки iOS в DXE2, поэтому я сейчас и тестирую подход RemObjects.

Добавлено:
FunCode

FastReport оч сложно откомпилировать из среды, загружая их DPK/DPROJ. Это связано с тем, что не все настройки в этих проектах прописаны. Сам когда то пытался в XE2 перекомпилировать - сложно, много руками делать пришлось.

Нужно искать .bat файлы, которые собирают проект. Вроде бы они стали такую штуку класть в поставку!
Автор: Arioch1
Дата сообщения: 16.12.2012 13:38
Еще раз, в отображении переменных я не вижу ничего принципиально нового. Нового для Дельфи - возможно.

Отображение методов может быть только когда они ведут себя абсолютно идентично.

В тех условиях, когда они себя ведут не идетиячно остаются два варианта:
1) Запрещать такое использование. Undefined behaviour. - это то самое "общее подмножество", ты такой редуцированный вариант отрицаешь.
2) Установить свой стандарт поведения, и (предварительно проверив, что ситуация нестандартная) корректировать поведение родного метода. Т.е. написать свой код проверки контекста и свой код поведения. Это то, что пытаются делать большинство кроссплатформных RTL
Автор: deks
Дата сообщения: 17.12.2012 08:16
Arioch1

В Oxygene нет отображения переменных. Есть классы, которые можно отобразить на другие классы, создав своеобразных helper класс. Только helper имеет свое имя. Например,


Код:
{$IF COOPER}
String = public class mapped to java.lang.String
{$ELSEIF ECHOES}
String = public class mapped to System.String
{$ELSEIF NOUGAT}
String = public class mapped to Foundation.NSString
{$ENDIF}
Автор: kot3
Дата сообщения: 17.12.2012 08:53
Создаю в RAD XE3 Update1 c++ Builder пустое консольное приложение. При создании выбираю VCL framework. В настройках выставляю статическую сборку и релиз.
Получаю исполняемые файлы 1.3 Мб (x86) и 8.0 Мб (x64). Так и должно быть? (Я про размер x64). Или я что-то где-то делаю не так? Пустое консольное приложение без VCL соответственно 70 Кб (x86) и 85 Кб (x64).
Автор: Arioch1
Дата сообщения: 17.12.2012 09:03
Про первое я тебе говорил уже - Scala 1.x for .Net, причём рекламировалось тоже на примере со строкой
Оказалось никому практически не нужно.
Хотя фанаты ваяют 2.x теперь на базе IKVM.net, наряду со Sacala for Flash и Scala for LLVM.


Цитата:
As an example of the latter, Java strings are not emulated but native System.String instances are used. Same goes for exceptions and arrays. This desirable feature has a ripple effect throughout the
API exposed by IKVM, that has to be taken into account when targeting it (don’t worry: jdk2ikvm does it for you). For example, a System.String can’t possibly implement interface java.lang.CharSequence, unlike Java strings.


Про IndexOf для .Net или Java я не вижу чем, кроме сахара, это отличается от инлайновых методов.
Про IndexOf для MacOS я не вижу, чем это отличается от обычной реализации методов в FPC/Delphi RTL.


Цитата:
method IndexOf(aString: String): Int32; mapped to IndexOf(aString);

Вот это меня вообще убило. Т.е. несмотря на то, что я приравнял свой тип к типу платформы, я все равно должен определять все методы, даже абсолютно совпадающие ?

Т.е. единственное, что я получил от отображения - это возможность прозрачно дать свою строку параметром в нативную для платформы функцию ? То, что во-первых несложно реализуется через Implicit typecast, а во-вторых должно быть просто ненужно, ибо мы ведь делаем кроссплатформную программу.

Добавлено:
kot3 сделай детальный map-файл, посомтри что там внутри. Похоже на debug info

Жалко CFF explorer борландовский debug info не видит...

у тебя runtime packages точно включены в x64 ? может быть LLVM просто не умеет динамически BPL загружать и их все в EXE влинковывает ?
Автор: kot3
Дата сообщения: 17.12.2012 12:08
Arioch1
Спасибо, но Debug info судя по всему нет

Код: x86 map
Start Length Name Class
0001:00401000 000132A94H _TEXT CODE
0002:00534000 00000B89CH _DATA DATA
0003:0053F89C 000009444H _BSS BSS
0004:00000000 0000000BCH _TLS TLS
Автор: Arioch1
Дата сообщения: 17.12.2012 13:25

Цитата:
Такое ощущение

А почему ощущение, ты же можешь
Цитата:
сделай детальный map-файл
, в котором будут разбивка сколько байт на каждый юнит отведено - там и увидишь. Так делает меню Project / Analyze, если JCL установлен.
Автор: kot3
Дата сообщения: 17.12.2012 13:58
Arioch1
Попробую, но судя по тому map-файлу который я привел выше debug секции имеют нулевую длину. Или я не прав?

Project / Analyze для x64 проекта вылетает с exception.

Если собирать проект в debug моде, то размер увеличивается совсем немного (~300 Кб).
Судя по полному map-файлу (~100 000 строк) там чуть ли не вся VCL и RTL линкуется в исполняемый файл. Зачем? Может быть это бага? Или это фича такая?
Автор: Arioch1
Дата сообщения: 17.12.2012 14:34
Да, видимо так. И скорее всего там действительно половина VCL - я это тоже предполагал. Но лучше знать, чем предполагать
Автор: deks
Дата сообщения: 17.12.2012 15:43
Видимо, пока доведут до ума новый компилятор на LLVM - пройдет пару лет..

Со страхом думаю, чего будет в Delphi, когда туда засунут LLVM + ARC!
Автор: eddoc
Дата сообщения: 17.12.2012 15:51
deks

Цитата:
Со страхом думаю, чего будет в Delphi, когда туда засунут LLVM + ARC!

Будет еще по паре апдейтов в течение 3 следующих версий IDE
Автор: MagistrAnatol
Дата сообщения: 18.12.2012 10:30
Народ, фаст 4.13 ставил руками, при редактировании шаблона из под студии пишет класс TfrxReport и тд.(другие классы) не найден?????
Пути попрописывал, насколько я знаю при автоустановке фастовские либы кидаются в систем32, мож в етом прикол??
Автор: deks
Дата сообщения: 18.12.2012 11:39
MagistrAnatol

Если руками ставил, то мог отключить нужный пакет для именно этого проекта - сначала проверь в списке загруженных packages (должна стоять галка у пакетов фаста). Если галка не стоит, то нужно поставить - пакет загрузится, и компоненты можно будет использовать.

Другой вариант - нету в списке пакетов. Тогда ты их не установил в среду! Нужно будет руками установить в среду нужные пакеты. Может, у фастов есть батник соответствующий (раньше что то такое было).

Ну а я ставлю всегда инсталлом именно для нужной версии среды - и именно из-за таких проблем!) У фаста на редкость глючная поставка в плане пакетов: там опции нужные не прописаны, нету путей, и тп.. Сами фасты компилируют свое творение в командной строке, видимо, батником или какой-нибудь build машиной. В среде заставить фаст компильнуться и установиться - это секас примерно на часик))

Автор: MagistrAnatol
Дата сообщения: 18.12.2012 13:38
deks
где-то так, просто у меня версия 4.13 из обменника в упор не захотела компилиться, точнее написало что все скомпилилось, а папочка либ пустая , вот и пришлось руками все делать
Автор: deks
Дата сообщения: 18.12.2012 14:22
MagistrAnatol

Значить, bat файл засунул куда то bpl! Можно глянуть в насройках к компилятору - куда он их дел! Или с помощью Far найти файлы на диске, и опознать по времени компиляции..

Имхо, быстрее задействовать их bat файл, чем пытаться настроить dpk на компиляцию в среде!)
Автор: MagistrAnatol
Дата сообщения: 20.12.2012 08:55
deks

Цитата:
Можно глянуть в насройках к компилятору
подскажи слепому где в recompile.exe есть настройки?
По умолчнию он должен закидать в Либ..... в корне, в стандартных каталогах для компиляции студии их нет, поискать моно,я уже искал, причем по всех дисках , попробую ещо раз
Автор: Arioch1
Дата сообщения: 20.12.2012 11:00
Process Monitor что говорит ? файлы *.dcp и *.bpl вообще создаются или нет ?

bat файл ошибки какие-нибудь пишет ?

Автор: deks
Дата сообщения: 20.12.2012 13:38
MagistrAnatol

recompile.exe создает лог, в котором есть запускаемые им компанды со всеми ключами и путями!

Эти же команды можно запустить "ручками".

П.С. в инсталл.тхт указано, что должны быть полномочия на запись в системную папку виндовз. Видимо, у тебя полномочий нету, и после того как recompile обламывается с копированием туда bpl, он их трет)) но как настоящая русская партизанская программа, не сообщает об этом пользователю - зачем голову забивать всякой фигней!
Автор: MagistrAnatol
Дата сообщения: 20.12.2012 15:59
deks

пасибо разобрался, взял сорцы из копилки а компилятор из триала и все пошло
Теперь другой вопрос
есть таблица файребирда
CREATE TABLE FRX_TEMPLATE (
CH INTEGER DEFAULT 0,
TEMPLATE_ID INTEGER,
TEMPLATE_GROUP INTEGER,
TEMPLATE_NAME VARCHAR(70),
TEMPLATE_FILE_NAME VARCHAR(20),
TEMPATE_TEXT BLOB SUB_TYPE 1 SEGMENT SIZE 16384 CHARACTER SET UTF8,
FRX_TEMPLATE_ID INTEGER NOT NULL
);

есть скрипт
execute ibeblock
as
begin
fr3_path='D:\Робота\Проекты в розробке\VDGO_NEW\Win32\Debug\TMPL\';

ibec_InputQuery('Введіть шлях до файлів шаблонів','*.fr3',fr3_path);
ibec_progress('Пошук шаблонів...');
files_count = ibec_getfiles(files_list, :fr3_path, '*.fr3', __gfRecursiveSearch + __gfFullName);

if (files_count > 0) then
begin
i = 0;
while (i <= ibec_high(files_list)) do begin
file_name = files_list[i];
script_data='';
script_data = ibec_loadfromfile(file_name);
ibec_progress('Знайдено шаблон ' || :file_name);
ibec_Pause(500);
fn=ibec_ExtractFileName(:file_name);
fnpos=ibec_Pos('.', fn);
TEMPLATE_FILE_NAME=ibec_Copy(fn,1,fnpos-1);

--tmpl_text=ibec_UTF8ToAnsiString(:script_data);
update FRX_TEMPLATE set TEMPATE_TEXT=:script_data where TEMPLATE_FILE_NAME=:TEMPLATE_FILE_NAME;
commit;

i = i + 1;
end
end
end;
и в поле TEMPATE_TEXT не могу нормально загнать шаблон фастрепорта,в чем прикол? что я не так делаю???
Автор: deks
Дата сообщения: 20.12.2012 16:19
MagistrAnatol

Тут надо знать, как блоки IBExpertа должны работать с blob-полями.. С ходу - set TEMPATE_TEXT=:script_data не вижу кавычек для строкового поля! Не уверен что в DML можно в BLOB вот так писать..

А зачем именно скрипт IBExpert? Не проще ли написать простенькую програмку с FibPlus? И уже ею правильно положить в blob скрипт?
Автор: MagistrAnatol
Дата сообщения: 20.12.2012 16:46
deks
может и проще, щас попробую, самое интересное что некоторые шаблоны забрасываются, те у которых мало текста в шаблоне, а мне надо загнать договор.
Я даже в ибексперте открываю редактор блоба и через диалог открытия файла загоняю шаблон в блоб , но при записи шаблон ломается, почему не пойму.А если через в шаблоне скопировать а в блобе вставить
то нормально, только с кодировками проблемы, но ето мелочи

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738

Предыдущая тема: [Delphi XE2] Размер PNG


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.