Quantcast
Channel: Tips, Tricks and Techniques - Embarcadero Community
Viewing all 182 articles
Browse latest View live

Neuer YouTube Video Kanal von Leon Kassebaum / Akademisches Programm / Nachwuchsförderung

0
0

Im Bereich der Nachwuchsförderung von Embarcadero tut sich einiges in der letzten Zeit:

 


iOS(iPhone X)でregex正規表現クラスを利用[JAPAN]

0
0

第35回 デベロッパーキャンプは3月15日 UDX GALLERY NEXTで開催決定

開発者のための技術イベント「エンバカデロ・デベロッパーキャンプ」。35回目となる次回の日程が決まりました。2018年3月15日(木)、東京・秋葉原のUDX GALLERY NEXTで開催。今回より、Delphi / C++に加え、Senchaに関する技術情報もお届けする予定です。


 

 

Delphi / C++Builderには、TRegExTPerlRegEx正規表現があります。
これは、PCRE ライブラリをラップし Delphiで使えるようにしたものです。
TPerlRegEx は、Perl-Compatible 正規表現を実装します。

C++Builderを利用すると、RTLとC++標準ライブラリ両方が利用できます、regexも利用可能です。 
両方の良い部分が利用できますので、実装の幅が広がります。

C++Builder 10.2.2 Tokyo で std::regex正規表現クラスを利用

C++Builder 10.2.2 Tokyo ではC++11の機能が使えます。

ターゲットデバイスをiOS(iPhone X)にし、std::regexを C++Builder 10.2で利用して
数字、平仮名、ASCII、メアド以上4項目のパターンマッチを試してみました。

コード

#include <string>
#include <regex>
#include <functional>

#include <vector>
#include <tuple>

//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
    std::vector<std::tuple<std::wstring, std::wstring> > v1{
        //When you want to match numbers.
        {L"\\d+", L"regex_match(\"\\d+\",%s)"},
        //When you want to match ひらがな.
        {L"^[\u3040-\u309F]+$", L"regex_match(\"^[\u3040-\u309F]+$\",%s)"},
        //When you want to match ASCII Code.
        {L"^[\x20-\x7E]+$", L"regex_match(\"^[\x20-\x7E]+$\",%s)"},
        //Determine whether the wstring is in E-mail format.
        {L"^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$", L"regex_match(E-Mail,%s)"}
        };

    std::function<std::wstring(UnicodeString)> str_towstr{[](UnicodeString linp)
        {
            std::wstring out;
            for (int i=0; i < linp.Length(); i++) {
              #ifndef _WIN64
                out +=linp[i];
              #else /* _WIN64 */
                out +=linp[i+1];
              #endif
            }
            return out;
        }
    };

    //It was selected in the ComboBox1, the content you want to match.
    std::wregex wregex1(std::get<0>(v1[ComboBox1->ItemIndex]).c_str());

    //The string you want to match, and assigned to the wstring.
    std::wstring in_str = str_towstr(Edit1->Text);

    UnicodeString l_value = Format(std::get<1>(v1[ComboBox1->ItemIndex]).c_str(), ARRAYOFCONST((Edit1->Text)) );
    //It is judged here. Use regex_match.
    if (std::regex_match(in_str, wregex1))
    {
        //If the regex_match was successful.
        Memo1->Lines->Append("Successful " + l_value);
        Edit1->Text = L"";
    }
    else
    {
        //If the regex_match failed.
        Memo1->Lines->Append("NO " + l_value);
    }
}

ComboBox1中のパターンを選択し、Edit1に文字列を入れてSpeedButton1をタップします。
パターンマッチしている場合はSuccessfulがMemo1に表示されます。

On iPhone X(iOS11.2), use Regular Expressions library.

0
0

 

The 35th Developer camp will be held in Japan on March 15, 2018.
The venue is Tokyo Akihabara UDX GALLERY NEXT.


 

 

C++Builder 10.2.2 is one of the merits of being able to use RTL and STL.
For RTL, the classes on Regular expressions are TRegExTPerlRegEx.
But, since std::regex of STL can also be used, I set the target device to iOS this time and tried it.

I tried four patterns.The pattern is numbers, hiragana-Japanese, ASCII and e-mail.

 

C++Builder 10.2.2 code

#include <string>
#include <regex>
#include <functional>

#include <vector>
#include <tuple>

//---------------------------------------------------------------------------
void __fastcall TForm1::SpeedButton1Click(TObject *Sender)
{
    std::vector<std::tuple<std::wstring, std::wstring> > v1{
        //When you want to match numbers.
        {L"\\d+", L"regex_match(\"\\d+\",%s)"},
        //When you want to match Hiragana-Japanese.
        {L"^[\u3040-\u309F]+$", L"regex_match(\"^[\u3040-\u309F]+$\",%s)"},
        //When you want to match ASCII Code.
        {L"^[\x20-\x7E]+$", L"regex_match(\"^[\x20-\x7E]+$\",%s)"},
        //Determine whether the wstring is in E-mail format.
        {L"^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$", L"regex_match(E-Mail,%s)"}
        };

    std::function<std::wstring(UnicodeString)> str_towstr{[](UnicodeString linp)
        {
            std::wstring out;
            for (int i=0; i < linp.Length(); i++) {
               #ifndef _WIN64
                out +=linp[i];
               #else /* _WIN64 */
                out +=linp[i+1];
               #endif
            }
            return out;
        }
    };

    //It was selected in the ComboBox1, the content you want to match.
    std::wregex wregex1(std::get<0>(v1[ComboBox1->ItemIndex]).c_str());

    //The string you want to match, and assigned to the wstring.
    std::wstring in_str = str_towstr(Edit1->Text);

    UnicodeString l_value = Format(std::get<1>(v1[ComboBox1->ItemIndex]).c_str(), ARRAYOFCONST((Edit1->Text)) );
    //It is judged here. Use regex_match.
    if (std::regex_match(in_str, wregex1))
    {
        //If the regex_match was successful.
        Memo1->Lines->Append("Successful " + l_value);
        Edit1->Text = L"";
    }
    else
    {
        //If the regex_match failed.
        Memo1->Lines->Append("NO " + l_value);
    }
    Button1->SetFocus();
}

Select a pattern in ComboBox1, enter a character string in Edit1, and tap SpeedButton1.
If a pattern match is found, Successful is displayed in Memo1.

 

Delphi/C++Builder 10.2.2におけるHTTPプロトコル関連の改善[JAPAN]

0
0

第35回 エンバカデロ・デベロッパーキャンプ・イン東京

日程:

2018年3月15日(木)10:00~18:00 (9:30 受付開始

場所:

UDX GALLERY NEXT(東京・秋葉原)


 

 

https://community.embarcadero.com/blogs/entry/h-t-t-p-protocol-related-improvements-in-delphi-10-2-2
HTTPクライアントライブラリの新機能により、プロトコルと標準のサポートの点で柔軟性とオプションが提供されます。

安全なプロトコルのサポート

セキュリティプロトコルの改善されました。
HTTP要求に対して必要なセキュリティプロトコル(TLS1.1、TLS1.2など)を指定することができませんでしたが、新たに
SSL2、SSL3、TLS1、TLS11、TLS12の値を持つ列挙型THTTPSecureProtocolを追加しました。

THTTPClientおよび関連するクラスは、その列挙体に基づいたセットであるSecureProtocolsプロパティを持つようになりました。
SecureProtocolsプロパティは、使用するセキュリティプロトコルを制御し、現在Windows用にのみ実装されています。

https://quality.embarcadero.com/browse/RSP-18713 の品質ポータルでリクエストされました。

HTTPリダイレクトの改善

また、HTTPクライアントライブラリのリダイレクト処理方法も改善されています。 新しいRedirectsWithGETプロパティがあり、今回は次の列挙に基づいて別のオプションセットを提供しています。
THTTPRedirectWithGET = (Post301, Post302, Post303, Post307, Post308, Put301, Put302, Put303, Put307, Put308, Delete301, Delete302, Delete303, Delete307, Delete308);
このプロパティは、GETメソッドを使用してリダイレクトする必要があるリクエストメソッドとレスポンスステータスを制御します。

https://quality.embarcadero.com/browse/RSP-14671など、QPのいくつかのエントリで報告されました。

新しいTRESTClientイベントOnNeedClientCertおよびOnAuthEventの追加

これらのイベントは、HTTPClientの対応するイベントに対応し、現在はより高いレベルのサーフェスです。
TRESTClient.OnNeedClientCertificate: TNeedClientCertificateEvent TRESTClient.OnAuthEvent: TCredentialAuthEvent

https://quality.embarcadero.com/browse/RSP-15857 の品質ポータルでリクエストされました。

MIME Name Helper

私たちは、TEncodingサポートに関数を追加しました。エンコーディングMIMEを返します。

function GetEncodingMimeName(AEncoding: TEncoding): string;

TIniFile動作の変更

これはまったくHTTPとは無関係ですが、10.2.2でTIniFileの変更が行われました。 Iniファイルの動作はプラットフォーム固有であり、プラットフォームに依存しませんでしたがWindowsでは、TIniFile.ReadStringはKeyパラメータの大文字と小文字を無視します。 Linuxでは、ReadString呼び出しで大文字と小文字が区別され、コードと設定ファイルの移行時に問題が発生しました。 
デフォルトでは、TIniFileのコンテンツ構造(実際の値ではありません)は、サポートされているすべてのプラットフォームで大文字と小文字を区別しない方法で処理されます。

2018年のRAD Studio開発計画

0
0

この記事は、Sarina DuPontによるExciting RAD Studio Developments in 2018の抄訳です。

エンバカデロでは、Delphi、C++Builder、RAD Studioについて、2018年にもさまざまな新機能、製品強化を計画しています。2017年9月に発表したロードマップで、2017年~2018年に多くの新しい計画や機能を考えていることをお知らせしました。

今回、2018年の第1四半期をターゲットとしている 10.2 TokyoのRelease 3(10.2.3)の詳細を共有させていただきます。このリリースでは、3つの主要なテーマがあります。第1が、VCLのHighDPIサポートの改善とFireMonkey(FMX)の品質強化を含む、ビジュアルフレームワークの強化。第2に、CMakeコマンドラインサポートとC++の名前変更リファクタリングを含むC++機能強化の継続。第3に、RAD Serverの拡張によるExtJSのサポートです。従来通り、特定のお客様の問題や全体的なパフォーマンス問題に対処する数多くの品質改善も含まれます。これらの機能は、まもなく利用可能になるため、10.2.3リリースとして、いち早く提供することを決定しました。以下は、10.2.3の一部として提供される予定の機能詳細の抜粋です。

C++名前変更リファクタリングを用いれば、コード内の識別子を右クリックするだけで、プロジェクト全体の名前変更が可能になります。これは複雑な機能で、シンボル、コード構造などといった、プロジェクトのASTを格納する新しいC++ IDEツール機能を含む強化です。XE2で導入されたプロジェクトインデックス機能とは異なり、これはバックグラウンドで実行され、現在、参照の検索とリファクタリングの双方に情報を提供しています。名前変更リファクタリングは、C++Builderユーザーの長年の機能要求でした。この作業は継続しており、今後のリリースで紹介することを楽しみにしています。

CMakeは、人気のあるC++ビルドツールです。私たちの最初のCMakeサポートは、私たちのコンパイラを使ってコマンドラインでCMakeプロジェクト(CMakeLists.txtプロジェクト)をビルドできるようにすることです。これは、サードパーティライブラリをC++Builderプロジェクトに変換することなく、簡単にビルドしたい開発者には、大変便利な機能です。また、Ninjaもサポートしており、非常に高速な並列ビルドが可能です。

また、Sencha Ext JSクライアント向けのRAD Serverによるバックエンド開発を簡素化する作業も続けています。エンバカデロの親会社であるアイデラが、昨年Senchaを買収したことはご存知だと思います。Senchaは、業界初のエンタープライズWebアプリケーション構築機能を提供する製品です。10.2.2では、Sencha Ext JSクライアントに適合したJSON形式を生成するための、新しいFireDACコンポーネントを追加しました。10.2.3では、追加のヘルパークラスとHTMLファイルをホストする機能をRAD Serverに加えます。いずれも、Ext JS WebアプリケーションのバックエンドとしてRAD Serverを容易に利用できるようにするものです。

アップデートサブスクリプションにより、1回のメジャーリリースで製品の修正を行うのではなく、年間を通じて新機能のリリースを行うことが可能になりました。このことは、今回のリリースで提供されなかった機能は、次のリリースが候補となるということを意味します。そして、すべての機能をアップデートサブスクリプションユーザーは入手できるのです。

また、数多くのFireMonkey UIテンプレートについての作業を進めています。これは、FireMonkeyのマルチデバイス機能を、ベストプラクティスを活用して新規ユーザーがすばやく開発を始められるようにするものです。GUIテンプレートは、今後数か月以内にGetItに追加される予定です。さらに、RAD Serverアプリケーションテンプレートも新たに追加される計画です。

Tokyo Release 3のインストールは、高速かつシームレスなプロセスであるべきですが、新機能を追加し、製品全体の多くのファイルに変更を加えるため、アンインストール/再インストールの手順が必要となります。私たちは、完全なアンインストール/再インストールを必要としないような、ポイントリリースのようなインストールオプションの評価を続けていますが、これまでのところ、最も安全でかつインストール時間の短縮につながる効果的なソリューションは見つけられていません。一方、GetItインストーラには、既存のレジストリの設定を保存する機能など、これまでのリリースで多くの改善を加えています。

10.3(および10.3.x)の主要なロードマップテーマには、Android上でのFireMonkey zオーダーのサポートに加え、macOS 64-bitサポート、C++17サポート、デバッガの統合、IDEのUI/UXのアップデートが含まれています。10.2.3のリリース後には、更新されたロードマップを公開する予定です。

注:これらの計画とロードマップは、現時点でのエンバカデロの方向性を示したもので、開発計画とその優先度は、変更される可能性があります。従って、ここに記載した製品機能や提供スケジュールのいずれについても、その提供をお約束するものではありません。また、製品スケジュールや製品ロードマップは、いずれの契約を中止ないしは置き換えるものではなく、お客様が利用されている製品のアップグレード、アップデート、機能改善、他のメンテナンスリリースについては、ソフトウェアライセンス契約に基づいて提供されます。

日本では、2018年3月15日(木)に東京・秋葉原のUDX GALLERY NEXTで開催される「第35回 エンバカデロ・デベロッパーキャンプ」にて、10.2.3の詳細をご覧いただく予定です。

Tech Tipp #13: ELC unter Windows Server 2016 / ELC 5.33

Neue Webinare: Delphi und die Blockchain / ELC - Enterprise License Center

0
0

Für die nächsten Wochen habe ich zwei weitere Webinare geplant:

Webinar: Die Blockchain (und Kryptowährungen) verstehen

Dieses Webinar gibt einen Überblick über die Möglichkeiten der Blockchain mit kleinen Beispielen in Delphi.

Eine Einführung in

  • Kryptographie
  • Kryptowährungen
  • Bitcoins, Ethereum & PascalCoin
  • Digitale Beträge / Smart Contracts
  • Bitcoin Preisüberwachung
  • Mining
  • Proof of work
  • Blockchain Übersicht
  • Blockchain Chat

und weitere Einsatzmöglichkeiten der Blockchain

Mit praktischen Beispielen in und mit Delphi.

Mittwoch, 7. März 2018
10:00 - 11:00 CEST

Anmeldung: http://forms.embarcadero.com/blockchain

 

Webinar: Lizenzverwaltung in der eigenen Hand mit dem Lizenzserver von Embarcadero 

Das Enterprise License Center ist die ideale Weise, wie Sie das komplette Lizenzmanagement von Embarcadero-Produkten im Hause managen können. Sie sind nicht mehr darauf angewiesen Produkte zu "aktivieren" oder Lizenzen über den Support zu transferieren. Alles ist in Ihrer Hand.

Dieses Webinar gibt einen Überblick über die Möglichkeiten des Enterprise License Center.

Zielgruppe: Lizenzadministratoren und solche, die es werden wollen / Unternehmen mit vielen Lizenzen / Unternehmen mit wechselnder Belegschaft.

Mittwoch, 14. März 2018
10:00 - 11:00 CEST

Anmeldung: http://forms.embarcadero.com/LicenseServer

Atanas Popov: Modernisieren Sie Ihre Apps

0
0

Hier in einer Deutschen Übersetzung / Original: https://community.embarcadero.com/article/16606-modernize-your-apps


 

Die Modernisierung ihrer Apps ist für viele unserer Kunden nach wie vor eines der wichtigsten Themen. Delphi gibt es nun schon seit geraumer Zeit und so gibt es auch noch viele großartige "ältere" Apps, die teilweise schon mit Delphi 7 entwickelt wurden. Auf der einen Seite ist dies natürlich ein Beweis für die herausragende Qualität unserer Entwicklungsframeworks, auf der anderen Seite sind zehn Jahre alte Apps in vielen Bereichen, naja einfach zu alt… Die Mitglieder unserer Entwicklergemeinde ziehen daher um auf die neuesten Versionen, damit sie ihren Kunden moderne, ansprechende Produkte anbieten können. Auch wir haben intern mit RAD Studio eine lange Reise gemacht und auch wenn es nicht immer der einfachste Weg ist, ist es die Mühe wert. Ich denke, dass wir letztendlich große Fortschritte machen, daher möchte ich einige Erfahrungen mit Ihnen teilen, die Sie vielleicht unterstützen, um Ihren eigenen Weg für die Modernisierung Ihrer Apps zu planen.

Modernisieren Sie die Benutzeroberfläche

Ich denke, der schwierigste Teil eines Modernisierungsprozesses ist es, überzeugende Argumente für eine Aktualisierung der Benutzeroberfläche zu finden. Viele Leute meinen, wenn etwas funktioniert, interessiert sich niemand mehr dafür, ob ein Icon alt aussieht oder nicht. Auch fällt es Entwicklern oft schwer, sich leidenschaftlich für ein neues Outfit zu engagieren, da sie sich häufig gar nicht so sehr um den "Look-and-Feel" kümmern. Dennoch kann sich ein modernes Erscheinungsbild vergleichsweise als GEWALTIG erweisen. Wir haben in den letzten zwei Jahren schrittweise viele Aktualisierungen in RAD Studio vorgenommen und noch einige mehr sind in Planung. In Umfragen wird selten das "Look-and-Feel" priorisiert. Kunden mit Unternehmenssoftware geben auch selten zu, dass sie eine Softwarelösung zu kaufen, weil "sie hübsch aussieht". Sobald jedoch Verbesserungen an der Benutzeroberfläche vorgenommen werden, stellt sich der Einfluss als überraschend stark heraus, vor allem bei älteren Delphi-Apps. Es ist ein Kampf, den es zu kämpfen lohnt und glücklicherweise erleichtern einige der aktuellen VCL- und FMX-Tools die Implementierung. Nehmen Sie sich die Zeit und machen  Sie es richtig. Es lohnt sich auf jeden Fall, professionelle Hilfe von Designern in Anspruch zu nehmen (wieder etwas, was viele Entwickler nicht tun). Unterschätzen Sie die Wirkung von schönen, qualitativ hochwertigen Icons nicht. In der Grafik sehen Sie einige Beispiele von Symbolen, die wir für die Version 10.2.2 verwendet haben. Es gibt so viele Möglichkeiten, die sehr preiswert sind. Ich schätze zum Beispiel die Icons von www.icons8.com.

Mobile Apps

Einer der großen Vorzüge von Delphi ist FMX, denn mit der zunehmenden Verbreitung von Smartphones (~ 70% bis 2018) gewinnt FMX zunehmend an Bedeutung. Wenn Sie die VCL kennen, wird Ihnen auch die Entwicklung mit FMX nicht schwer fallen. Natürlich gibt es einige spezifische Styling- und Verhaltensmerkmale. Und zugegebenermaßen müssen wir den Workflow in RAD Studio noch verbessern, aber die Produktivität ist auch jetzt schon einfach beeindruckend. Die meisten anderen Lösungsansätze erfordern ein separates Team und eigene Investitionen. Früher wurden mobile Apps als separates Projekt ausgelagert. Mit FMX ist das Vergangenheit. FMX ermöglicht es Ihrem Delphi-Team, mobile Apps selbst zu erstellen. Vorhandene Apps müssen nicht neu entwickelt werden. Dennoch sind natürlich einige sinnvolle mobile Erweiterungen ein Muss. Ihre Apps werden sehr erfolgreich sein und die dahinter stehende Delphi-Technologie wird man zu Recht als fortschrittlich anerkennen. Auch können Sie Ihr Team unterstützen. Es gibt eine Menge an Trainingshilfen, um den Einstieg zu erleichtern. Ich persönlich bevorzuge die Delphi Styles, die einige sehr raffinierte Custom Looks liefern (in der Grafik sehen Sie ein paar tolle FMX Style Templates von  www.delphistyles.com).

Machen Sie Ihre Anwendung "mehrschichtig"

Architektur ist kein Kinderspiel. Auch sehr gute, erfahrene Entwickler können nicht in allen Bereichen alle erforderlichen Kenntnisse haben, ganz einfach wegen der großen Bandbreite an Themen in der Softwareentwicklung. Manchmal ist es einfach so, dass Änderungen an der Architektur, z. B. die Weiterentwicklung von einer Desktop-App zu einer mehrschichtigen Anwendung, selbst für die erfahrensten Entwickler mit einer neuen Lernerfahrung einhergehen. Es ist immer eine Bereicherung, zu lernen oder Unterstützung von außen zu bekommen. Unser Ziel ist es daher, Änderungen in der Architektur zu vereinfachen, z. B. mit RAD Server, der mit hervorragenden Funktionen für die Unterstützung von mehrschichtigen Architekturen ausgestattet ist. Es ist keine unmögliche Aufgabe, eine alte App in eine mehrschichtige Version zu bringen, dennoch gibt es keine Garantien (der Erfolg ist davon abhängig, wie sie erstellt wurde). Ich habe mit vielen Entwicklern gesprochen, die zunächst recht skeptisch waren. Als sie sich aber mit dem Thema auseinandersetzten, stellte sich heraus, dass die Mühen viel geringer ausfielen als erwartet. Mit Sicherheit ist es sehr viel günstiger als der Umstieg auf eine andere Plattform mit einer anderen Sprache wie Java. Ein einfacher Ansatz besteht darin, klein zu beginnen und so viel wie möglich zu modularisieren. Verwerfen Sie den VCL-Client nicht zu schnell. Die Geschwindigkeit, die er liefern kann, insbesondere in sensiblen Umgebungen, in denen Sekunden wichtig sind, sind einzigartig. Ich weiß von einigen Versuchen, mit Java ein Rebuild zu erstellen und damit eine VCL-App zu ersetzen, die mehrere Millionen Dollar kosteten. Die Benutzer haben sie im Endeffekt einfach nicht angenommenen …  eine unglaubliche Verschwendung.

"Webify"

Kein Wort, das Sie in einem Wörterbuch finden werden, aber die Bedeutung liegt auf der Hand. Es gibt mittlerweile zahlreiche Ansätze, mit Delphi Applikationen für das Web zu erstellen. Im Idealfall entwickeln Sie eine mehrstufige App und einen unabhängigen Web-Client dazu.

Natürlich empfehlen wir Ext JS, da es jetzt Teil der Familie ist, aber es gibt noch viele andere gute Client-Web-Technologien. 

Ein anderer, vielleicht schnellerer Ansatz ist, ein Tool wie UniGui, das einen VCL-ähnlichen Ansatz verfolgt und Ext JS zum Aufbau eines Web-Clients nutzt. Damit lassen sich nicht alle Vorhaben umsetzen, aber es ist sehr schnell und produktiv. Auf jeden Fall können Sie in kürzester Zeit ein Modul Ihrer App erstellen und damit beweisen, dass Delphi gut und schnell mit dem Web funktioniert. Heutzutage werden viele Web-Interfaces zu Delphi-Anwendungen mit .NET erstellt wegen der übernommenen Windows-Verbindung. Das funktioniert natürlich, aber basierend auf unseren neuesten Erfahrungen und den neuen JS-Technologien sind die Geschwindigkeit und Flexibilität, die Sie mit JS erreichen können, unschlagbar.

Integration

RAD Studio verfügt über einige der besten Frameworks und Komponenten zur Integration. Integration gilt bei anderen Technologien normalerweise als einer der schwierigen Aspekte. Wir lösen das sehr gut und schnell. Unsere aktuelle Produktumfrage zeigt, dass ein großer Prozentsatz unserer Kunden FireDAC für sich angenommen hat und das ist fantastisch. Sie werden sehen, wie Ihre moderne App besser integriert werden kann. Wäre es interessant für Sie, Inventar aus einem ERP-System anzuzeigen oder in das ERP-System einzugeben? Unsere Enterprise Connectors basieren auf dem FireDAC Framework und funktionieren sehr gut. Wir verwenden sie auch intern, um ein ExtJS-Portal für unsere SFDC-Instanz zu erstellen (Abbildung unten). Es ist eine "Wow!" -Entwicklungserfahrung.

Innovation

Delphi unterstützt viele neue Funktionen, darunter Push-Benachrichtigungen, Beacons und den mobilen Woll 2 Woll Editor (www.woll2woll.com/beam). Es überrascht mich, wie wenig Kunden neue Windows 10-Funktionen nutzen. Eine meiner liebsten, leider zu wenig eingesetzten Technologien sind Beacons. Diese ist jetzt kostenlos in der RAD Studio Enterprise Edition enthalten. Der mobile Editor kann die mit dieser Technologie entwickelten mobilen Apps dramatisch beschleunigen. Wenn man bedenkt, wie viele interne Delphi-Apps mit der Erfassung von Standortdaten arbeiten, sollte diese so einfache und nützliche Funktion integriert werden. Und das Beste an Delphi ist, dass Innovation nicht Hunderttausende von Dollars kosten muss.

Überwinden Sie das Legacy-Argument

Dieser Punkt ist natürlich für unsere Arbeit an RAD Studio nicht relevant, aber es ist eine Hürde, die jeder Kunde überwinden muss. Die Auffassung, dass Delphi ein altes System ist, ist immer noch in dem Köpfen von vielen, trotz starker Bemühungen, diese Ansicht aus der Welt zu schaffen. Ich wähle neuerdings einen etwas anderen Erklärungsansatz, den ich recht erfolgreich finde. Anstatt ausschweifend die vielen Verdienste von Delphi aufzuzählen, nenne ich nur ein paar Fakten und höre dann auf. Das klappt! Delphi ist heute eines der größeren kommerziellen Ökosysteme - viele Open-Source-Projekte haben an Dynamik verloren, da sich die Wirtschaftslage verschlechtert hat und ihre Unterstützung rückläufig ist. Ganz zu schweigen von der Tatsache, dass Delphi das schnellste, am einfachsten zu bedienende und funktionsreichste Entwicklungswerkzeug ist (ein bisschen subjektiv, aber wahr). Unser VCL-Framework für die Windows-Entwicklung bietet nach wie vor die beste native Unterstützung für MS Windows und nichts schlägt es. FMX bietet bessere native Cross-Plattform-Unterstützung als Xamarin und seine Popularität, insbesondere in der Android-Entwicklung, wächst schnell. Ich denke, dass Delphi und die VCL für jedes Unternehmen, das mit technologischen Risiken umgehen muss, eine weitaus sicherere Entscheidung ist als selbst die angesagtesten Technologien und Frameworks. Fragen Sie nur jemanden, der die verschiedenen Iterationen von Angular durchlaufen hat oder eine Java-Migration durchführen musste. Die Eigenschaften einer hochproduktiven Sprache, die wiederverwendbar ist und mit flexiblen Front- und Back-Ends arbeiten kann, machen Delphi zu einem starken Mitbewerber auf dem Technologiesektor.

Nun, mein Exkurs wurde etwas länger als beabsichtigt, aber es gibt noch einen Punkt bei der Modernisierung, der wahrscheinlich die größte Hürde darstellt. Es hat auch wieder mehr mit Wahrnehmung als mit der Technologie selbst zu tun. Kunden beschweren sich nach wie vor über die mangelnde Verfügbarkeit von geschulten Delphi-Entwicklern. Leider ist es tatsächlich immer noch so, dass es, im Vergleich zu anderen gängigen Technologien, weniger erfahrene Delphi-Entwickler gibt. Outsourcer sind besonders negativ eingestellt gegenüber unseren Tools, da deren Produktivität tendenziell direkt gegen ihr Geschäftsmodell gerichtet ist. Warum sollte ich Ihnen 5 Delphi-Entwickler verkaufen, wenn ich Ihnen 50 Java-Entwickler verkaufen kann. Aber das ist auch das überzeugende Argument: Sie brauchen nicht so viele Delphi-Entwickler - denn Delphi ist so gut. Und damit Sie Ihre Skills auffrischen oder ein neues Team ausbilden können, werden wir die Embarcadero Academy mit mehr Inhalten und Kursoptionen weiterentwickeln. Unserer Erfahrung nach kann ein Senior-Entwickler Delphi superschnell erlernen. Lassen Sie uns die Skeptiker mit erstaunlich modern aussehenden Apps überzeugen!


RAD Studio/Delphi/C++Builder 10.2 Tokyo Release 3 verfügbar!

0
0

Download hier:
https://cc.embarcadero.com/reg/delphi

Änderungen:
http://docwiki.embarcadero.com/RADStudio/Tokyo/en/10.2_Tokyo_-_Release_3

Bugfix List:
http://edn.embarcadero.com/article/44774

Einige wichtige Neuerung:

  • Verbesserungen bei der Darstellung im visuellen Framework auf Basis von VCL und FireMonkey. Einschliesslich HighDPI Unterstützung
  • Neue Möglichkeiten für den C++Builder: Unterstützung von CMake und Rename Refactoring
  • Verbesserung im RAD Server für eine bessere Unterstützung von Senchas ExtJS
  • Mobile Add-On für iOS und Android ist ab sofort Bestandteil der Professional Edition (Delphi und C++Builder). Kunden mit aktiver Update Subscription können dieses Add-On kostenfrei anfordern(!!)

Auch als Video (englisch)


[YoutubeButton url='https://www.youtube.com/watch?v=4n5AZdRx788']

Einladung zur Cross-Plattform Veranstaltung in Frankfurt - 18. April 2018

0
0

Schnelle, langlebige und kostengünstige Softwareentwicklung

Die Softwareentwicklung durchläuft zur Zeit in vielen Bereichen einen Wandel. Bestehende Anwendungen müssen mit immer neuen Plattformen kooperieren. Dazu kommt die Einbindung mobiler Geräte, dazu kommen die Herausforderungen diverser IoT (Internet der Dinge) Systeme sowie der Trend Software in der Cloud zu betreiben. Und über allen Bereichen schwebt das wichtige Thema Datensicherheit.

Die aktuelle IT-Landschaft besteht nicht nur aus komplett neuen Projekten, fast immer sind Legacy Systeme vorhanden und die Erfolge vieler unserer Kunden basiert insbesondere auf der langfristigen Sicherheit des Programmcodes. Anwendungen die vor vielen Jahren entwickelt wurden sind noch heute auf neuen Plattformen im Einsatz. Embarcadero steht mit seinen Produkten speziell für die langfristige Nutzung vorhandener Anwendungen und gleichzeitig die Modernisierung für heutige Anforderungen.

Wir laden Sie zu einem informativen Tag nach Frankfurt ein. Unsere Kunden stellen am Vormittag erfolgreiche Projekte aus der Praxis vor und wir stellen Ihnen die neuesten Versionen der Entwicklungswerkzeuge vor.

Neben dem neuen RAD Studio 10.2 Release 3 sehen Sie auch eine technische Präsentation der aktuellen Sencha Ext JS Version, das JavaScript- bzw. Ajax-Framework für interaktive Webanwendungen.

Einladung zu den DEVTRACKS

18. April 2018 - 9:00 bis 17:30

Frankfurt am Main

https://www.devtracks.de/ 

Die Veranstaltung ist für Sie kostenfrei.

Delphi/C++Builder 10.2.3 Tokyoの新元号対応について

0
0

はじめに

平成からの改元が1年後に迫りました。改元に対する皆様の準備はお進みでしょうか?Delphi/C++Builderは2018年4月現在の最新バージョンである、10.2.3 Tokyoにて新元号の対応は完了しています。

Microsoftからのアナウンスがあったように、Windows 10は次期アップデートであるSpring Creators Updateにて仮対応が済んでいます。新元号は決まっていませんが、改元日は決まっていますので、このようにレジストリに改元日の情報が追加されています。

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\ControlNls\Calendars\Japanese\Eras

では、Delphi/C++Builder 10.2.3 Tokyoではどうでしょう。過去、記事が執筆されていますが、その頃とは少々状況が変わっているので再確認しましょう。

まず、「??」では味気ないのでレジストリに新年号を「改元_改_Kaigen_K」として設定します。

西暦から和暦の変換

DelphiとVCLのアプリケーションで西暦から和暦の変換を実行してみます。

変換方法はFormatDateTimeで直接書式を指定する方法と、DateTimeToString でデフォルトのロカール(ロケール)情報を取得して変換する方法があります。

フォームにTDateTimePickerを配置して日付を変換してみます。コードは以下となります。

procedure TEraTest.Button1Click(Sender: TObject);
var
  // 書式
  eraFormat : TFormatSettings;
  s : string;
begin
// 書式を指定して変換をする。
  DateTimeToString(s, 'ggee年mm月dd日', DateTimePicker1.Date);
  edtFormatDateTime1.Text := s;

  // 地域情報を取得して変換をする。
  eraFormat := TFormatSettings.Create(TLanguages.UserDefaultLocale);
  edtFormatSettings.Text := FormatDateTime(eraFormat.LongDateFormat, DateTimePicker1.Date);
end;

アプリケーションを実行して、日付を2019年5月2日にして和暦に変換します。

書式を直接指定するDateTimeToStringでは新元号で表示されました。TFormatSettingsはWindowsのロカール情報から書式を取得しますので、Windowsの日付の表示形式を和暦にします。

同じアプリを実行します。

VCLのTDateTimePickerでも新元号が表示されます。改元日の翌日である2019年5月2日を選択して実行します。

 

Windowsのロカール情報を元に日付が新元号に変換されて文字列として表示されました。

和暦から西暦の変換

次は逆のケースです。FireMonkeyとC++Builderで実装してみましょう。会計や金融系のアプリケーションで良くあるUIで年号をドロップダウンリストで選択して、年、月、日をテキストで入力するUIがあります。

本来ならば、年号と年月日の関係をチェックしなければなりませんが、本記事では省略します。まず、年号一覧の取得です。フォームのコンストラクタでコンボボックスを初期化します。TFormatSettingsには元号の情報が配列として格納されていますので、これをコンボボックスに設定します。

__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner)
{
    TFormatSettings LocaleSettings = TFormatSettings::Create(TLanguages::UserDefaultLocale);

    // 元号一覧の取得
    cboEra->Items->Clear();
    for (auto era : LocaleSettings.EraInfo) {
        cboEra->Items->Add(era.EraName);
    }
}

続いて、和暦から西暦への変換処理です。

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    TFormatSettings LocaleSettings = TFormatSettings::Create(TLanguages::UserDefaultLocale);

    LocaleSettings.ShortDateFormat = "ggee/m/d";
    std::unique_ptr<TStringBuilder> psbYMD(new TStringBuilder());

    // 選択値を「ggee/m/d」の形式で文字列化
    psbYMD->Append(cboEra->Items->Strings[cboEra->ItemIndex]);
    psbYMD->Append(edtYear->Text);
    psbYMD->Append("/");
    psbYMD->Append(edtMonth->Text);
    psbYMD->Append("/");
    psbYMD->Append(edtDay->Text);

    // 和暦から西暦に変換
    TDateTime dd = StrToDate(psbYMD->ToString(), LocaleSettings);
    Edit1->Text = DateTimeToStr(dd);
}

StrToDateとTFormatSettingsの書式情報で元号を含む日付が西暦に変換できます。

まとめ

このようにDelphi/C++Builderの改元対応は準備が完了しています。

むしろ、システム側の要件定義などでユースケースの洗い出しが必要となります。例えば、金融系などでは帳票の契約期間などで「リース期間は、平成XX年XX月XX日から平成XX年XX月XX日までのXX年間とする。」というように、和暦の未来日を扱うケースがあります。

和暦から西暦の換算、あるいは、その逆を自前でコーディングしていませんか?日付換算はランタイムライブラリにて用意しています。今のうちにコードの見直しを行い、予期せぬバグの発生を事前に予防しておきましょう。 

本記事のソースコードは以下のURLにて公開してあります。

https://github.com/schikugi/NewEraTest

Google Book APIを使ってISBNコードから書籍情報を取得する

0
0

筑木です。今回はWebAPIへのアクセスの例として、Google Books APIsを使ってISBNコードから書籍情報を取得してみます。

応用として、TCameraComponentとZXingを使って画像のバーコードから書籍のISBNコードを読み取り、Google Books APIsで書籍情報を取得、それをDBに登録して蔵書管理アプリみたいなものが作れます。

Google Books APIsにISBNコードを投げてその結果を取得するのは、TRESTRequest、TRESTClient、TRESTResponseを使えば非常に簡単です。
このようにフォームにUIであるTEdit,TLabel,TMemo,TImageと、Google Books APIsとやりとりをするためのTRESTRequest、TRESTClient、TRESTResponse、TIdHTTPを配置します。

配置したTRESTRequestのClientとResponseプロパティにそれぞれTRESTClient、TRESTResponseを設定します。

実際にAPIを呼び出してみましょう。TRESTRequestとTRESTClientにパラメータを設定し、Executeメソッドを呼ぶだけです。

procedure TForm1.Button1Click(Sender: TObject);
begin
  RESTRequest1.ResetToDefaults;
  RESTClient1.ResetToDefaults;
  RESTResponse1.ResetToDefaults;

  RESTClient1.BaseURL := 'https://www.googleapis.com/';
  RESTRequest1.Resource := 'books/v1/volumes?q=isbn:{ISBN}';
  RESTRequest1.Params.AddItem('ISBN', Edit1.Text, TRESTRequestParameterKind.pkURLSEGMENT);
  RESTRequest1.Execute;
end;

APIの詳細は以下のURLを参照してください。今回は単純にパラメータとしてISBNコードを渡すだけです。

https://developers.google.com/books/docs/v1/reference/

RESTRequestのAfterExecuteイベントが発生すると結果が取得できますので、戻ってきたJSONをパースします。
JSONの書式は以下のURLを参照してください。
https://developers.google.com/books/docs/v1/reference/volumes

procedure TForm1.RESTRequest1AfterExecute(Sender: TCustomRESTRequest);
var
  BookInfo : TJSONValue;
  BookItems : TJSONArray;
  Authors : TJSONArray;
  ThumbnailURL : string;
  ItemCount : integer;
  i : Integer;
  ImageStream : TMemoryStream;
begin
  BookInfo := RESTResponse1.JSONValue;

  // 項目をクリア
  Edit2.Text := '';
  Edit3.Text := '';
  Memo1.Text := '';
  Edit4.Text := '';
  Image1.Bitmap.Clear(claWhite);

  // アイテム数取得
  ItemCount := BookInfo.GetValue<Integer>('totalItems');

  if ItemCount > 0 then
  begin
    // 結果をパースする。
    BookItems := BookInfo.GetValue<TJSONArray>('items');
    with BookItems.Items[0] do
    begin
      // 題名
      Edit2.Text := GetValue<String>('volumeInfo.title');

      // 副題
      Edit3.Text := GetValue<String>('volumeInfo.subtitle');

      // 著者
      Authors := GetValue<TJSONArray>('volumeInfo.authors');
      for I := 0 to Authors.Count - 1 do
      begin
        Memo1.Lines.Add(Authors.Items[i].GetValue<String>());
      end;

      // 出版日
      Edit4.Text := GetValue<String>('volumeInfo.publishedDate');

      // 書影のサムネイル
      ThumbnailURL := GetValue<String>('volumeInfo.imageLinks.thumbnail');
      ImageStream := TMemoryStream.Create;
      IdHTTP1.Get(ThumbnailURL, ImageStream);
      Image1.Bitmap.LoadFromStream(ImageStream);
    end;
  end;
end;

書影のサムネイルはTIdHTTPを使って改めて取得します。結果はTMemoryStreamに保存してTImageに設定するだけです。


クラウド系のサービスはリクエスト結果がJSONで帰ってくることが多いのですが、Delphi/C++Builderのコンポーネントを使えば簡単に結果のパースが可能です。古いDelphiやC++BuilderのバージョンではJSONなどのパースも自前で行うか、フリーのライブラリを使う必要がありますが、最新のバージョンでは手軽にWeb サービスを利用できるようになっています。

2018年4月23日~5月4日までの月~金曜に毎日ブログを更新。Delphi / C++Builderに関する技術記事からエンジニアの日常まで、さまざまな話題を投稿します。お楽しみに!

日本人スタッフブログを一覧表示できる、こちらのページをブックマークしてください。

C++でLINQを使う

0
0

C++で面白いライブラリがあったので紹介します。

LINQって何?

LINQ(統合言語クエリ)はC#の機能でコンテナに対してクエリを発行して結果を抽出します。 詳細はMSDNのドキュメントを参照してください。 https://docs.microsoft.com/ja-jp/dotnet/csharp/linq/

LINQ for C++

LINQ for C++はこの、LINQをC++で使用できるようにしたライブラリです。

https://archive.codeplex.com/?p=cpplinq

使い方も簡単で、GitHubで公開されているヘッダファイルをインクルードするだけです。

https://github.com/mrange/cpplinq

では、実際に使ってみましょう。

#pragma hdrstop
#pragma argsused

#ifdef _WIN32
#include <tchar.h>
#else
  typedef char _TCHAR;
  #define _tmain main
#endif

#include <stdio.h>
#include <iostream>
#include "CppLinq/cpplinq.hpp"    


int computes_a_sum ()
{
  using namespace cpplinq;
  int ints[] = {3,1,4,1,5,9,2,6,5,4};

  return
      from_array (ints)
    >>  where ([](int i) {return i%2 ==0;})     // 偶数を抽出する
    >>  sum ()                                  // 抽出した値を合計する
    ;
}


int _tmain(int argc, _TCHAR* argv[])
{
  std::cout << computes_a_sum() << std::endl;

  return 0;
}

 

C++Builderでビルドしてみますが、C++11の機能を使っているので、[プロジェクト|オプション|C++コンパイラ]で「従来のBorlandコンパイラの使用」のチェックを外してください。

実行結果です。

このように配列から偶数を抽出してその合計が出力されました。新しいC++コンパイラを使用することによって沢山のライブラリも使用できるようになりました。コンパイラ自体も10.2.3のが公開されていますので、是非ともお試し下さい。

 

 

2018年4月23日~5月4日までの月~金曜に毎日ブログを更新。Delphi / C++Builderに関する技術記事からエンジニアの日常まで、さまざまな話題を投稿します。お楽しみに!

日本人スタッフブログを一覧表示できる、こちらのページをブックマークしてください。

TDBGridのカラム単位でIMEを制御する場合の確認ポイント

0
0

TDBGridで、ある列はデフォルトでIMEをONにしたい場合はIMEを制御したい列のTColumn.ImeModeを"imHira"などに設定します。

このようなケースで文字列を入力したら最初の1文字だけが入力されない場合があります。

もし、カラム単位でIMEを制御したい場合、TDBGrid.OptionsでdgAlwaysShowEditorを有効にして、インプレイスエディタを常に有効にしてみてください。

 

C++ with LINQ

0
0

I found an interesting C++ libraly.That is "LINQ for C++".

What's "LINQ"?

LINQ (Integrated Language Query) is a function of C#. LINQ issues a query to the container and gets the result.

For details, please refer to MSDN.

https://docs.microsoft.com/en-us/dotnet/csharp/linq/

LINQ for C++

"LINQ for C++" is the libraly enable to use LINQ on C++.

https://archive.codeplex.com/?p=cpplinq

Usage is simple. Just include the header file published on GitHub.

https://github.com/mrange/cpplinq

Using "LINQ for C ++" in C++ Builder, first make sure to use the new Embarcadero C++ compiler with project options.

#pragma hdrstop
#pragma argsused

#ifdef _WIN32
#include <tchar.h>
#else
  typedef char _TCHAR;
  #define _tmain main
#endif

#include <stdio.h>
#include <iostream>
#include "CppLinq/cpplinq.hpp"    

int computes_a_sum ()
{
  using namespace cpplinq;
  int ints[] = {3,1,4,1,5,9,2,6,5,4};

  return
      from_array (ints)
    >>  where ([](int i) {return i%2 ==0;})     // extract odd number
    >>  sum ()                                  // Summing extracted numbers
    ;
}


int _tmain(int argc, _TCHAR* argv[])
{
  std::cout << computes_a_sum() << std::endl;

  return 0;
}

The sum of the even numbers extracted from the array was output.

Many libraries can be used by using the new Embarcadero C++ compiler. please try it


CodeRage DE 2018: Termin, Anmeldung, Infos und Vorstellung der Präsentatoren

0
0

Am Dienstag, 26. Juni, findet die Dritte Deutsche CodeRage Deutschland statt. Anmeldung und weitere Infos (Sessionplan) hier:

http://forms.embarcadero.com/coderage-germany

Die Konferenz deckt Entwicklungsthemen über allgemeine Programmierthemen, Delphi und C++Builder ab. Für Anfänger, Fortgeschrittene und interessierte Delphi und C++Builder Entwickler.

Bekannte Sprecher sind dieses Jahr Dr. Holger Flick, Olaf Monien, Volker Hillmann, Bernd Ua, Uwe Raabe, Frank Lauter, Joachim Dürr und Matthias Eißing. Erfahren Sie kompakt die neusten Technologien, Tipps & Tricks, Paradigmen und Best Practices für Delphi und C++Builder.

Die Sprecher möchte ich hier kurz vorstellen:

Olaf Monien

Olaf Monien arbeitet seit vielen Jahren für internationale Firmen als IT Berater. Seine Spezialgebiete sind Software Architektur, Datenbank Design, Internet Anwendungen und mobile Geräte. Olaf Monien ist Diplom Informatiker mit über 20 Jahren Erfahrung im Bereich Softwareentwicklung. Olaf Monien ist ein Embarcadero MVP und  Embarcadero Technology Partner.

Olaf hält den Vortrag

  • Einheitliche Login-Verwaltung in iOS und Android Apps

Bernd Ua

Bernd Ua ist Gründer und Geschäftsführer von probucon Business Consulting einem Beratungs- und Trainingshaus, das eine breite Platte von unterstützenden Dienstleistungen bei der Softwareentwicklung anbietet, angefangen von Trainings bis zu Architektur, Projektleitung, Codereviews und Umsetzung. Bernd Ua arbeitet seit mehreren Jahren als Softwarearchitekt und Entwickler sowie als Trainer im Bereich nativer Anwendungen mit Embarcadero Delphi und im .net Umfeld mit C#. Daneben ist er als Autor unter anderem für das Entwickler Magazin tätig und regelmäßig als Sprecher auf nationalen und internationalen Veranstaltungen anzutreffen.

Bernd hält den Vortrag

  • Delphi/Azure

Dr. Holger Flick

Dr. Holger Flick studierte Informatik an der Universität Dortmund und promovierte an der Fakultät Maschinenbau der Ruhr-Universität Bochum. Bereits seit 1996 programmiert er mit Delphi. Holger ist Sprecher auf Fachkonferenzen und ein erfahrener Trainer für verschiedenste Delphi Themen. Sein jahrelanges Engagement und seine umfassenden Kenntnisse im Bereich der Delphi Programmierung im Themenbereich der objektorientierten Programmierung mit Delphi und anderen Programmiersprachen (z.B. C#, Objective-C), führte im Jahr 2016 zu seiner Ernennung zum Embarcadero Delphi MVP.

Seit 2013 ist Dr. Holger Flick als Mitarbeiter der Korfmann Lufttechnik GmbH in Witten für die gesamte Software- und Hardwarearchitektur der Firma verantwortlich und entwickelt unter anderem unternehmensspezifische Softwarelösungen mit Delphi.

Holger hält den Vortrag

  • Einführung in TMS Web. Grundlagen, Architektur und die erste Anwendung.

Joachim Dürr

Dipl.Ing.(FH) Joachim Dürr ist ein Software-Urgestein. Er machte vor fast 30 Jahren seine ersten Schritte in der Softwareentwicklung mit Turbo Pascal und hat im Laufe der Jahre mit einigen anderen Sprachen gearbeitet. Von 2000 bis 2015 war er über die Stationen Extended Systems, Sybase und SAP das „Gesicht“ des Advantage Database Servers und verfasste mehrere Bücher und Fachpublikationen zu diesem Thema. In diese Zeit fielen auch unzählige Vorträge bei diversen Softwarekonferenzen in ganz Europa, den USA und Kanada. Seit 2015 arbeitet Joachim als selbständiger Softwareberater. Als Delphi MVP kümmert er sich vor allem auch um die Belange von ADS Anwendern.

Joachim hält den Vortrag

  • Informationssicherheit DSGVO

Frank Lauter

Frank Lauter ist seit vielen Jahren in der Delphi Welt zu hause.  Mit der Programmierung beschäftigt er sich seit 1981 und nach dem Einstieg in Eumel/Elan, Basic und die Programmerung in Z80 Assembler (FL-DOS für MZ-800) ist er über UCSD Pascal zu Turbo Pascal 1.0 für CP/M gekommen. 1986 gründete er seine Softwarefirma deren Hauptarbeitsfeld die Erstellung von Branchenlösungen war und ist. Mit Erscheinen von Delphi XE2 und der ersten Version von Firemonkey, erkannte er frühzeitig, dass hiermit, die über viele Jahre erworbenen Fähigkeiten in der Programmierung, erstmalig einen Einstieg in die Programmierung von iOS- und nach Erscheinen des Android-Compilers auch in die Android-App-Programmierung entstanden ist. Er ist seit 2017 Embarcadero MVP und bietet bundesweit Schulungen und Consulting für Delphi an.

 

Frank hält den Vortrag

  • Fluiddesign und andere Techniken um sich den Programmieralltag zu erleichtern.

Uwe Raabe

Seine ersten Erfahrungen mit Pascal machte Uwe Raabe während seines Studiums in München, bevor er in den späten 70ern mit UCSD Pascal anfing professionell zu programmieren. Nach Turbo Pascal 2 bis 7 kam der Wechsel zu Delphi 1 mit dem Tag seinens Erscheinens. Im Laufe der Jahre hat er sich fundierte Kenntnisse in CAD/CAM Programmierung, Ansteuerung von CNC Maschinen und der Automatisierung von Software Entwicklungsprozessen angeeignet. Er ist Embarcadero MVP der ersten Stunde und neben dem Schreiben einiger Artikel in seinem Blog tritt er auch schon mal als Sprecher auf Veranstaltungen mit Delphi-Schwerpunkt auf.

 

Uwe hält den Vortrag

  • Effizient arbeiten mit MMX Code Explorer

Volker Hillmann

Volker Hillmann ist Geschäftsführer der adecc Systemhaus GmbH. Vielen Entwicklern ist er auch als Buchautor, Trainer und Sprecher auf vielen Roadshows (better office, Borland, Codegear, Embarcadero) bekannt. Er programmiert seit 1988 in C und seit 1991 in C++. Er kennt die Embarcadero (Borland / Codegear) C/C++ Entwicklungsumgebungen seit 1988 (Version Turbo C 1.5). Er beherrscht aber auch eine Reihe anderer Programmiersprachen und hat sich mit vielen Entwicklungsumgebungen beschäftigt. Die Basis hierfür bildet sein Studium als Diplom Mathematiker mit der Spezialisierung Datenbanken und Datensicherheit an der Universität Rostock. Im Auftrag des Markt&Technik Verlags hat er 1994 das Buch "Objektorientierte Programmierung mit C++. Das ganz andere C++- Buch" geschrieben. Er ist auch der Autor des White Papers für den Embarcadero C++ Builder 2010. Die theoretischen Grundlagen werden durch die vielen praktischen Erfahrungen aus Projekten im Finanz- und Versicherungsbereich bereichert. Auch hier basierte der Erfolg auf eher untypischen Ansätzen. Hier war er als Entwickler, Architekt und Projektleiter erfolgreich, bevor er sich 2001 mit seinem Geschäftspartner selbständig machte. Seit 2013 ist Volker Hillmann auch Embarcadero MVP für den C++ Builder und die Programmiersprache C++. Die adecc Systemhaus GmbH ist seit 2007 Partner von Embarcadero in Deutschland und betreut zahlreiche Kunden aus unterschiedlichen Wirtschaftszweigen in Deutschland, Österreich und der Schweiz. Neben Schulungen gehören hier auch Beratungsleistungen und die Beteiligung an Projekten dazu.

Volker hält die Vorträge

  • Abstraktionsschnittstelle zu den Datenbanken
  • Mit Funktionen und Tupeln ein Programm bauen

Matthias Eißing

Matthias Eißing ist Senior Sales Consultant der Embarcadero Germany GmbH. Mit über 20 Jahren Erfahrung im IT-Umfeld, als Sprecher auf zahlreichen nationalen und internationalen Konferenzen und Seminaren gilt Matthias Eißing als ausgewiesener Spezialist im Umfeld der Entwicklungs- und Datenbankwerkzeugen. Seine Schwerpunkte liegen in der Analyse, Beratung und Unterstützung von Kunden bei der Auswahl von Werkzeugen, sowie bei der projektbegleitenden Durchführung.

Ich selber werde den Tag moderieren und diesen Vortrag halten:

  • Neuigkeiten im RAD Studio 10.2 Tokyo

Ich freu mich auf Euch!

 

Creating great UIs with C++Builder and FireMonkey: app templates

0
0

FireMonkey is an advanced UI toolkit, capable of great layouts and designs. We'd like to show you what it's capable of, and how easy it is to make great interfaces using it. We've just introduced eighteen example UI templates using FireMonkey and C++ that really show how easy it is to create great-looking apps.

These are freely available on GetIt, our package manager, and you can download them and use them for your own inspiration and layouts.

What have we added?  Three examples each of:

  • Login screens
  • Home screens
  • User profile screens
  • Settings pages
  • Sign up screens
  • Contact screens

These all demonstrate FMX styles to customize your app's look and feel; the layout and controls you can use to create each screen; and each was created by a designer for layout and imagery.  They make use of freely available images (usage details in the readme).

Do you use C++Builder? You can use these and be inspired!

Are you new to C++Builder? These are the kinds of UIs you can create easily, across multiple platforms including iOS and Android, designed once rather than in multiple languages and UI applications.


One of three sign up screens in C++Builder's FireMonkey designer,
and running built as a Windows app - it can also be iOS and Android 


One of three profile screens


One of three settings screens

One of three app home screens,
here for a fitness app  

One of three login screens


Sarina DuPont has a great blog post going into detail about these templates and the UI mechanisms they use.  For example, one might use a slide-in drawer using a hamburger menu, and she will explain why.

If you're new to C++Builder, you can use these by downloading a free trial. Once installed, go to Tools menu > GetIt, our package manager, and look in the Sample Projects category for 'screens'.

Entornos de ejecución de test con DUnitX (Bonus track)

0
0

Con la anterior entrada del blog completamos la serie sobre test unitarios y los frameworks a utilizar con Delphi, con una visión general sobre DUnitX. A continuación tenéis los links a las entradas de la serie.

Esta última no estaba prevista inicialmente, pero la última ya era bastante extensa y no quise mezclar con el tema de DUnitX este “Bonus track”. Digamos que esta es como un apéndice a la serie.

DUnitX permite ejecutar los test que diseñamos utilizando diferentes salidas. Digamos que el programa de ejecución de test puede estar diseñado en “modo consola”, utilizando un ejecutable VCL o generando un programa FMX. No hablamos de los test en sí, sino del programa que nos muestra la salida y los resultados de la ejecución.

A continuación vamos a repasar casda uno de ellos.

SALIDA “MODO CONSOLA”

Por defecto cuando creamos el proyecto de test, se nos genera un proyecto de tipo CONSOLA, pero no es el único que podemos utilizar. Este es el más básico y no nos permite interactuar con la ejecución o los resultados.

Si miramos el código del DPR (fichero de proyecto) veremos que aparece:

{$APPTYPE CONSOLE}

Y como ya hemos visto en las entradas anteriores, la salida de los test será algo parecido a la imagen siguiente.

Salida_formato_VCL

UTILIZAR PROGRAMA VCL

Además del modo consola, que es la salida que se configura por defecto en los test que generamos utilizando el asistente que viene con Delphi, también podemos utilizar un interface generado con VCL.

Si ejecutamos nuestra pruebas de test con este último, la salida de los resultados será algo similar a la imagen siguiente:

VCL_Ejecución

En la parte izquierda nos aparecen los test (que podemos seleccionar) y en la parte derecha podemos ver la ventana de resultados.

En este caso ofrece 2 vistas; En “Modo Estructurado” y en “Modo Texto”. La primera es en formato de árbol donde tenemos una visión rápida de los test que han funcionado y de los que han dado error, y la segunda muestra resultado en formato texto, similares a los que vemos en la aplicación anterior de consola. Podéis ver la diferencia en las imágenes siguientes:

VCL_resultado_estructurado

VCL_Resultado_formato_Texto

Al final los datos son los mismos en todos los casos, pero se nos presentan de diferente forma.

UTILIZAR PROGRAMA FMX (Firemonkey)

En la últimas versiones de Delphi que disponen de desarrollo para plataformas móviles, también podemos utilizar un interface desarrollado utilizando la librería Firemonkey (no es el más ágil de todos). Si ejecutamos los test utilizando esta interfaz para mostrar los resultados, veremos una imagen al acabar los test similar a esta:

Entorno FMX

En la parte izquierda podemos ver los test a ejecutar y en la parte derecha los resultados. En el caso de los test que fallan, nos muestra algo mas de información de cada uno de los tests que no se han ejecutado correctamente. A continuación las véis ampliadas.

FMX_Ejecucion_de_test

Detalle_error

Hasta aquí hemos visto las alternativas que ofrece el paquete DUnitX para mostrar los resultados de la ejecución de los test. Pero no son todos los posibles. Es más, nosotros mismos podríamos crear nuestro propio interface (aplicación) para ejecutar los test y mostrar los resultados como nos fuera más conveniente o cómodo.

PLUGIN TESTINSIGHT

Esto es lo que ha hecho Stefan Glienke con el pluging TestInsight. En este caso él ha optado por desarrollarlo como un plugin pra el IDE de Delphi y añadirle algunas opciones más de las que traen los que hemos visto anteriormente.

TestInsight es un plugin que soporta versiones posteriores a Delphi XE y que permite integrar dentro del IDE un entorno de pruebas con algunas opciones más de las que posee en entorno estándar. La salida es parecida, pero algo más flexible.

Podéis descargar la instalación del plugin desde GitHub utilizando el siguiente enlace. Y también acceder a una pequeña Wiki con información.

Si queréis más información os recomiendo revisar esta entrada escrita por Agustín Ortu, donde se hace un repaso completo y mucho más detallado de cómo hacer funcionar este addin para el IDE.

Si ejecutamos el mismo proyecto, pero activando TestInsight, la salida que veremos será similar a esta:

Imagen_TestInsight

En la parte superior cuenta con una barra de botones y opciones para ejecutar, filtrar, activar, desactivar test e incluso para ejecutarlos de forma repetitiva cuando el IDE esté “ocioso”.

Barra_de_botones_testInsight

PLANTILLA DE PROYECTO

Finalmente y basándome en esta consulta/respuesta en Stackoverflow, he generado esta plantilla que podéis utilizar en un proyecto de test. En la parte inicial aparecen 4 {$DEFINE}. Comentando tres de ellos y dejando uno sin comentar podéis ejecutar el mismo proyecto utilizando los 4 entornos vistos anteriormente (si habéis instalado TestInsight).

///// Selecciona 1 sólo segun interese  ////////////////////////
{.DEFINE UseWinConsole}
{.DEFINE UseVCL}
{.DEFINE UseFMX}
{$DEFINE UseTestInsight}
////////////////////////////////////////////////////////////////

Si os fijáis tenemos tres con un punto (comentadas) y una con el símbolo $, que es la que está “activa”. Si miráis al completo el fichero DPR del proyecto, veréis que se añaden unas u otras units al uses de proyecto dependiendo del DEFINE activo, y se ejecutan unas u otras instrucciones dependiendo también del DEFINE seleccionado. La parte de ejecución, podéis verla a continuación:

/////////////////////////////////////////////////////////////////////////
{$IFDEF TESTINSIGHT}
begin
  TestInsight.DUnitX.RunRegisteredTests;
  exit;
{$ENDIF}
/////////////////////////////////////////////////////////////////////////
{$IFDEF UseVCL}
begin
  Application.Initialize;
  Application.CreateForm(TGUIVCLTestRunner, GUIVCLTestRunner);
  Application.Run;
{$ENDIF}
/////////////////////////////////////////////////////////////////////////
{$IFDEF UseFMX}
begin
  Application.Initialize;
  Application.CreateForm(TGUIXTestRunner, GUIXTestRunner);
  Application.Run;
{$ENDIF}
/////////////////////////////////////////////////////////////////////////
{$IFDEF UseConsole}
var
  runner : ITestRunner;
  results : IRunResults;
  logger : ITestLogger;
  nunitLogger : ITestLogger;

begin
   try
      //Create the runner
      runner := TDUnitX.CreateRunner;
      runner.UseRTTI := True;
      //tell the runner how we will log things
      logger := TDUnitXConsoleLogger.Create(true);
      nunitLogger := TDUnitXXMLNUnitFileLogger.Create;
      runner.AddLogger(logger);
      runner.AddLogger(nunitLogger);

      //Run tests
      results := runner.Execute;

      System.Write('Done.. press  key to quit.');
      System.Readln;

   except
      on E: Exception do
         System.Writeln(E.ClassName, ': ', E.Message);
   end;
{$ENDIF}
/////////////////////////////////////////////////////////////////////////

Os adjunto el código completo del proyecto que he estado desarrollando para las anteriores entradas, con estas modificaciones en el DPR. <Código fuente del proyecto> Hasta aquí esta última entrada. Como siempre cualquier comentario, sugerencia, mejora, propuestas,… será bienvenida. Hasta la próxima.

モバイル端末のデータを開発用PCに転送する

0
0

はじめに

モバイルアプリの開発で、端末に保存されているデータベースやログなどを、開発用のPCに持ってきて確認したいケースは良くあります。モバイル端末では「サンドボックス構造」として、モバイルアプリケーションがアクセス可能な領域が制限されています。PCからも同様で、モバイルアプリケーションの領域を直接参照することは出来ません。

以下の手段を使用すれば、モバイルアプリケーションのデータを開発用のPCに転送することが出来ます。

Andoroidの場合:

  1. Android端末のUSBデバッグを有効にします。
  2. コマンドプロンプトから"adb shell"を実行します。
  3. Andoroidのシェルが起動しますので、"run-as [アプリケーションのパッケージ名]"を実行して、アプリケーションのストレージに移動します。アプリケーションのパッケージ名はRAD Studioのプロジェクトオプションで確認出来ます。
  4. cpコマンドで、転送したいファイルをPCからアクセス可能なディレクトリにコピーします。
    例)"cp Test1.IB /sdcard/Pictures"
  5. "exit"を入力して、adbから抜けます。
  6. "adb pull"で開発用のPCにファイルを転送します。
    例)"adb pull /sdcard/Pictures/Test1.IB"

iOSの場合:

  1. ホストのMacでXCodeを起動して、[Window|Devices and Simulators]を選択します。
  2. "INSTALLED APPS"でアプリケーションを選択して、歯車のアイコンをクリックしてメニューを表示します。
  3. メニューの"Download Container"を選択します。
  4. 保存先を選択して[Save]をクリック。アプリケーションデータを保存します。
  5. 保存したアプリケーションデータで右クリック(オプションメニューを表示)して、[パッケージの内容を表示]を選択します。
  6. ホストのMacから開発用のPCにコピーします。

まとめ

今回の例はInterBase ToGoのデータファイルです。データをモバイル端末にデータベースとして持たせる場合、FireMonkey + FireDAC + InterBase Togoの組み合わせは非常に有力です。

 

 InterBase Togoはマルチデバイス対応ですので、Windows、AndroidとiOSの相互でファイルをコピーするだけでアクセス出来ます。デバッグに使用したり、編集してから再配置して、モバイル端末に再反映するなどの応用が可能です。

もちろん、データベースファイルだけではなく、ログファイルなどの一般的なファイルもこの方法で転送できます。

 データベース繋がりですが、来る7月18日(水)と8月28日(火)に技術セミナー「多様なデータベースへの接続を実現する最新データアクセス技術活用セミナー」を行います。

詳細は、以下のURLを参照してください。
https://www.embarcadero.com/jp/events-japan

Delphi/C++Builder: Aktuelle e-Books, Videos und mehr

0
0

Dr. Veikko Krypczyk: Geräteübergreifende Entwicklung mit RAD Studio

In diesem shortcut stellen Ihnen Olena Bochkor und Dr. Veikko Krypczyk die Möglichkeiten der geräte- und plattformübergreifenden Entwicklung mit RAD Studio vor. Dabei werden verschiedene Anwendungsfälle, wie zum Beispiel UI-Erstellung und Cloud-Anbindung, anhand leicht nachzuvollziehender Beispiele erläutert.

Amazon / Kindle Edition: https://www.amazon.de/dp/B07FKL2WX7/

Entwickler.de: https://entwickler.de/press/shortcuts/geraeteuebergreifende-entwicklung-mit-rad-studio-579850093.html

Marco Forestier: Das DLL Kompendium für Delphi & RAD-Studio

In diesem Buch wird beschrieben, wie DLLs erstellt und in Programme eingebunden werden, wie eine Programm-Funktion gekapselt wird und in eine DLL ausgelagert wird bzw. ein VCL-Formular in eine DLL ausgelagert. Beim Einbinden/Import wird sowohl das statische wie auch das dynamische Einbinden an Beispielen gezeigt.

Amazon / Taschenbuch: https://www.amazon.de/dp/1980973148

Marco Forestier: Das Thread Kompendium für Delphi und RAD-Studio

In diesem Buch wird beschrieben, wie Threads erstellt und in Programme eingebunden werden. Das Ganze geschieht anhand von Beispielen, die jeder in seiner eigenen Entwicklungsumgebung nachbauen kann. Es wird ausführlich darauf eingegangen, wie Threads erstellt, gestartet, pausiert und gestoppt werden. Es wird ebenso beschrieben, auf was man als Entwickler besonders achten sollte. Im Buch werden alle dazugehörigen Sourcecodes vollständig abgedruckt! 

Amazon / Taschenbuch: https://www.amazon.de/dp/1983074705

Marco Forestier: Multilinguale Anwendungsentwicklung für Delphi & RAD-Studio

In diesem Buch wird beschrieben, wie Sie Ihre Anwendung zu einer multilingualen Anwendung erweitern können. Das Ganze geschieht anhand von zwei Beispielen, die Sie in Ihrer eigenen Entwicklungsumgebung nachbauen können. Es werden verschieden Ansätze zur Lösung dieses Problems besprochen und auf die Vorteile beziehungsweise auf die Nachteile eingegangen. Es wird ebenso beschrieben, auf was man als Entwickler besonders achten sollte. Im Buch werden alle dazugehörigen Sourcecodes vollständig abgedruckt!

Amazon / Taschenbuch: https://www.amazon.de/dp/1983333875/

FREE Video Course - Master C++ Fundamentals (englisch)

C++ programmers are sought after for enterprise system software and video games. In these tutorials, Byte Academy and Embarcadero Technologies walk you through conditional statements, loops, simple and advanced data structures, and memory management using the C++Builder IDE. The C++Builder IDE allows you to design, code, test and deploy your C++ apps to desktops and devices with a single code base.

Hier anmelden / kostenfrei: http://forms.embarcadero.com/freecppvideocourse

 

Viewing all 182 articles
Browse latest View live




Latest Images