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

» Вопросы по Embarcadero RAD Studio XE2 (Pulsar)

Автор: deks
Дата сообщения: 09.06.2012 07:13
LG Team

Проект можно (имхо, и нужно) сделать на 3- tier. В самой iOS вряд ли будет что-то крупнее SQLite работать. И явно не будет никаких баз данных (я имею ввиду драйвера к "нормальным" РСУБД, потому как REST/JSON клиенты уже сейчас есть)! К тому же следует учитывать возможное отсутствие связи с сервером. Мне думается, реальная тема такая: все запросы на клиенте кэшируются в SQLite, контролы заполняются руками из SQLite3 по имеющимся данным, а при наличии подключения к инету - запросы делаются к серверу и данные обновляются (но тоже сразу кэшируются).

Сам проводил эксперименты с RO DA, а до Synopse SQLite3 Framework руки не дошли, но их тоже можно пробовать - вполне ок решение. В общем, REST API + JSON наше все. Как бонус - можно делать web клиент к такому серверу)
Автор: Frodo_Torbins
Дата сообщения: 11.06.2012 16:18
teresva
Формы в dll это довольно сложная тема. Если хост написан на делфи или билдере, то все запросто решается с помощью рантайм пакетов. Главное чтобы версии делфей и билдера совпадали. Если же хост не на билдере писан, то все становится очень сложно. Вплоть до того что пробовать в dll заменять VCL на KOL или FireMonkey.
Автор: Arioch1
Дата сообщения: 11.06.2012 17:01
Фродо, ты имеешь в виду "всё в BPL!, BPL - это тоже DLL" ?
В общем как обычно программы и пишутся, только с загрузкой BPLек по требованию ?

или ты имеешь в виду смешивать DLL и BPLи ?
В последнем случае уж лучше чистый DLL использовать.

Водка плюс пиво - QC 103917
Автор: teresva
Дата сообщения: 11.06.2012 19:29
Решил проблему запуска немодальной формы DLL (Delphi) из DLL (Visual Studio).
Может кому пригодится и меня поправите что не так - но пока работает.

[more=Вызов из DLL VS]int CreoExpressStampShow()
{
// Объявление указателя на функцию, вызываемой из DLL
// Обратите внимание – имена объявляемой функции и
// функции, вызываемой из DLL, могут и не совпадать,
// т.к. за выбор вызываемой функции отвечает
// GetProcAddress
ProPath CreoExStamp_dll;

//nPid = _getpid();
void (*DllFunc) (void);

// Загружаем DLL

wcscpy(CreoExStamp_dll, w_path_creoex_folder_dll);
wcscat(CreoExStamp_dll, L"CreoExStamp.dll");

h_stamp=LoadLibrary(CreoExStamp_dll);

// Контроль ошибок – если загрузка прошла успешно,
// функция вернет что-то отличное от нуля
if (!h_stamp)
{
printf("Ошибка - не могу найти CreoExStamp.dll\n");
return(0);
}

// Вызовом GetProcAddress получаем адрес функции CreateCreoExStamp_Form
// и присваиваем его указателю DllFunc с явным
// приведением типов. Это необходимо т.к.
// GetProcAddress возвращает бестиповой far-указатель
DllFunc=(void (*)(void)) GetProcAddress(h_stamp,"CreateCreoExStamp_Form");

// Контроль ошибок – если вызов функции GetProcAddress
// завершился успешно, она вернет ненулевой указатель
if (!DllFunc)
{
printf("Ошибка! В CreoExStamp.dll"
"отсутствует ф-ция CreateCreoExStamp_Form\n");
return(0);
}

// Вызов функции CreateCreoExStamp_Form из DLL
DllFunc();
FreeLibrary(h_stamp);
return (0);

}[/more]


Реализация DLL Delphi

[more=Delphi]library CreoExStamp;

uses
System.SysUtils,
System.Classes,
Vcl.Forms,
Winapi.Windows,
Vcl.Dialogs,
CreoExStamp_U in 'CreoExStamp_U.pas' {CreoExStamp_Form};

{$R *.res}

//******************************************************************************
procedure CreateCreoExStamp_Form();cdecl;export;
begin
if (Application.Handle = 0) then
begin
Application.Initialize;
Application.CreateForm(TCreoExStamp_Form, CreoExStamp_Form);
Application.Run;
end
else
CreoExStamp_Form.Show;
end;
//******************************************************************************
procedure DestroyCreoExStamp_Form();cdecl;export;
begin
CreoExStamp_Form.Free;
CreoExStamp_Form:=nil;
end;
//******************************************************************************

exports
CreateCreoExStamp_Form,
DestroyCreoExStamp_Form;


begin

end.[/more]

Некоторый строки добавлены на всякий случай (еще не подчищал).

Еще один вопрос остался
Как проводить отладку DLL Delphi запущенной из другой DLL?
Или надо подключится к EXE файлу запускающему первуюю DLL (VS)?
Автор: Frodo_Torbins
Дата сообщения: 12.06.2012 12:33
Arioch1
Я про галочку "Build with runtime packages" в настройках проекта. Меня она еще ни разу не подводила.

teresva
Если у вас окно не модальное, то нельзя организовывать свою собственную петлю сообщений. Я про "Application.Run". Замените его на "CreoExStamp_Form.Show".
Автор: unreal666
Дата сообщения: 13.06.2012 08:48
В delphicbuilder_xe2_4504_win.iso (Update 4.1) входит Help Update 5?
Автор: deks
Дата сообщения: 13.06.2012 11:06
teresva
Frodo_Torbins

А может в library проекте добавить секции initialization/finalization с соответствующим функционалом? Типа, инициализации приложения? Тут вот предлагают похожий велосипед: _http://stackoverflow.com/questions/4661015/delphi-finalizalization-code-in-a-dll
Автор: Frodo_Torbins
Дата сообщения: 13.06.2012 15:21
deks
Проблему VCL в dll это не решит.

teresva
Надо подключатся к процессу, в чьем адресном пространстве работает ваша dll-ка. Подробнее про отладку: http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1392#Header_2
Автор: deks
Дата сообщения: 13.06.2012 17:19
LG Team

А между тем, AnyDAC выпустил бэту с поддержкой iOS)

Frodo_Torbins
teresva

Я никогда не заводил VCL в отдельной DLL. ИМХО, не имеет смысла. Лучше сделать хость на Delphi VCL с run-time packages, а из-под этого хоста уже пускать DLL с билдеровскими штуками. Ну и еще я пробовал использовать RO Hydra - все работает в сочетании VCLx32 + .NET))
Автор: LG Team
Дата сообщения: 13.06.2012 17:43
deks, я давно ещё пользовался RealThinClient SDK для передачи табличных данных, но как связать потом DataSource c гридом под iOS так и не понял. Мне нужно было отображать данные именно в гриде.
Сейчас посмотрю есть ли у них примеры под iOS
Автор: reenoip
Дата сообщения: 14.06.2012 12:28
Что-то я пропустил, наверное... Прописал иконку, удалил старый exe'шник, скомпилировал новый, но эффекта нет. Перезапустил XE2, перезапустил проект - по фигу.




Как дефолтную иконку на свою заменить?
Автор: X11
Дата сообщения: 14.06.2012 12:40
иконка вроде не в проекте dpr хранится, а в файле ресурсов?
Автор: reenoip
Дата сообщения: 14.06.2012 13:01
X11
ок, сформулирую вопрос иначе: что мне нужно сделать, чтобы в МОЁМ выходном (исполняемом) файле была МОЯ иконка, а не та, которую прописывает Delphi по умолчанию?
Автор: XPerformer
Дата сообщения: 14.06.2012 13:11
reenoip
Зайти в свойства проекта Ctrl-Shift-F11
Application - Load Icon

Добавлено:
Для форм можно индивидуально прописывать иконку
Автор: X11
Дата сообщения: 14.06.2012 13:16
В файле или в главной форме?
XPerformer вон тебе подсказывает, что это 2 разные вещи.
Автор: reenoip
Дата сообщения: 14.06.2012 13:42
XPerformer
оно самое, спасибо!

Добавлено:
Под старость лет память совсем отказывает...
Автор: deks
Дата сообщения: 15.06.2012 09:46
LG Team

Есть хороший топик про iOS на XE2 про эту тему:

_http://docwiki.embarcadero.com/RADStudio/en/Components_Not_Used_in_iOS_Apps

Первым пунктом идет Data.DB, что кагбэ намекает.

В общем, я советую делать под iOS все или на XCode/ObjectiveC (возможно + Remobjects DataAbstract for ObjectiveC) или на SmartMobileStudio (там хоть Pascal, и в июльском апдейте может появиться поддержка RemObjects).
Автор: reenoip
Дата сообщения: 18.06.2012 10:05
Embarcadero® Delphi® XE2 Version 16.0.4504.48759: ширина формы ограничена значением "1386". Как победить?
Автор: Frodo_Torbins
Дата сообщения: 18.06.2012 13:11
LG Team
В FM привязка чего либо к гриду делается с помощью лайв биндингов. А что конкретно вы будете привязывать это уже ваше дело, хоть абстрактный набор объектов в памяти.
Автор: LG Team
Дата сообщения: 18.06.2012 16:24
Frodo_Torbins, так в iOS грид не имеет никаких свойств касаемо лайв биндингов..
во всех примерах что видел данные связываются с лабельками, едитами, ..
а насчет грида так и не пойму их мысль...

Добавлено:
enoip а что за проект?

хотя проверил VCL, FM.HD, 3D - никаких ограничений нет..
Автор: exteris
Дата сообщения: 19.06.2012 10:46
reenoip
Может у вас в Constraints-свойстве формы стоит ограничение?
Автор: Samotek
Дата сообщения: 19.06.2012 11:36
Привет! Я тут пробую на скорую рука DevExpressBars. Пожалуйста, поправьте, если я не прав:
1. Если на 10 формах есть TdxBarPopupMenu, то у каждого должен быть TdxBarManager (один и тот же или несколько разных)
2. Для того, чтобы прикрутить TdxBarPopupMenu к стандартному контролу - надо делать что-то специальное.
Автор: mcka
Дата сообщения: 20.06.2012 11:41
Может кто знает как сделать, чтобы в Runtime packages подставлялась версия Compiler Versions
как то же с rtl и vcl работает, если прописать в Runtime packages: rtl;vcl
то в Delphi 2010 получается: rtl140;vcl140
а в Delphi XE2 получается: rtl160;vcl160

Хочу тоже самое, только с моим пакетом, пока у меня получилось только так:
Runtime packages: MyPackage$(PRODUCTVERSION)
в Delphi XE2 получается MyPackage9.0, а хочется чтобы MyPackage160

P.S. Расстрелял бы того кто придумал столько версий для одного продукта Delphi: XE2;230;16;16.0;160;9.0
Автор: reenoip
Дата сообщения: 20.06.2012 13:28
exteris
LG Team
поменял монитор на Full HD - теперь ограничение стало "1940". Хоть так.

Добавлено:
Забыл уточнить: до этого было HD Ready (1366x768) монитор. Не ожидал, что между разрешением монитора и опцией ширины формы может быть хоть какая-то взаимосвязь. IDE не всё ли равно, какой у пользователя монитор?
Автор: Frodo_Torbins
Дата сообщения: 20.06.2012 13:46
mcka
Юзайте $LIBSUFFIX.

LG Team
Кажется на CodeRage 6 я видел видео, в котором показано как вручную привязать биндинги к гриду.

reenoip
Если у вас дизайнер в отстыкованном режиме, то это и не IDE может быть.
Автор: mcka
Дата сообщения: 20.06.2012 15:51
Frodo_Torbins
немножко не то, как сделать чтобы в Project/Optiions/Packages/Runtime packages
прописать MyPackage
а после компиляции проект использовал MyPackage160.bpl или MyPackage140.bpl в зависимости от версии среды.
Автор: Frodo_Torbins
Дата сообщения: 20.06.2012 15:55
mcka
MyPackage должен быть откомпилирован с $LIBSUFFIX.
Автор: mcka
Дата сообщения: 21.06.2012 09:21
Frodo_Torbins Спасибо!
Автор: SolidSnakeRU
Дата сообщения: 22.06.2012 08:55
Интересно, будет ли в Delphi нативный компилятор под iOS и Android, как обещают для C++.
http://edn.embarcadero.com/article/42275
Автор: deks
Дата сообщения: 22.06.2012 09:28
SolidSnakeRU

Конечно будет! Тот "хак", который сейчас существует с FPC - это реально неудобно! Мало того, что версии языка слегка несовместимы в неудобных местах (например, namespaces в FPC), так еще и IDE-поддержка не допилена (если компонент не унаследован от TFfmObject, то его нельзя использовать в дизайнере, только в run-time).

К тому же если у ЕМРО появляется ARM-backend, то прикрутить его к паскалевскому Front-end довольно просто)

Но лично я бы по поводу ARM ориентировался на LLVM - именно я эта технология поддерживается Apple, и можно попытаться воспользоваться ее наработками!

Страницы: 1234567891011121314151617181920212223242526272829303132333435363738

Предыдущая тема: Как сделать offline версию сайта со встроенным браузером?


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