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

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

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

deks



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Arioch1
 
Принципиальная новизна подхода от RO - в mapped types. Их API, который предлагается реализовать в Sugar, не содержит реализации. Скорее можно говорить об аналогии с XSLT - схеме трансформации API в нативный на платформе (или к любому коду, содержащему реализацию).
 
Да, есть куча RTL, но все они стараются сделать свою реализацию API.  
 
Sugar будет делать трансляцию вызовов в native API на каждой платформе. И
 
Именно такого подхода я раньше не встречал, и мне он кажется интересным. И нет, я не считаю что в RO мега-таланты могут сделать лучше других. Но они уже сделали не так, как другие, и именно это я отмечаю.  
 
В ИТ важно говорить о преимуществах технологии не в терминах "нравится/нет", а выделять именно отличительные особенности. Набор отличительных особенностей делает ту или иную технологию приемлемой для использования для определенной задачи. И эти особенности важно знать.
 
Мне уже становилось грустно от поддержки iOS в DXE2, поэтому я сейчас и тестирую подход RemObjects.  
 
Добавлено:
FunCode
 
FastReport оч сложно откомпилировать из среды, загружая их DPK/DPROJ. Это связано с тем, что не все настройки в этих проектах прописаны. Сам когда то пытался в XE2 перекомпилировать - сложно, много руками делать пришлось.
 
Нужно искать .bat файлы, которые собирают проект. Вроде бы они стали такую штуку класть в поставку!

Всего записей: 857 | Зарегистр. 09-10-2003 | Отправлено: 08:31 16-12-2012
Arioch1



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Еще раз, в отображении переменных я не вижу ничего принципиально нового. Нового для Дельфи - возможно.
 
Отображение методов может быть только когда они ведут себя абсолютно идентично.
 
В тех условиях, когда они себя ведут не идетиячно остаются два варианта:
1) Запрещать такое использование. Undefined behaviour. - это то самое "общее подмножество", ты такой редуцированный вариант отрицаешь.
2) Установить свой стандарт поведения, и (предварительно проверив, что ситуация нестандартная) корректировать поведение родного метода. Т.е. написать свой код проверки контекста и свой код поведения. Это то, что пытаются делать большинство кроссплатформных RTL

Всего записей: 904 | Зарегистр. 03-03-2010 | Отправлено: 15:38 16-12-2012
deks



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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}
 

 
при этом, все методы такого отображаемого класса будут inline. Также можно указывать свойства, которые можно отобразить на свойства другого класса. Например:
 

Код:
property Length: Int32 read mapped.length;

 
Методы определяются примерно так:
 

Код:
 
{$IF ECHOES OR COOPER}
    method IndexOf(aString: String): Int32; mapped to IndexOf(aString);
    method LastIndexOf(aString: String): Int32; mapped to LastIndexOf(aString);
    {$ELSEIF NOUGAT}
    method IndexOf(aString: String): Int32;
    method LastIndexOf(aString: String): Int32;
    {$ENDIF}
 

 
Тут мы видим, что для Nougat будет реализация методов, то есть логика платформы Cocoa чуть сложнее, чем просто указать имя отображаемого метода. Она выглядит так:
 

Код:
 
method String.IndexOf(aString: String): Int32;
begin
  result := mapped.rangeOfString(aString).location;
end;
 
method String.LastIndexOf(aString: String): Int32;
begin
  result := mapped.rangeOfString(aString) options(NSStringCompareOptions.NSBackwardsSearch).location;
end;
 

 
Вот такая штука. Полезно, имхо) Именно такого не встречал, что и отмечаю.
 
Если кто укажет аналогии - хорошо, расширю кругозор))

Всего записей: 857 | Зарегистр. 09-10-2003 | Отправлено: 10:16 17-12-2012
kot3

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Создаю в RAD XE3 Update1 c++ Builder пустое консольное приложение. При создании выбираю VCL framework. В настройках выставляю статическую сборку и релиз.
Получаю исполняемые файлы 1.3 Мб (x86) и 8.0 Мб (x64). Так и должно быть? (Я про размер x64). Или я что-то где-то делаю не так? Пустое консольное приложение без VCL соответственно 70 Кб (x86) и 85 Кб (x64).

Всего записей: 430 | Зарегистр. 15-12-2005 | Отправлено: 10:53 17-12-2012
Arioch1



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Про первое я тебе говорил уже - 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 влинковывает ?

Всего записей: 904 | Зарегистр. 03-03-2010 | Отправлено: 11:03 17-12-2012
kot3

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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
 


Код:
x64 map
 
 Start Length Name Class
 0001:00401000 000323110H _TEXT                  CODE
 0002:00725000 0001D73B0H _RODATA                RODATA
 0003:008FD000 00002134CH _DATA                  DATA
 0004:0091E350 00004C310H _BSS                   BSS
 0005:00000000 000000300H _TLS                   TLS
 0006:0096C000 00006C45CH _PDATA                 PDATA
 0007:009D9000 0000700F0H _XDATA                 XDATA
 0008:00A4A000 000000000H _DEBUG_ARANGES         DEBUG_ARANGES
 0009:00A4A000 000000000H _DEBUG_MACINFO         DEBUG_MACINFO
 0010:00A4A000 000000000H _DEBUG_PUBTYPES        DEBUG_PUBTYPES
 0011:00A4A000 000000000H _DEBUG_INFO            DEBUG_INFO
 0012:00A4A000 000000000H _DEBUG_ABBREV          DEBUG_ABBREV
 0013:00A4A000 000000000H _DEBUG_LINE            DEBUG_LINE
 0014:00A4A000 000000000H _DEBUG_STR             DEBUG_STR
 0015:00A4A000 000000000H _DEBUG_LOC             DEBUG_LOC
 0016:00A4A000 000000000H _DEBUG_RANGES          DEBUG_RANGES
 

run time packages выключены - чисто статическая сборка.
Такое ощущение, что LLVM линкует всю run time и vcl без особой нужды.
Вот код который я собирал.

Код:
#include <vcl.h>
#include <windows.h>
 
#pragma hdrstop
#pragma argsused
 
#include <tchar.h>
#include <stdio.h>
 
int _tmain(int argc, _TCHAR* argv[])
{
  return 0;
}
 

Повторюсь - Получаю исполняемые файлы ~1.3 Мб (x86) и ~8.0 Мб (x64).

Всего записей: 430 | Зарегистр. 15-12-2005 | Отправлено: 14:08 17-12-2012
Arioch1



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

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

А почему ощущение, ты же можешь
Цитата:
сделай детальный map-файл
, в котором будут разбивка сколько байт на каждый юнит отведено - там и увидишь. Так делает меню Project / Analyze, если JCL установлен.

Всего записей: 904 | Зарегистр. 03-03-2010 | Отправлено: 15:25 17-12-2012
kot3

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Arioch1
Попробую, но судя по тому map-файлу который я привел выше debug секции имеют нулевую длину. Или я не прав?
 
Project / Analyze для x64 проекта вылетает с exception.
 
Если собирать проект в debug моде, то размер увеличивается совсем немного (~300 Кб).
Судя по полному map-файлу (~100 000 строк) там чуть ли не вся VCL и RTL линкуется в исполняемый файл. Зачем? Может быть это бага? Или это фича такая?

Всего записей: 430 | Зарегистр. 15-12-2005 | Отправлено: 15:58 17-12-2012 | Исправлено: kot3, 16:39 17-12-2012
Arioch1



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да, видимо так. И скорее всего там действительно половина VCL - я это тоже предполагал. Но лучше знать, чем предполагать

Всего записей: 904 | Зарегистр. 03-03-2010 | Отправлено: 16:34 17-12-2012
deks



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Видимо, пока доведут до ума новый компилятор на LLVM - пройдет пару лет..  
 
Со страхом думаю, чего будет в Delphi, когда туда засунут LLVM + ARC!

Всего записей: 857 | Зарегистр. 09-10-2003 | Отправлено: 17:43 17-12-2012
eddoc



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

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

Будет еще по паре апдейтов в течение 3 следующих версий IDE

Всего записей: 328 | Зарегистр. 25-11-2007 | Отправлено: 17:51 17-12-2012
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Народ, фаст 4.13 ставил руками, при редактировании шаблона из под студии пишет класс TfrxReport и тд.(другие классы)  не найден?????  
 Пути попрописывал, насколько я знаю при автоустановке фастовские либы кидаются в систем32, мож в етом прикол??

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 12:30 18-12-2012 | Исправлено: MagistrAnatol, 12:39 18-12-2012
deks



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol
 
Если руками ставил, то мог отключить нужный пакет для именно этого проекта - сначала проверь в списке загруженных packages (должна стоять галка у пакетов фаста). Если галка не стоит, то нужно поставить - пакет загрузится, и компоненты можно будет использовать.
 
Другой вариант - нету в списке пакетов. Тогда ты их не установил в среду! Нужно будет руками установить в среду нужные пакеты. Может, у фастов есть батник соответствующий (раньше что то такое было).  
 
Ну а я ставлю всегда инсталлом именно для нужной версии среды - и именно из-за таких проблем!) У фаста на редкость глючная поставка в плане пакетов: там опции нужные не прописаны, нету путей, и тп.. Сами фасты компилируют свое творение в командной строке, видимо, батником или какой-нибудь build машиной. В среде заставить фаст компильнуться и установиться - это секас примерно на часик))
 

Всего записей: 857 | Зарегистр. 09-10-2003 | Отправлено: 13:39 18-12-2012
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
deks
где-то так, просто у меня версия 4.13 из обменника в упор не захотела компилиться, точнее написало что все скомпилилось, а папочка либ пустая , вот и пришлось руками все делать

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 15:38 18-12-2012
deks



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol
 
Значить, bat файл засунул куда то bpl! Можно глянуть в насройках к компилятору - куда он их дел! Или с помощью Far найти файлы на диске, и опознать по времени компиляции..
 
Имхо, быстрее задействовать их bat файл, чем пытаться настроить dpk на компиляцию в среде!)

Всего записей: 857 | Зарегистр. 09-10-2003 | Отправлено: 16:22 18-12-2012
MagistrAnatol



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

Цитата:
Можно глянуть в насройках к компилятору
подскажи слепому где в recompile.exe есть настройки?
По умолчнию он должен закидать в Либ..... в корне, в стандартных каталогах для компиляции студии их нет, поискать моно,я уже искал, причем по всех дисках , попробую ещо раз

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 10:55 20-12-2012
Arioch1



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Process Monitor что говорит ? файлы *.dcp и *.bpl вообще создаются или нет ?
 
bat файл ошибки какие-нибудь пишет ?
 

Всего записей: 904 | Зарегистр. 03-03-2010 | Отправлено: 13:00 20-12-2012
deks



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol
 
recompile.exe создает лог, в котором есть запускаемые им компанды со всеми ключами и путями!
 
Эти же команды можно запустить "ручками".
 
П.С. в инсталл.тхт указано, что должны быть полномочия на запись в системную папку виндовз. Видимо, у тебя полномочий нету, и после того как recompile обламывается с копированием туда bpl, он их трет)) но как настоящая русская партизанская программа, не сообщает об этом пользователю - зачем голову забивать всякой фигней!

Всего записей: 857 | Зарегистр. 09-10-2003 | Отправлено: 15:38 20-12-2012 | Исправлено: deks, 15:40 20-12-2012
MagistrAnatol



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
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  не могу нормально загнать шаблон фастрепорта,в чем прикол? что я не так делаю???

Всего записей: 2120 | Зарегистр. 09-04-2003 | Отправлено: 17:59 20-12-2012
deks



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MagistrAnatol
 
Тут надо знать, как блоки IBExpertа должны работать с blob-полями.. С ходу - set TEMPATE_TEXT=:script_data не вижу кавычек для строкового поля! Не уверен что в DML можно в BLOB вот так писать..
 
А зачем именно скрипт IBExpert? Не проще ли написать простенькую програмку с FibPlus? И уже ею правильно положить в blob скрипт?

Всего записей: 857 | Зарегистр. 09-10-2003 | Отправлено: 18:19 20-12-2012
Открыть новую тему     Написать ответ в эту тему

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