Latest Posts
Как пользоваться RAD Studio Quality Portal
Даже в тщательно спроектированной, отлаженной и протестированной программе у пользователей может появиться потребность в новой возможности или функции, возникшей в связи с обновленными требованиями. Это также может быть связано с внешними условиями или потребностями бизнеса. Какие существуют механизмы связи пользователей с разработчиками Embarcadero для того, чтобы подать заявки на расширение функций в следующем релизе?
Не бывает сложной компьютерной программы без ошибок. Такова реальность, но мы стремимся к проверке, быстрому обнаружению и устранению такого рода недочетов. Своевременные сообщения наших пользователей об обнаруженной программной ошибке оказывают огромную помощь. Как правильно и эффективно способствовать ее быстрому исправлению?
Некоторое время назад механизм подачи заявок разработчикам RAD Studio на новые возможности, сообщений о найденных ошибках, уточнения информации и отслеживания состояния заявок по качеству продуктов и сервисов Embarcadero был изменен. Данное описание публикуется, чтобы облегчить использование этого нового механизма всем отечественным пользователям, заинтересованным в улучшении продуктов Embarcadero.
Ранее на http://community.embarcadero.com была опубликована статья на английском языке, посвященная этой теме. Для пользователей, говорящих на русском языке, мы предлагаем свой, расширенный вариант инструкции.
Зачем нужен Quality Portal и особенности его использования
Сообщение об обнаруженном «баге» или запрос на реализацию необходимых возможностей может подать любой участник Embarcadero Developer Network (EDN, http://edn.embarcadero.com). Участники сети EDN также могут видеть заявки и сообщения других членов, комментировать эти заявки и принимать участие в голосовании, какие требования являются наиболее важными для них.
Старые каналы подачи заявок были заменены на более современные реализации. Новый канал получил название RAD Studio Quality Portal. При помощи Quality Portal разработчики Embarcadero получают надежный механизм взаимного общения и связи с пользователями своих продуктов.
Прежде, чем воспользоваться Quality Portal (QP в дальнейшем), пользователь должен зарегистрироваться на EDN и получить учетную запись. Это бесплатно и дополнительно дает пользователю право на использование всех сервисов EDN, в том числе и QP. Для регистрации следует перейти на https://members.embarcadero.com
После того, как у пользователя появилась своя учетная запись, ему нужно войти в EDN с помощью указанного имени и пароля.
На Quality Portal все участники могут создавать свои, комментировать или голосовать за имеющиеся здесь сообщения об ошибках (Bug Reports). QP – это прекрасный механизм повлиять на Embarcadero, чтобы расставить приоритеты для выполнения задач в первую очередь. Можно «следить» за запросами других пользователей, чтобы быстро увидеть произошедшие обновления.
Как правильно оформлять сообщение об ошибке
Если пользоваться QP правильно, можно получить максимум преимуществ. Далее приводится описание, как наиболее эффективно подавать отчеты об ошибках (Bug Reports), вносить предложения и запросы на реализацию необходимых функций, чтобы добиться скорого начала работ над ними. Здесь описаны различные способы, с помощью которых пользователи QP могут оказать максимально позитивное влияние на Embarcadero для быстрейшего решения тех проблем, которые их волнуют.
Для большинства пользователей главной причиной входа в Quality Portal будет потребность в подаче и контроле решения отчетов о программных ошибках (Bug Reports).
При подаче заявки/отчета пользователь увидит форму, такую как в заголовке:
Нужно заполнить ее актуальными данными. Поля, обозначенные красной звездочкой справа, являются обязательными для заполнения.
В поля заносится следующая информация:
|
Summary |
Краткое описание сути заявки |
|
Component/s |
Какая часть ПО затронута |
|
Affects version/s |
На каких версиях проявляется |
|
Build No |
Номер сборки, если есть |
|
Language version |
Если это локализованная редакция, указать какая |
|
Edition |
Редакция продукта |
|
Description |
Описание |
|
Steps |
Шаги для воспроизведения |
|
Platform |
На каких платформах проявляется |
Поставьте себя на место разработчиков Embarcadero, разбирающих заявку.
Отчет об ошибке должен быть конкретным и содержать всю связанную информацию. Нужно максимально полно описать программную ошибку, и как она проявляется. Опишите шаги для воспроизведения этого. Самый лучший способ, чтобы ошибка была исправлена быстро – это предоставить [тестовый] пример, воспроизводящий эту ошибку. Если это невозможно, описать так подробно, как только возможно, все, что происходило до того, как ошибка проявилась. Отчеты об ошибках ДОЛЖНЫ содержать всю необходимую информацию.
Включайте в отчет сообщение только об одной ошибке. Если ошибок несколько, создайте несколько отчетов.
Обратите внимание на тип уведомления:
|
Issue Type |
|
|
Bug: |
ошибка в продукте |
|
Documentation bug: |
ошибка в справке или документации продукта. |
Дайте отчету краткий, но информативный заголовок в поле Summary
«TButton не работает» - никуда не годится, а
«[Android] Ошибка при двойном щелчке на TButton» - значительно лучше
При необходимости используйте в названии теги форматирования, описанные дальше, чтобы тому, кто читает сообщение, было проще понять контекст. Хороший заголовок позволяет быстро понять, что происходит, и способствует снижению количества дублирующих сообщений. Избегайте описания общих проблем в целом. Вы никогда не должны использовать:
У меня есть проблема с XYZ
XYZ не работает должным образом
Еще несколько примеров:
Плохо: access violation в IDE
Лучше: Открытие пустого файла .pas вызывает access violation
Плохо: Ошибка Push Notification
Лучше: Счетчик Push notification добавляет лишнее уведомление
Сообщите какая часть программного обеспечения затронута этим багом (Component/s):
· Install
· FireMonkey
· VCL
· C++ Compiler
· C++ RTL
· Delphi Compiler
· Delphi RTL
· Linker
· Database
· Debugger
· IDE (Development Environment)
· Help and Doc
· Demos
В поле Description должна быть внесена вся информация, полученная в связи с ошибкой. По возможности включает:
· Полное сообщение об ошибке
· Полный стек вызовов
· Если это уместно, стоит включить информацию о среде (например, версию Android или региональные настройки Windows,)
· Для ошибок, которые проявляются визуально (например, элементы управления не отображаются или вопросы с разметкой IDE) включить скриншот, чтобы помочь увидеть это тем, кто читает ваш отчет
· Если присутствуют, нужно добавить логи устройства, например, вывод logcat на Android
· Для сообщений об ошибках или стеков вызовов использовать теги либо {code}, либо {quote}
· Если создается отчет о внешнем источнике информации (например, MSDN страница вызова API), включить ссылку на эту информацию
· Если сообщение об ошибке содержит исходный текст, либо прикрепить его к проекту или добавить его в разделе steps. Если исходный код добавлен в виде текста в отчет, убедитесь, что использовались теги {code}. Это инструктирует JIRA не интерпретировать код, а также способствует читабельности отчета (помогает избежать прокрутки несколько страниц, чтобы добраться до соответствующих областей).
· Сокращайте размер приложений до минимума. Сжимайте файлы с помощью Zip, и никогда не включайте двоичные файлы, получающиеся в результате компиляции (например, DCU или EXE). Применяйте для сжатия только формат Zip.
· Не включать более одного вопроса в одном отчете. Сообщать по отдельности, и связывать друг с другом по мере необходимости.
Поле Steps предназначено для того, чтобы описать, как воспроизвести ошибку. Описание должно быть кратким и понятным, как рецепт, чтобы воспроизвести ошибку за минимальное количество шагов. В шаги не следует включать сообщения об ошибках или стек вызовов – включите это в поле Description.
В конце описания шагов следует описать, какой результат ожидался и что было получено на самом деле.
Плохое описание:
Expected: приложение не должно падать
Actual: приложение завершилось аварийно
Лучше писать так:
Expected: приложение показывает меню XYZ
Actual: Возникает access violation (см. Стек вызовов в приложении)
Обязательно оформлять следствия, как новые отчеты, а не просто добавляя их в виде комментария к существующему сообщению. Такая изоляция отчетов способствует отслеживанию проблем и с большей вероятностью приведет к их исправлению в конечном счете.
Примеры правил, найденные в интернете для разных систем сообщений об ошибках, можно просмотреть по ссылке http://www.mozilla.org/bugs/bug-reporting.html. Здесь можно увидеть хорошие примеры, следование которым поможет использовать QP наиболее эффективно и одновременно дать Embarcadero возможность продолжать работу над важными для пользователя вопросами
Стоит помнить, что эффективный отчет об ошибке содержит все необходимое, чтобы сотрудники Embarcadero смогли воспроизвести ошибку, понять, как она проявляется и как проверить, что ошибка исправлена. Принято писать на английском языке, и тогда отчет смогут прочесть не только сотрудники Embarcadero, но и пользователи из других стран, и это сократит вероятность дублирования отчета. «Высокий слог» не нужен, важно, чтобы суть отчета была однозначна и понятна.
Дублирование сообщений
Отчет может быть отмечен, как «дубликат», сотрудниками службы поддержки Embarcadero. Какой отчет будет признан «основным», а какие – «дублирующими», зависит от того, какой отчет дает более точную и детальную информацию о содержащихся проблемах.
Если появится новый, более подходящий отчет, он может стать новым «главным», а предыдущий – дубликатом, но это не имеет никакого отношения к тому, какой отчет первым пойдет в работу для исправления ошибки.
Обычно «дублирующий» отчет имеет статус «Resolved», а разрешение (resolution) - «Duplicate», и связан ссылкой с «главным» отчетом. Пользователи должны проверять статус и следить за обновлениями только на «главном» отчете.
Расшифровка значений в некоторых полях Quality Portal
Поле Status
|
Значение |
Расшифровка |
|
Reported |
Новый дефект, требуется тестирование |
|
Open |
Известный дефект, требуется исправление |
|
Resolved |
Внесены исправления, те, кто сообщали об ошибке могут проверять ее отсутствие и вносить замечания |
|
Needs Feedback |
Ожидание дополнительных сведений или действий |
|
Closed |
Ошибка исправлена, обращение закрыто. |
Поле Resolution
|
Значение |
Расшифровка |
|
Fixed |
Bug был пофиксен (исправлен) |
|
Cannot Reproduce |
Ошибку не удается воспроизвести на основании представленных сведений |
|
Works as Expected |
Так и было задумано! Это не бага, а фича! J |
|
Duplicate |
Отчет-дубликат (должна быть ссылка на главный отчет bug #) |
|
Test Case Error |
Неверное описание в отчете |
|
Needs More Info |
Требуется дополнительная информация/demo/описание шагов |
|
No Longer Applies |
Возможность была удалена и ошибка теперь неактуальна |
|
Won’t Fix |
Не будет исправлено/реализовано |
«Маленькие хитрости»
Текстовые эффекты и форматирование примеров кода
Для повышения читабельности и улучшения восприятия сообщений, можно применять теги для форматирования текста отчетов.
|
Notation |
Описание |
|
*strong* |
Жирный текст (strong). |
|
_emphasis_ |
Выделение курсивом (emphasis).. |
|
??citation?? |
Форматирование цитат. |
|
-deleted- |
Выделение как |
|
+inserted+ |
Выделение как «добавленный» inserted. |
|
^superscript^ |
Верхний курсив superscript. |
|
~subscript~ |
Нижний курсив subscript. |
|
{{monospaced}} |
Monospaced текст. |
|
bq. Some block quoted text |
Чтобы сделать цитатой весь абзац, поставьте "bq. " перед ним. Пример: Some block quoted text |
|
{quote} here is quotable |
Цитата из блока текста из нескольких абзацев. Пример: here is quotable |
|
{color:red} look ma, red text! {color} |
Изменить цвет куска текста. пример: look ma, red text! |
ТЕГИ ФОРМАТИРОВАНИЯ ПРИМЕРОВ ПРОГРАММНОГО КОДА
|
Notation |
Описание |
{code:delphi} program Sample_prog; begin write('Hello World. Prepare to learn Delphi'); readln; end. {code} |
program Sample_prog; begin write('Hello World. Prepare to learn Delphi'); readln;
end. |
|
{code:c++} int main() |
#include
int main() {
std::random_device random_device;
std::mt19937 random_engine{random_device()};
std::bernoulli_distribution coin_distribution{0.25};
bool outcome = coin_distribution(random_engine); }
|
Демонстрационный пример сообщения об ошибке
Пример сообщения об ошибке, демонстрирующий все рассмотренные выше вопросы: https://quality.embarcadero.com/browse/RSP-12206
![]()
Share This | Email this page to a friend
posted @ Fri, 04 Dec 2015 13:55:05 +0000 by Andrew Sovtsov
Change dproj file and product version
If you have a project with automatic builds is posible that you want change the File/Product version of the file.
Using the code below you can create a console application for to modify these values easily.
program ChangeVersion;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils,
UnParseDproj in 'UnParseDproj.pas';
procedure ChangeDprojVersion;
var
DprojParser : TDprojParser;
begin
DprojParser := TDprojParser.Create;
try
DprojParser.DprojFile := ParamStr(1);
DprojParser.VersionString := ParamStr(2);
DprojParser.ChangeVersion;
finally
DprojParser.Free;
end;
end;
begin
try
if ParamCount < 2 then
begin
WriteLn('Wrong syntax. Usage:');
WriteLn('ChangeVersion "Delphi project file (dproj)" "Version string(x.x.x.x)"');
end
else
begin
ChangeDprojVersion;
end;
except
on E: Exception do
WriteLn(E.ClassName, ': ', E.Message);
end;
end.
unit UnParseDproj;
interface
uses
System.Sysutils,
Winapi.Ole2,
Xml.XMLIntf,
Xml.XMLDoc;
type
TDprojParser = class
private
FXMLDocument: IXMLDocument;
FDprojFile: string;
FVersionString: string;
procedure SetDprojFile(const Value: string);
procedure SetVersionString(const Value: string);
public
property DprojFile: string read FDprojFile write SetDprojFile;
property VersionString: string read FVersionString write SetVersionString;
procedure ChangeVersion;
constructor Create;
destructor Destroy; override;
end;
implementation
{ TDprojParser }
procedure TDprojParser.ChangeVersion;
var
Project, Node, VerInfo_Keys: IXMLNode;
I, J, K: Integer;
Keys_String: String;
Keys : TArray<string>;
Version: TArray<string>;
begin
try
FXMLDocument.LoadFromFile(DprojFile);
Project := FXMLDocument.ChildNodes.First;
J := Project.ChildNodes.Count - 1;
for I := 0 to J do
begin
Node := Project.ChildNodes.Nodes[I];
VerInfo_Keys := Node.ChildNodes.FindNode('VerInfo_Keys');
if VerInfo_Keys <> nil then
begin
Keys_String := VerInfo_Keys.NodeValue;
Keys := Keys_String.Split([';']);
for K := 0 to Length(Keys) - 1 do
begin
Version := Keys[K].Split(['=']);
if Version[0]= 'FileVersion' then
Keys[K] := 'FileVersion='+FVersionString;
if Version[0]= 'ProductVersion' then
Keys[K] := 'ProductVersion='+FVersionString;
end;
Keys_String := '';
for K := 0 to Length(Keys) - 1 do
Keys_String := Keys_String + Keys[K] + ';';
Keys_String := Keys_String.Substring(0,Keys_String.Length -1);
VerInfo_Keys.NodeValue := Keys_String;
end;
end;
FXMLDocument.SaveToFile(Dprojfile);
WriteLn('dproj file changed');
except
on E: Exception do
WriteLn(E.ClassName + ':' + E.Message)
end;
end;
constructor TDprojParser.Create;
begin
FXMLDocument := TXMLDocument.Create(nil);
FXMLDocument.ParseOptions := FXMLDocument.ParseOptions+[poPreserveWhiteSpace];
end;
destructor TDprojParser.Destroy;
begin
end;
procedure TDprojParser.SetDprojFile(const Value: string);
begin
FDprojFile := Value;
end;
procedure TDprojParser.SetVersionString(const Value: string);
begin
FVersionString := Value;
end;
initialization
CoInitialize(nil);
end.
Share This | Email this page to a friend
posted @ Fri, 04 Dec 2015 11:04:08 +0000 by rubenpozo
Using the WinRT Globalization API
With RAD Studio 10 Seattle, developers can rapidly update their VCL and FMX applications to take full advantage of the Windows 10 wave. Support includes Windows 10 and native WinRT/UWP components and APIs, Windows 10 VCL User Experience controls, and updated Windows 10 FMX support.
We have a great demo that shows you how to use the ICalendar interface to show the current date of the system in the different calendar systems, as well as specific information from the four calendar systems.
The sample displays the calendar information in a TMemo. TCalendarIdentifiers is used to set the different calendar systems:
- Gregorian
- Japanese
- Hebrew
- Hijri
The main units used in this sample are:
- Winapi.Globalization.pas
- Winapi.WinRT.pas
- Winapi.Foundation.Collections.pas
http://docwiki.embarcadero.com/Libraries/Seattle/en/Winapi
You can download the demo here: http://sourceforge.net/p/radstudiodemos/code/HEAD/tree/branches/RADStudio_Seattle/Object%20Pascal/VCL/Windows%2010%20Calendar
You can access the API information here:
https://msdn.microsoft.com/en-us/library/windows/apps/hh969150.aspx
https://msdn.microsoft.com/en-us/library/windows/apps/windows.globalization.calendar.aspx
Share This | Email this page to a friend
posted @ Thu, 03 Dec 2015 19:25:54 +0000 by sarinadupont
Go sequentally FMX TTreeView
If you are working with FMX TTreeView component and for some reason you need to go sequentially all items this function could help you.
function GetNextItem(Item: TTreeViewItem): TTreeViewItem;
var
Parent: TFMXObject;
Child: TTreeViewItem;
begin
Result := nil;
if Item.Count > 0 then
Result := Item.Items[0]
else
begin
Parent := Item.ParentItem;
Child := Item;
while (Result = nil) and (Parent <> nil) do
begin
if Parent is TTreeViewItem then
begin
if TTreeViewItem(Parent).Count > (Child.Index + 1) then
Result := TTreeViewItem(Parent).Items[Child.Index + 1]
else
begin
Child := TTreeViewItem(Parent);
if Child.ParentItem <> nil then
Parent := Child.ParentItem
else
Parent := Child.TreeView;
end;
end
else
begin
if TTreeView(Parent).Count > Child.Index + 1 then
Result := TTreeView(Parent).Items[Child.Index + 1]
else
Parent := nil;
end;
end;
end;
end;
Share This | Email this page to a friend
posted @ Thu, 03 Dec 2015 14:26:36 +0000 by rubenpozo
Bluestacks como emulador Android para Delphi y C++
Un tema recurrente en el desarrollo móvil es el rendimiento (o falta de rendimiento) del emulador Android de Google (utilizado de forma predeterminada por Delphi y C++ Builder).
Aquí viene una solución muy interesante (con un rendimiento óptimo): el uso de máquinas virtuales con Android.
Uno de ellos es el BlueStacks (http://www.bluestacks.com). La instalación tiene ningún secreto, básicamente un NNF (Next-Next-Finish).
Si usted está utilizando un PC con Windows, solo tiene que reiniciar el "adb" (puente de depuración, que es parte del SDK de Android), y su Android VM ya está disponible para el IDE de Delphi o C++, debidamente enumerado como un emulador.
Reiniciando el "adb" desde la línea de comandos:
adb.exe kill-server adb.exe devices
Pero, si está ejecutando su Delphi en una máquina virtual de Windows en un equipo MAC, lo ideal es instalar BlueStacks en el sistema host, es decir, en OS X. En este caso, para que el IDE (dentro de la máquina virtual de Windows) puede "ver" el emulador, se requiere un pequeño truco utilizando Putty (emulador de terminal), que se describe con todo detalle en este post de Jim McKeeth: http://delphi.org/2013/09/debugging-against-a-remote-android-emulator. Es exactamente la misma técnica que se aplicará a el BlueStacks.
Y por último, pero no menos importante:
El BlueStacks es un emulador se mantiene (no "ARM"), pero viene equipado con LibHoudini (capa de emulación ARM para los procesadores móviles de Intel). Este proyecto se mantiene por Intel directamente, para hacer frente a la disponibilidad de aplicaciones para esta plataforma. En otras palabras, este emulador es capaz de ejecutar normalmente aplicaciones ARM (generados por Delphi y C ++).
El único detalle que se debe poner atención, antes de intentar ejecutar la aplicación: Ir a las opciones de despliegue (Project/Deployment), y desactive el "assembly" de verificación automática de plataforma, que se añadió automáticamente en su aplicación durante la creación del proyecto:
Y aquí está el resultado, una aplicación Delphi con IBLite corriendo directamente en BlueStacks:
Recordando que alguna incompatibilidad aún puede surgir (no he probado todas las aplicaciones que tengo), y que no está soportado oficialmente por Embarcadero en este momento, recomiendo a todos los que se están desarrollando para móvil, dedique algo de tiempo para probar, a veces parece más rápido que un dispositivo físico!
¡Hasta la próxima!
Share This | Email this page to a friend
posted @ Tue, 24 Nov 2015 16:45:50 +0000 by Fernando Rizzato
Movement… of blog.
I’ve moved this blog to a separate server and domain, mainly to ensure it’s content is preserved and under my control. You should update your subscriptions to point to: therealoracleatdelphi.com.
I’m certain that some links and images didn’t quite survive the move, but most of the more recent posts seem OK. A lot of comments also moved, but not all were able to be imported due to some length restrictions.
Delphi and product related content will remain here as well… for as long as whomever manages this server deems it as worthy content. Personal and unrelated content may be deleted. New content will likely be done at the new location and will consist of anything I feel like… or not :).
Share This | Email this page to a friend
posted @ Sun, 22 Nov 2015 20:25:26 +0000 by Allen Bauer
Three new C++ Developer Skill Sprints in December 2015 - join the C++11 programming fun!
C++ Developer Skill Sprints: Use C++11 to build applications for Windows, Mac, Mobile and more.
Live sessions every Thursday from December 3 to December 17, 2015
The December 2015 series of C++ Developer Skill Sprints focuses on cool new programming tips and techniques to drive your skills to the next level. The topics have been selected to take advantage of new technologies in C++Builder 10 Seattle that you can use immediately in your existing C++Builder projects.</>
- December 3 - Using Android Intents for Inter App Communication
- December 10 - Regular Expressions and TRegEx
- December 17 - Understanding and Using FireMonkey Layouts
The C++ skill sprints will take place at 6am, 11am and 5pm Pacific Time. There are separate registration links below for the series and times.
- Join us for a webinar series beginning on Dec 03, 2015 at 6:00 AM PST (1400 UTC)
Register now! https://attendee.gotowebinar.com/register/1193280549115684610 - After registering, you will receive a confirmation email containing information about joining the webinar.
- Join us for a webinar series beginning on Dec 03, 2015 at 11:00 AM PST (1900 UTC)
Register now! https://attendee.gotowebinar.com/register/6495699563321218306
After registering, you will receive a confirmation email containing information about joining the webinar. - Join us for a webinar series beginning on Dec 03, 2015 at 5:00 PM PST (0100 UTC +1 day)
Register now! https://attendee.gotowebinar.com/register/4694398250838162434
After registering, you will receive a confirmation email containing information about joining the webinar.
You might also want to join us for the recently announced "C++ in Action Webinar: Move your C++ projects to C++Builder 10 Seattle - Wed, Dec 9 at 6am, 11am, 5pm PT". You can find additional information and the registration link on my blog post at http://community.embarcadero.com/blogs/entry/c-in-action-move-your-c-projects-to-c-builder-10-seattle-wed-dec-9-at-6am-11am-5pm-pt
Share This | Email this page to a friend
posted @ Fri, 20 Nov 2015 19:59:05 +0000 by David Intersimone
C++ in Action Webinar: Move your C++ projects to C++Builder 10 Seattle - Wed, Dec 9 at 6am, 11am, 5pm PT
A New Webinar for C++ developers to move your development forward before the new year!
C++ in Action: Move your C++ projects to C++Builder 10 Seattle
Date: Wednesday December 9, 2015
- 6am PST Santa Cruz / 9am EST New York / 3pm CET Frankfurt / 1400 UTC
- 11am PST Santa Cruz / 2pm EST New York / 8pm CET Frankfurt / 1900 UTC
- 5pm PST Santa Cruz / 8pm EST New York / 12 Noon AEDT Sydney (Thursday Dec 10)
Join the Embarcadero C++ team for this 1.5 hour online webinar and learn the fastest way migrate your projects to C++Builder 10 Seattle and build/update data-rich, hyper connected, visually engaging applications for Windows 10, Mac, Mobile, IoT and more using Standard C++11.
Register Now for the time that fits your schedule at https://attendee.gotowebinar.com/rt/2005546963158643202
What you’ll learn:
- How to quickly migrate your C++Builder projects to C++Builder 10 Seattle
- Update Your Apps UI/UX with the All New Windows 10 Look and Feel
- C++11 language features for Win32, Win64, iOS and Android apps
- Application Tethering for VCL and FireMonkey using C++
- Enterprise Mobility Services - Creating EndPoints, Push Notifications and Custom Logins
- MultiThreading with System.Threading for Mobile and Desktop Apps
- Proximity base development with Beacons and BeaconFence
- and more…
Who should attend?
- C++Builder developers who need to move their projects to Windows 10
- C++Builder VCL/Windows developers who need to also create multi-device apps
- C++ developers who want to use the power of the C++11 language and the productivity of RAD, visual development
- C++ developers who need to build mobile applications
If you don’t have C++Builder 10 Seattle already, you can [DownloadButton Product='Cbuilder' Caption='Download the C++Builder 10 Seattle Free Trial']
Share This | Email this page to a friend
posted @ Fri, 20 Nov 2015 19:13:46 +0000 by David Intersimone
Bluestacks como emulador Android para Delphi/C++ Builder
Um tema recorrente nas rodas de conversa sobre mobile é a performance (ou não performance) do emulador Android do Google (utilizado por default pelo Delphi e C++ Builder).
Eis que surge uma solução muito interessante (e de ótima performance): a utilização de máquinas virtuais com Android.
Uma delas é o BlueStacks (http://www.bluestacks.com/). A instalação não tem segredo algum, basicamente um NNF (Next-Next-Finish).
Se você está utilizando um PC com Windows, basta reiniciar o "adb" (debug bridge, parte do SDK do Android), e sua VM Android já estará disponível para a IDE do Delphi ou C++ Builder, devidamente listada como um emulador.
Reiniciando o adb, diretamente via comando de linha:
adb.exe kill-server adb.exe devices
Caso esteja rodando seu Delphi em uma VM Windows, em um equipamento MAC, o ideal é instalar o BlueStacks no sistema root, ou seja, no OSX. Neste caso, para que a IDE (dentro da VM Windows) consiga "ver" o emulador, é necessário um pequeno truque utilizando o Putty (emulador de terminais), descrito com riqueza de detalhes neste post do Jim McKeeth: http://delphi.org/2013/09/debugging-against-a-remote-android-emulator/. É exatamente a mesma técnica a ser aplicada ao BlueStacks.
E por fim, mas não menos importante:
O BlueStacks é um emulador Intel (não ARM), porém vem equipado com o LibHoudini (camada de emulação ARM para processadores mobile Intel). Este projeto é mantido pela própria Intel, para resolver a disponibilidade de apps para Android/Intel. Em outras palavras, este emulador roda normalmente apps ARM (geradas pelo Delphi e pelo C++).
O único detalhe é, antes de tentar executar a aplicação, vá até a opção deployment, e desmarque o assembly de checagem automática de plataforma, incorporado pela IDE a sua aplicação:
E aqui o resultado, uma app Delphi com IBLite rodando no BlueStacks:
Lembrando que alguma incompatibilidade ainda pode aparecer (não testei todas as apps que tenho), e que não é oficialmente suportado pela Embarcadero neste momento, recomendo a todos que estão desenvolvendo para mobile reservar algum tempo para testar, em algumas ocasiões me pareceu ainda mais rápido que um device físico!
Até a próxima!
Share This | Email this page to a friend
posted @ Thu, 19 Nov 2015 17:31:32 +0000 by Fernando Rizzato
Evans Data: 645% growth in developers adopting Windows 10 in the last 6 months
Windows 10 adoption by developers up 645% in the last 6 months according to Evans Data Research and eWeek: http://www.eweek.com/developer/windows-10-developer-adoption-soars-to-1.3m-survey.html. Evans Data reports that the number of developers using Windows 10 has increased going from 198,000 in the late spring of this year to over 1.4 million today. The number of developers targeting Windows 10 "currently stands at over 3.7 million, according to the market research firm’s study" according to the eWeek article.
RAD Studio 10 Seattle, Delphi 10 Seattle and C++Builder 10 Seattle has new VCL controls, new units for the WinRT runtime and support for Windows 10 APIs. FireMonkey has also been updated for Windows 10 support. All of the technical details are available at http://www.embarcadero.com/products/rad-studio/whats-new
Now is a Great Time to Purchase or Upgrade
If you haven’t already moved your projects to 10 Seattle, now is a great time. We have several time sensitive special offers at http://www.embarcadero.com/radoffer
- Buy RAD Studio, Delphi or C++Builder 10 Architect and get the VCL Solution Pack for FREE! Offered during November 11 and December 18, 2015.
- Buy RAD Studio, Delphi or C++Builder 10 Professional, Enterprise or Ultimate and get Konopka Signature VCL Controls and CodeSite Studio 5 for FREE! Offered during November 11 and December 18, 2015.
- Registered users of any earlier version qualify for the upgrade price when you purchase with Update Subscription. Offered through December 31, 2015.
- Plus get Free Bonuses with your purchase of RAD Studio, Delphi or C++Builder 10
[DownloadButton Product='RAD' Caption='Not ready to purchase, try the free Trial version of RAD Studio 10 Seattle']
Share This | Email this page to a friend
posted @ Wed, 18 Nov 2015 20:44:07 +0000 by David Intersimone





Connect with Us