Quantcast
Viewing all 167 articles
Browse latest View live

Delphi / C++Builder RS232cコンポーネント MITライセンス配布版[JAPAN]

Image may be NSFW.
Clik here to view.

以前刷新セミナーでご紹介したRS232C(COM)用コンポーネントがWindows限定(WUNI232c)でMITライセンスで配布されています。

 

URL http://www.csd.co.jp/uni232c/

[特徴]

・Android様の各社用の232cドライバーを作成しなくても良い。
現在、FTDI/Prolific/SILICON LABS 232/南京沁恒电子有限公司(CH340)、mbed1768、USB CDC で動作いたしますが、確認の上、御使用ください。
(OEM版の対応は非対応)
・AndroidもWindowsも同一コードで動作。
・Windows上で動作を簡易確認できる。
・Androidでも動作可能。

(Android版は© CSD Co., Ltd. 様の有償コンポーネントです)

 

 


[YoutubeButton url='https://www.youtube.com/watch?v=RDW9FWJMQ6M&feature=youtu.be']

第15回 RAD Studio勉強会@Osaka 2017年3月3日(金) 開催 [JAPAN]

コミュニティ「RAD Studio勉強会@Osaka」さんによる 「第15回 RAD Studio勉強会@Osaka (Delphi / C++Builder)」が開催されます。

Delphi / C++Builderの勉強会です。Delphiを使用したVRで有名なフォーラムエイト様での開催です。Delphi / C++Builder の好きな人達が集まる地域コミュニティです!どなたでも参加することが出来ます。


[YoutubeButton url='https://youtu.be/cTfXZTPe13U']
 
今回の下記の2つのセッションで構成なされるそうです。
■フォーラムエイトさんによるセッション
  • 当社でのDelphi採用の経緯
  • 自社コンポーネントを使用した開発
  • 当社でのソースコード管理

フォーラムエイトさんはエムキャス対応番組「パックン河北麻友子のあつまれ! VRフレンズ」も放送されております。

■Delphi 10 Starter Edition を使用した Delphi開発入門ハンズオン
 
チュートリアルシリーズ シーズン1で実施した内容を 元にしたハンズオンを実施していただけるとのこと。楽しみです!
 
 
■詳細、および、参加お申し込みはこちらのWebから

 

Shuffling playing cards with Delphi خلط كروت اللعب بالدلفي

Image may be NSFW.
Clik here to view.

هذا جزء فقط من مشروع عبارة عن محاكي للعبة الورق Simulator. الغاية من البرنامج هو معرفة ما قد يحدث لنتائج لعبة اذا تم تغيير قوانين اللعبة . ما هي احتمالات الخسارة والربح. وما هي عددها . وكم نسبتها . هذا البرنامج مهمته اعطائنا نظرة مستقبلية وقدرة على تغيير قواعد اللعبة ومقارنة النتائج .

اول مهمة في المشروع هي خلط الأوراق . بالطبع خلط الأوراق يعتمد على العشوائية . لكن الرقم العشوائي الذي ينتجه الحاسب في الحقيقة ليس إلى ناتج عملية حسابة وهذا ما يجعله ليس عشوائيا ابدا ولا يناسب نهائيا مثل هذا النوع من التطبيقات . لذلك اصبحت المهمة الاولى هي انتاج ارقام عشوائية واقعية وهذا ما يدعى True Random Number
لتحقيق هذا كان من الواضح اننا بحاجة لدخال عامل طبيعي خارجي في عملية استنتاج هذه الارقام العشوائية 
كان الاختيار الاول هو الضجيج باستخدام arduino ولكن مع الاسف لسبب تقني ( عطل في المايكرفون ) لم استطع الحصول على نتائج جيدة .
الخيار الثاني هو الحصول على العشوائية من محاور الهاتف الجوال . الفكرة تعتمد على قراءة ميول هذه المحاول اثناء الحركة وتسجيلها ضمن قاعدة بيانات لاستخدامها لاحقا


المرحلة الاولى : 


DataSnap Server داتاسناب السيرفر :

Image may be NSFW.
Clik here to view.
Server-Datasnap

Image may be NSFW.
Clik here to view.

 

 

وضعت اجراء واحد ودالة واحدة  الاول هو NumberToDataBase و مهمته دمج القيمة القادمة عبر البرمتر ( Values ) بعبارة insert وتنفيذها . اما الدالة فيه فقط تعدي عدد الارقام العشوائية التي تم تسجيلها في قاعدة البيانات. ( label3 ) هي لعمل debuging ومتابعت لا اكثر 



DataSnap Client داتاسناب الكلاينت :

Image may be NSFW.
Clik here to view.
Image may be NSFW.
Clik here to view.

الفكرة تعتمد على ابقى البرنامج مفتوح والتجول والتحرك وقراءة محاول ميول الهاتف واخد اخر ثلاث خانات . ( ثلاث خانات لاني احتاج لعدد عشوائي كبير لضرورات محاكي اللعبة لانه هناك احتمال ليكون عدد مجموعات الكروت اكثر من واحد .


MotionSenser1 : هو المكون TMotıonSenser الذي يعيد ميول محاور الهاتف الثلاثة

Image may be NSFW.
Clik here to view.

ولانه ليس من المنطقي ارسال كل رقم عشوائي لوحده لداتاسناب سيرفر واشغال الشبكة ومحرك قاعدة البيانات . قمت بارسال كل 100 رقم عشوائي مع بعض بعد تجهيزها للإضافة مباشرة في عبارة insert .

Image may be NSFW.
Clik here to view.

وهذا هو كامل الكود . ( الكود ليس متقن لسبب ان هذا البرنامج لن يتم استخدامه مرة اخرى ).
Image may be NSFW.
Clik here to view.

 

 

بقي فقط ان اقوم بتنفيذ برنامج داتاسناب سيرفر وبرنامج الموبايل واتجول واتحرك :)

 


المرحلة الثانية :


Image may be NSFW.
Clik here to view.

بعد الحصول على الكم الهائل من الارقام الحقيقية العشوائية محصورة بين 0 و 999 . تاتي المرحلة الثانية وهي عملية خلط الكروت shuffling .
الفكرة تعتمد على اعتماد ترقيم متسلسل للكروت من 1 حتى 52 . للمجموعة Deck الاولى و من 53 حتى نهاية الكروت في حال كان هناك اكثر من مجموعة مستخدمة .
كبداية قمت برسم الكروت وتوضعها في ImageList .

كبداية قمت بتحضير كلاس خاص لعرض كرت اللعب . مشتق من TRectangle . ( كان يمكن استخدام TImage .. )
Image may be NSFW.
Clik here to view.

ImageLit : لتحديد مكون ImageList الذي يحتوي على صور الكروت كلها.
ImageIndex : هو رقم الكرت محصور بين 1 و 52 .
Facing : خاصية لتحديد اذا كان الكرت سيظهر مقلوب أم على الوجه . 

ولمعرفة رقم الكرت من الرقم العشوائي. سنقوم بترقيم الكروت المستخدمة ( قد تكون اكثر من مجموعة deck )  ابتداءا من 1 وحتى اخر كرت . اما معرفة imageindex من اصل 52 صورة نقوم بحساب وفق المعادلة :


(RandomNo % ((52*' + inttostr(Decks) + ') - rownumber + 1)) 

Image may be NSFW.
Clik here to view.

تم حسابها مباشرة من الكوري وليس من التطبيق عند جلب الارقام العشوائية من قاعدة البيانات . فلا داعي لحسابها ضمن التطبيق.

اصبح عندنا كل ارقام الكروت حقيقية العشوائية . الان سنحتاج ل array عدد 2 الاولى  SortedCards فيها كل أرقام الكروت مرتبة والثانية shuffledCards سيتم نقل إليها العناصر من المصفوفة الأولى. لتشكيل المصفوفة النهائية التي تحتوي على كل الكروت حقيقية العشوائية. ( قد لا نحتاج المصفوفات في هذه المرحلة . لكن المشروع لم ينتهي بعد وهذه المصفوفات لها استخدام مستقبلي ).

Image may be NSFW.
Clik here to view.


واخيرا يبقى اظهار النتائج للمستخدم . يكفي انشاء Tcard بعدد عناصر المصفوفة ShuffledCards . واضافة مؤثر لعرض حركة لقلب الكرت لكلاس tcards.

Image may be NSFW.
Clik here to view.

 

Image may be NSFW.
Clik here to view.


وهذه هي النتيجة حتى الان .. فالعمل لم ينتهي بعد .
Image may be NSFW.
Clik here to view.

InterBase 2017/Linux und Delphi/Linux (Vorschau)

Image may be NSFW.
Clik here to view.

Da seit heute InterBase 2017 verfügbar ist, und Delphi für Linux ja demnächst verfügbar sein wird, habe ich diese Kombination mal installiert.

Genutzt habe ich dafür ein Ubuntu 16.04.2

Zuerst die Installationsdatei nach Linux kopiert und entpackt:

Image may be NSFW.
Clik here to view.

Dann die Installation durchgeführt:

chmod +x install_linux_x86_64.sh

nicht vergessen. Da es sich um eine GUI/XServer-lose Installation handelt, geht das Ganze über die Kommandozeile:

./install_linux_x86_64.sh

Image may be NSFW.
Clik here to view.

Auswahl von 64 Bit / Server und Client sollen installiert werden:

Image may be NSFW.
Clik here to view.

Hier ohne Multi-Instance Möglichkeiten und Abschluss der Installation:

Image may be NSFW.
Clik here to view.

Fertig installiert. Jetzt noch lizenzieren:

Aus /opt/interbase/bin:

./LicenseManagerLauncher -i console

Image may be NSFW.
Clik here to view.

[2] "Direct register" mit Seriennummer

Image may be NSFW.
Clik here to view.

Abschliessend wird der Dienst gestartet mit

./ibmgr -start

InterBase 2017 ist jetzt installiert..... jetzt zum Delphi/Linux Teil:

Hier soll es nur um eine kleine Konsolenanwendung gehen. Praktischerweise kann man ja auch in Konsolenanwendungen Datenmodule verwenden. Das ist schnell zusammengebaut.

  • Neue Delphi, Konsolenanwendung
  • Ein Datenmodul hinzugefügt
  • Eine FDConnection (Name: IBUbuntuConnection) und eine FDTable (Name: FDTableCustomer)
  • Die Connection konfiguriert mit:
    Database: /opt/interbase/examples/employee.gdb
    Username: sysdba / password: masterkey
    Protocol: TCP/IP
    Server: <IP-Adresse des Ubuntu/InterBase Servers>
  • Die FDTable mit Link auf die "CUSTOMER" Tabelle
  • Das Konsolenprogramm:
program IBOnUbuntu;
{$APPTYPE CONSOLE}
{$R *.res}
uses
  System.SysUtils,
  DMFireDACInterBase in 'DMFireDACInterBase.pas' {DataModule2: TDataModule};
var
  i: Integer;
  dm: TDataModule2;
begin
  try
    dm := TDataModule2.Create(nil);
    dm.IbUbuntuConnection.Connected := true;
    dm.FDTblCustomer.Active := true;
    for i := 0 to 10 do
    begin
Write(dm.FDTblCustomer.Fields[0].AsString + #9);
      Write(dm.FDTblCustomer.Fields[1].AsString + #9);
      Writeln(dm.FDTblCustomer.Fields[2].AsString);
      dm.FDTblCustomer.Next;
    end;
    { TODO -oUser -cConsole Main : Code hier einfügen }
  except
    on E: Exception do
      Writeln(E.ClassName, ': ', E.Message);
  end;
  readln;
end.

Das Programm lässt sich sofort (keine weitere "Client-Installation von Datenbanktreibereien" auf der Linux-Server-Seite) starten :-)

Image may be NSFW.
Clik here to view.

 

Embarcadero Roadshow: Leipzig, München, Berlin und Stuttgart

Image may be NSFW.
Clik here to view.

Wir sind wieder für Sie unterwegs und freuen uns, wenn Sie sich die Zeit nehmen, um das Neueste über RAD Studio und Embarcadero zu erfahren. 

Das neue Release von RAD Studio Tokyo mit Delphi für Linux steht kurz vor der Auslieferung. Erfahren Sie, was die aktuelle und die kommende Version alles bietet. Es erwartet Sie ein Tag prall gefüllt mit Präsentationen zu unseren Produkten, den Neuigkeiten sowie Tipps & Tricks, wie Sie mit RAD Studio noch schneller und effektiver Ihre Anwendungen schreiben können. Nutzen Sie die Gelegenheit, um in den Pausen Ihre Fragen zu stellen und sich untereinander zu vernetzen.

Agenda, Anmeldung und Ort jeweils hier:

25. April Leipzig

27. April München

11. Mai Berlin

16. Mai Stuttgart (leicht geänderte Agenda)

Delphi/Object Pascal at #9 in Tiobe March 2017 index - Swift enters top 10

The March 2017 Tiobe programming language index report is out. Delphi/Object is at number nine in the report. Swift enters the top ten for the first time.

From the Tiobe index post:

      "This month Swift enters the

TIOBE index

    top 10 for the first time. About 3 years ago Apple announced that it would replace its 'ancient' native mobile app development language Objective-C by its newborn language called Swift. The expectations were high right from the start, but adoption took off slowly. That is for good reasons by the way because the installed base of Objective-C code is quite large. New applications are written in Swift, whereas old apps that are written in Objective-C are not actively migrated to Swift. This is also what we observe at customer sites. Since Swift is mainly intended to write applications in Apple's ecosystem, it is expected that it won't rise much further."

Delphi moved from 11th to 9th. Swift moved from 14th to 10th. The March 2017 index's top five languages stayed the say from February 2017: 1) Java, 2) C, 3) C++, 4) C#, 5) Python.

 

 

InterBase 2017 als Dienst (Service) unter Linux (Ubuntu)

Image may be NSFW.
Clik here to view.

Nur ein kleiner Hinweis von meinem Delphi 10.2 Tokyo / InterBase 2017 Blogeintrag:

Um InterBase als Dienst (Hintergrunddienst / Service) zu starten, sagt die Dokumentation:

To run InterBase as a service:
  /usr/interbase/examples/ibservice.sh -s[tart] 
When you choose to run InterBase as a service, the InterBase server starts automatically whenever the machine is running in a multi-user mode.

Was nicht "ganz" korrekt ist.

Das Script "ibservice.sh" verlangt nämlich danach, daß der Dienstename, als Dateiscript zum Starten vorliegt. Der Standard-Dienstename (das Startscript für den Dienst) heisst "ibserverd" und liegt in /opt/interbase/examples/ibserverd. Dieses muss man zuerst in den gewünschten Namen kopieren

root@ubuntu:~# cd /opt/interbase/examples/
root@ubuntu:/opt/interbase/examples# cp ibserverd ibserverd_gds_db

Anschliessend kann man das Installationsscript aufrufen:

root@ubuntu:/opt/interbase/examples# ./ibservice.sh -s /opt/interbase gds_db

-s. :  Start/Installation des Hintergrunddienstes (Deinstallation mittels -r (Remove)
/opt/interbase. :  Installationsverzeichnis (wahlweise /usr/interbase)
gds_db. :  Dienstename (wie schon weiter oben, als Dienstescript kopiert)

Danach startet InterBase auch als Dienst beim Start des Rechners automatisch (aus dem Kernel Log):

Mar 22 13:43:08 ubuntu ibserverd_gds_db[1469]: InterBase Server starting...

Auch überprüfbar mittels netstat -a:

root@ubuntu:/opt/interbase/examples# netstat -a
Aktive Internetverbindungen (Server und stehende Verbindungen)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0      0 *:gds_db                *:*                     LISTEN     
tcp        0      0 localhost:mysql         *:*                     LISTEN     
tcp        0      0 *:netbios-ssn           *:*                     LISTEN     
tcp        0      0 *:ssh                   *:*                     LISTEN     
tcp        0      0 *:ms-sql-s              *:*                     LISTEN     

(Da läuft auch noch gleich ein MS SQL Server und ein MySQL Server....)

RAD Studio / Delphi / C++Builder 10.2 Tokyo ab sofort verfügbar!

Image may be NSFW.
Clik here to view.

Ab sofort ist Delphi, C++Builder und RAD Studio 10.2 Tokyo verfügbar. Inklusive der Trial/Testversionen und der (kostenfreien) Starter Editionen.

Einige Neuerungen:

  • LLVM Compiler für Linux
    • 64 Bit
    • Unterstützung für/mit Delphi
    • ARC fähig
    • 1-basierte Strings
    • Linux Unterstützung für
      • Ubuntu Server
      • RedHat Enterprise Linux (V7)
  • Neue RTL Funktionen
    • Zugriff auf das Linux Dateisystem
    • Threading / Parallel Programming Libraries für Linux
    • REST / HTTP Aufrufe unter Linux
  • FireDAC für Linux (bis auf Informix)
  • FireDAC Unterstützung für MariaDB (Windows, Linux, ....)
  • WebBroker, RAD Server und EMS, sowie DataSnap Unterstützung unter Linux
  • PAServer, DUnitX, Indy unter Linux
  • Verbesserungen für iOS (10.2.x Unterstützung, Systemstatuszeilenerweiterungen)
  • Verbesserungen für den C++Builder-Linker (bis zu 4 GiB Speicher!!)
  • Verbesserungen in der IDE (Neues "Ansicht"-Menü, High-DPI Unterstützung weiter ausgebaut, parallele Downloads für GetIt)

 

Testversion:
https://www.embarcadero.com/de/products/delphi/start-for-free

Starter Edition (kostenfrei)
https://www.embarcadero.com/de/products/delphi/starter/promotional-download

 


Debian und Delphi/Linux

Image may be NSFW.
Clik here to view.

Sehr häufig kommt die Frage, welche Linux Distributionen wir unterstützen. Namentlich sind das zwei wesentliche:

  • Ubuntu 160.04 LTS
  • RedHat Linux Enterprise Linux 7

Manchmal kommt die Frage, ob auch Debian funktioniert..... das habe ich mal getestet (ohne Garantie auf offizielle Funktionalität).

In einem Satz: Es funktioniert!

Ein einfaches Hello-World:

Image may be NSFW.
Clik here to view.

Auch ein Zugriff über FireDAC funktioniert:

Image may be NSFW.
Clik here to view.

Sieht gut aus :-)

 

Bash on Ubuntu on Windows 1703 "Creators Update" und Delphi

Image may be NSFW.
Clik here to view.

Da ja seit gestern das sogenannte "Creators Update" von Windows erschienen ist (zumindest bei TechNet, MSDN) und das "Windows-Subsystem für Linux (Beta)" in Zuge dessen auch aktualisiert wurde (Ubuntu 16.04.01), hat mich interessiert, ob das Ganze dann auch mit Delphi funktioniert.

Kurze Antwort: Jain :-) Programme laufen, PAServer (noch) nicht.....

Doch zuerst die Bash :

Innerhalb von Windows 1703 muss man zuerst zwei Dinge erledigen:

  • Zuerst muss man über "Programme und Features" (was sich im 1703, Creators Update, etwas versteckt hat), das "Windows-Subsystem für Linux (Beta)" installieren. Dazu müssen der Entwicklermodus für Windows aktiviert werden(!):
    Image may be NSFW.
    Clik here to view.
  • Image may be NSFW.
    Clik here to view.
  • Anschliessend muss man über "bash" dieses Subsystem konfigurieren (Benutzername, Kennwort, ...). Optional kann man mit einem beherztem apt-get update && apt-get upgrade das Subsystem auf Ubuntu 16.04.02 bringen.

Jetzt zum PAServer.... um es kurz zu machen: Der läuft noch nicht :-(

Aber zur Entwicklung und der Ausführung von Programmen: Die laufen!

program Project1;
{$APPTYPE CONSOLE}
{$R *.res}

uses
  System.SysUtils,
  Unit1 in 'Unit1.pas' {DataModule1: TDataModule};

var
  dm: TDataModule1;
  i, j: integer;

begin
  try
    { TODO -oUser -cConsole Main : Code hier einfügen }
    writeLn;
    writeLn('InterBase auf ' + TOSVersion.ToString);
    writeLn('------------------------------------------------------------');
    dm := TDataModule1.Create(nil);
    dm.FDTable1.First;
    for i := 1 to 10 do
    begin
      for j := 0 to 3 do
      Begin
         Write(dm.FDTable1.Fields[j].AsString+#9)
      End;
      WriteLn;
      dm.FDTable1.Next;
    end;
    ReadLn;
  except
    on E: Exception do
      writeLn(E.ClassName, ': ', E.Message);
  end;
end.

In dem Datenmodul sind eine FDConnection und eine FDTable auf einen InterBase Server 2017 auf einem (anderen) Ubuntu vorhanden....

Das Programm läuft erwartungsgemäß unter Windows:

Image may be NSFW.
Clik here to view.

Und nachdem ich die passende InterBase .so-Datei auch mitgegeben habe auch im Ubuntu-Subsystem:

Image may be NSFW.
Clik here to view.

:-)

【告知】Delphi / C++ Builder 業務アプリケーション 刷新実践法(4月14日)

Image may be NSFW.
Clik here to view.

4月14日(金)に、「Delphi / C++Builder で作成した以前のプロジェクトを最新環境へと移行させる」ためのセミナーを実施します!

Windows 10は、過去のWindows OSと何が異なるのか、また「最後のWindows」と言われるWindows 10のアップデートサイクルについて説明するとともに、最適なプロジェクト移行スケジュールの立て方などについて知っていただけます。

また、BDE(Borland Database Engine)を使用してデータベース接続をしているようなプロジェクトをお持ちの方に、最新のFireDAC データベース接続フレームワークを使用して最新データベース接続へと移行する手法をご紹介します。

そして、C++Builder プロジェクトや、文字コード周り、COMコンポーネントを使ったハードウエア周りの移行についてご紹介します。

以前のプロジェクト・システムを新しくしないと…と考えている方々、参加は無料です。是非セミナーにご参加いただき、移行のヒントをつかんでいただければと思います。

以下、実施概要です。


 「旧バージョンのDelphi / C++Builderで開発された膨大なアプリケーション資産を、効率よく最新バージョンに対応させる変換ツールはありませんか?」こうした質問をよく耳にします。

BDEを使ってOracleなどのRDBMSに接続するアプリケーションのコードは、一定の規則に基づいて、ある程度最新のFireDACに変換することが可能。そのための変換ツールも用意されています。 今回、こうしたツールも活用しながら、旧バージョンのDelphi / CBuilderによって開発された業務アプリケーションを、最新バージョンに対応させていくための手法を解説するセミナーを開催します。Webセミナーでは紹介できなかった、より詳しい移行ノウハウを、ビジネスアプリケーションを対象に解説します。 Delphi / C++Builderで開発された既存のC/Sシステム、FAシステムなどの改修を検討している方に最適なセミナーです。

セミナーへの参加は無料です。 下記の申し込みページからご登録ください

登録ページ:http://forms.embarcadero.com/rad-biz-app-migration-seminar

開催概要

セミナー「Delphi / C++ Builder 業務アプリケーション 刷新実践法」

  • 主催: エンバカデロ・テクノロジーズ
  • 日程: 2017年4月14日(金)14:00~17:00 (13:45 受付開始)
  • 会場: エンバカデロ飯田橋オフィス セミナールーム(東京・飯田橋)
  • 参加費: 無料(事前登録制。下記のページよりお申し込みください)
  • セミナーホームページ: http://forms.embarcadero.com/rad-biz-app-migration-seminar
プログラム

セミナーでは、以下のテーマごとに移行の実践手法をご紹介いたします。

  • 業務システムのWindows10対応の進め方
    Windows10では「Windows as a Service」という新しい概念が導入され、OSのサポート方針や新機能の追加タイミングが変わりました。これにより業務システムでのWindows10対応では今までと異なる進め方が求められます。またタブレット向けの対応が進み、UIについても様々な改良が行われました。このような状況の元、業務システムのWindows10対応の進め方や対応時期についてご案内いたします。

  • BDEを使った業務アプリを移行ツールで最新化
    BDEでOracleや MS SQL等のRDBMSと接続する比較的大きなC/Sシステム・アプリケーションを移行するのは大変な作業に思えます。しかし、そのまま使い続けるにはセキュリティリスクが発生すると共に、より発展的な開発の足かせとなります。BDEから最新のFireDACへ対応させる変換ツール使って、より効率よく最新環境へ移行する手法をお伝えします。またデータベースを活用するにはモデリングも欠かせません。モデリングツールと移行ツールで古いプロジェクトをリフレッシュして新資産として生かしましょう。

  • FireDACやCOMポートを使ったUnicode移行ポイント
    古いプロジェクトファイル 拡張子.bpr .cproj から10.1Berlinへの簡単な移行と、古いマニフェストファイルから新しいマニフェストファイルへの移行方法を解説します。またFireDACを使用したデータベースアクセスでUnicodeを使い、中国/韓国/アラビア語などを表示・書込みさせる方法をご紹介。 ファクトリーオートメーションにおいてRS232Cポートをサードパーティ製COMコンポーネントを使ってByteデータ送信した場合のUnicode/ANSI 内容の違いなどをご説明いたします。

Performance der Ubuntu Bash auf Windows 10 ("Creators Update")

Image may be NSFW.
Clik here to view.

Da ich ja schon gestern auf die Möglichkeiten der (Ubuntu) Bash auf Windows 10 Creators Update und Delphi eingegangen bin, habe ich mal einen kleinen Performance Test gegenüber einer normalen Ubuntu-Installation gemacht.

Dazu habe ich ein einfaches Quicksort benutzt:

program QuickSort;
{$APPTYPE CONSOLE}

uses
  SysUtils,
  System.Diagnostics,
  System.Timespan;

const
  maxLen = 100000000;

type
  stip = array [1 .. maxLen] of integer;

var
  i: integer;
  s: stip;
  Stopwatch: TStopwatch;
  Elapsed: TTimeSpan;
  Seconds: Double;

procedure pQuickSort(var a: stip; lo, hi: integer);
  procedure sort(p, r: integer);
  var
    i, j, x, y: integer;
  begin
    i := p;
    j := r;
    x := a[(p + r) div 2];
    repeat
      while a[i] < x do
        i := i + 1;
      while x < a[j] do
        j := j - 1;
      if i <= j then
      begin
        y := a[i];
        a[i] := a[j];
        a[j] := y;
        i := i + 1;
        j := j - 1;
      end;
    until i > j;
    if p < j then
      sort(p, j);
    if i < r then
      sort(i, r);
  end;

begin
  sort(lo, hi);
end;

begin

  Write('Init....');
  for i := 1 to maxLen do
  begin
    s[i] := Random(maxLen)
  end;
  WriteLn('Done');

  Stopwatch := TStopwatch.StartNew;

  Write('Sorting....');
  pQuickSort(s, 1, maxLen);
  WriteLn('Done');

  Elapsed := Stopwatch.Elapsed;
  Seconds := Elapsed.TotalSeconds;

  WriteLn;
  WriteLn(Seconds.toString);
  readln;


end.

Ergebnisse (getitelt aus 3 Durchläufen):

  • Ubuntu (direkt bzw als VM mit 4 CPUs/4 GByte RAM)
    17,43 / 17,22 / 17,10 Sekunden = 17,25 Sekunden
  • Bash on Windows (auf dem gleichen Rechner in einer separatem VM mit 4 CPUs/4 GByte RAM)
    17,65 / 17,45 / 17,43 Sekunden = 17,51 Sekunden

Also praktisch kein "Leistungsverlust".

Zusätzliche Test mit dem "Sieb des Eratosthenes", ein String-Replacement (wichtig für REST/JSON) und weiterer Arithmetik haben absolut vergleichbare Zahlen geliefert :-)

Good job, Microsoft!

NB: Der PAServer (auf Ubuntu) hatte keinen messbaren Einfluss auf der Ergebnis 

クロスプラットフォーム開発環境 RAD Studio / Delphi / C++Builder のインストール (無料体験版のインストール)[JAPAN]

Image may be NSFW.
Clik here to view.

RAD Studio / Delphi / C++Builder のインストール (体験版のインストール)

ここでは無料トライアル版を導入する手順を記載しておきます。RAD Studio / Delphi のフル機能を30日間、無料で試用することができます。すでにライセンスを購入している方は、ライセンス購入時にメール等で知らされる手順により導入してください。

10.1 Tokyo のオンラインインストーラーが改善されてだいぶ早くなっています。「10.2 Tokyo で高速化された RAD Studio のインストールを実際に検証してみる [Japan]」 のブログににある通り、環境にもよりますが、約半分の時間でインストールできます。また、必要な機能だけ選択してインストールできるので、なおのことインストールにかかる時間を短縮できます。

RAD Studio / Delphi / C++Builderについて

RAD Studio / Delphi / C++Builderは、一つのソースで Windows, macOS, iOS, Android のアプリが作れるクロスプラットフォーム開発環境です。 ユーザーインターフェースも一つのマスターUIを作ることで、各デバイス、各OSに対応することができる大変なスグレモノであります。

体験版とちょっと似ているけど目的の違うエディション「Starter Edition」について

30日間、すべての機能を無料で使えるのが、体験版
体験版とは別に、ずーっと無料で使え、Windows 32-bit アプリケーションを作ることのできる Starter Editionというものがあります。入門者、初心者などが Delphi/C++Builder を使ってプログラミングを覚えたい、というときには、体験版よりも 無料で使える Starter Editionがオススメです。Starter Edition を使いたい方はこちらをご参照ください

それでは以下、体験版について、導入手順をご紹介します。

※インストール方法をご紹介するビデオを公開しています。こちらもご参考に。


[YoutubeButton url='https://youtu.be/I-ZabVYVLZ0']

体験版のダウンロードとインストール

  1. Windows 環境上のWebブラウザでエンバカデロのWebサイトを開きます。
  2. 上部ツールバーらしきところから[製品] - [RAD Studio] - [無料トライアル]を選択して、「トライアル版ダウンロードページ」を開きます。
  3. 必要登録事項を記入し(お名前、メールアドレス、アカウントパスワード、会社名、電話番号等)、[トライアルのダウンロード]ボタンをクリックします。
  4. 下記のような画面が表示されます。この画面で注目すべきところは以下二つ
    • トライアルライセンスキー(シリアルナンバー)が先ほど登録されたメールアドレスに送られているということ
    • インストーラーのダウンロードが始まっているので、それを保存しておくこと。ダウンロードが始まらない場合には、画面内に表示されているであろう「こちらをクリック」をクリックしてダウンロードをすること Image may be NSFW.
      Clik here to view.
      trialdownload.PNG
  5. インストーラーのダウンロードが終わったら、インストーラーを実行しましょう。ダウンロード後に表示される「実行」をクリックしても良いですし、ダウンロードフォルダ内にあるインストーラーをダブルくクリックしても良いです。
  6. インストーラーのウイザードに表示されるガイダンスに従ってインストールをすすめていきます。
  7. 下記画面の選択画面に来たら、「製品のSerial Numberをすでに入手している」を選んで、[インストール]をクリックします。
    Image may be NSFW.
    Clik here to view.
    image
    • シリアルナンバーなんて入手してないよ!というフレンズは、メールを確認してみてください。先ほどトライアル版をダウンロードする際に登録したメールアドレス宛に、「インストール番号」としてシリアル番号が届いているはずです。
  8. インストールが進んでゆきます…しばしお待ちを。
  9. 下記の「Embarcadero製品登録」が表示されます。[Serial Number]の欄に、メールにて「インストール番号」として届いている文字列を入力して[登録]ボタンをクリックしてください。 Image may be NSFW.
    Clik here to view.
    image
  10. 途中、RAD StudiuoがWindowsファイアーウォールでブロックされている旨のメッセージが表示されるかもしれません。その場合には「アクセスを許可する」を選んでおいてください。
  11. 「RAD Studio プラットフォーム選択」のウインドウが表示されます。ここで表示されているプラットフォームのリストについて簡単に説明しておきます。

    • Delphi Windows 64-bit Enterprise : Delphiを使ってWindows 64-bitで動作するアプリ、サーバサイドなどを構築できます。
    • Delphi Windows 64-bit Enterprise : Delphiを使ってWindows 32-bitで動作するアプリ、サーバサイドなどを構築できます。
    • Delphi OS X Enterprise : Delphiを使ってmacOS上でで動作するアプリを構築できます。
    • Delphi Linux Enterprise : Delphiを使ってLinux上でで動作するサーバーサイドロジックを構築できます。
    • Delphi iOS Enterprise : Delphiを使ってiOS上でで動作するアプリを構築できます。
    • Delphi Android Enterprise : Delphiを使ってAndroid上でで動作するアプリを構築できます。
    • C++Builder ~ となっているものは、上記のDelphiの説明と同じ機能が、C++Builderを使ってC++言語にて書けるものであります。C++使いはこちらもご利用ください。 Image may be NSFW.
      Clik here to view.
      image
  12. 上記のダイアログで必要なプラットフォームにチェックを着けたら(後でも追加インストールできるので、あんまり心配する必要はありません)、[続行]をクリックします。

  13. 「RAD Studio 追加オプション」のダイアログが表示されます。ここで表示されている追加オプションについてついて簡単に説明しておきます。

    • 追加の言語 : 言語のサポートパックです。日本語を利用するなら日本語言語パックを導入しておきましょう。
    • Samples : サンプルプログラムがインストールされます。インストールしておくこと推奨しますが、別途、ネット上のリポジトリから最新のサンプルをダウンロードして入手することもできます。
    • Help : インストールを推奨します。ヘルプファイルです。わからないことがあったらF1キーで呼び出せます。
    • IntraWeb : Delphi/C++Builderのドラッグアンドドロップを基本とした開発手法そのままにWebアプリの開発(サーバーサイドロジックの開発)を行うことができます。ただ、v4ベースなので、昨今のiOSアプリが求めるv6ベースには適合しません。
    • TeeChart Standard : グラフ、チャート作成表示コンポーネントライブラリです
    • DUnit Testing Frameworks : ユニットテストの作成と実行が行える
    • InterBase Express : IntarBaseというデータベースに接続ができるミドルウエア。現在はFireDACという強力なデータベース接続フレームワークがあるので、これからプロジェクトに取り掛かる人には必要なし
    • InterBase XE7 Developer Edition : データベース。開発者用。商用利用する際には、別途ライセンスが必要。 Image may be NSFW.
      Clik here to view.
      image
  14. 上記のダイアログで必要なオプションにチェックを着けたら(後でも追加インストールできるので、あんまり心配する必要はありません)、[インストール]をクリックします。

  15. インストールが進んでゆきます…しばしお待ちを。(インターネット上から必要なファイルをダウンロードしてインストールしているので、インターネット回線が切断されないようご留意ください。回線が切断されますと、のちにインストールが失敗する可能性があります)

  16. インストールが完了すると「操作が完了しました」と表示がされます。[作業開始]をクリックしてください。

  17. RAD Studio 10.2 Tokyo (2017年4月1日現在)が起動します。これでインストールは完了です。

  18. 追加の開発プラットフォーム、オプションをインストールしたい場合には、RAD Studio / Delphi / C++Builder を起動して表示されている上部ツールバーの[ツール] - [プラットフォームの管理...]をクリックしてください。 「RAD Studio プラットフォーム選択」ダイアログが表示され、プラットフォーム、追加オプションを選んで、インストールすることができます。

Image may be NSFW.
Clik here to view.
image

トラブルシューティング

インストールしてたらエラーーが出ちゃったよ~!という方のためのトラブルシューティングをいくつか記載しておきます。

  • エラーが出た時点で、すでにRAD Studioのアイコンがデスクトップ上に出ていて、RAD Studioが起動できる状態になっている場合、上記の「手順18」に記載の方法で、「追加のプラットフォーム」のウインドウを呼び出して、そこで、インストールされていない開発プラットフォームのインストールを試みてみてください。
  • エラーが出た時点で、まだRAD Studioのアイコンがデスクトップ上にない場合には、「Windowsのプログラムと機能」を確認し、RAD Studioがインストールされた状態になっていれば、アンインストールしてください。その後、再度インストールを実施してください。
  • 再インストールを試みてもうまくいかないのであれば、一度、アンインストールの後、再度インストールすることで改善する場合もあるのですが、それでも、うまくいかない、という場合にはRAD Studioを手動でアンインストールしてきれいにしてから、再インストールすることでうまく行くこともあります。手動アンインストールの方法はこちらをご参照ください。

以上

FireDAC and Microsoft Azure SQL Database

I've started to get requests to use FireDAC with Cloud Databases, like SQL Azure.  The question whether or not to put your business data in the cloud is getting easier and easier these days and a lot of that is thanks to Microsoft's investment in Microsoft Azure.  Microsoft's strategy to create an infrastructure, like Microsoft Azure SQL Database, that can manage big data (as big as petabyte-scale) and everything on down from that is working and it's working well. 

In this post, we’ll see how FireDAC can connect and use a Microsoft SQL Azure database.

For this post, I'll be using this Microsoft Azure SQL database called "mySampleDatabase" following the steps described here:

Image may be NSFW.
Clik here to view.
MicrosoftAzure_1

For the FireDAC connection we also need to know the Microsoft Azure Server name for the database, as we see here is:  firedac.database.windows.net

Image may be NSFW.
Clik here to view.
MicrosoftAzure_2

And lastly, we also need the Login and Password to connect to the SQL Azure database:

Image may be NSFW.
Clik here to view.
MicrosoftAzure_3

From the FireDAC docwiki on Connect to Microsoft SQL Server (FireDAC) it says:

The FireDAC native driver supports Microsoft SQL Azure.

And for Windows Client Software:

FireDAC requires one of the Microsoft SQL Server x86 or x64 ODBC drivers to be installed on the workstation:

  • SQL Server ODBC driver as the connectivity for SQL Server 2000. Most likely, the ODBC driver is already installed on your workstation. If not, see details.
  • SQL Native Client as the connectivity for SQL Server 2000 and 2005. We strongly recommend that you have SQL Native Client installed, if your application has to work with SQL Server 2005. See Microsoft SQL Server Native Client.
  • SQL Server Native Client NN.N as the connectivity for SQL Server 2000, 2005, 2008, 2012, and SQL Azure. We strongly recommend that you have SQL Server Native Client NN.N installed, if your application has to work with SQL Server 2008, 2012, or SQL Azure. See Microsoft SQL Server 2008 Native Client.
  • SQL Server Native Client 11.0 as the connectivity for LocalDB.

For my example, I'm using the SQL Server Native Client 11.0 for SQL Azure.

The docwiki also tells us for the Driver Linkage:

To link the driver:

 And lastly, the docwiki also includes this sample SQL Azure FireDAC connection string:

  • Connect to SQL Azure. Note the "@<server>" suffix in User_Name and the "tcp:" prefix in the Server parameters:
DriverID=MSSQL
Server=tcp:nasdfert6.database.windows.net
Database=Northwind
User_Name=addemo@nasdfert6
Password=asd123zxc
Encrypt=Yes
MetaDefSchema=dbo
MetaDefCatalog=Northwind

So now we have all the information we need to create a FireDAC connection to our mySampleDatabase SQL Azure database.

Using 10.2 Tokyo:

1. Create a new Delphi or C++ Builder VCL or Multi-Device Application (Blank Application).

2. Drop a FDConnection and a FDPhysMSSQLDriverLink component onto the form: 

Image may be NSFW.
Clik here to view.
FDConnectionSQLAzure

3. Double-click the FDConnection component to display the FireDAC Connection Editor:

Image may be NSFW.
Clik here to view.
FDConnectionEditor

In my case, the minimum needed parameters for FireDAC to connect to my SQL Azure database are:

DriverID=MSSQL
Server=tcp:firedac.database.windows.net
Database=mySampleDatabase
User_Name=EMBT@firedac
Password=FireDAC!

After entering these values in the FireDAC Connection Editor, you can click the TEST button to verify the Connection established successfully:

Image may be NSFW.
Clik here to view.
FDConnectionTEST

You can also select the Info tab on the FireDC Connection Editor, and verify the Connection definition parameters, FireDAC Info, Client Info (including showing the ODBC or Native Client driver being used), and Session Information:

Image may be NSFW.
Clik here to view.
FDConnectionInfo

4. Next, we can drop a FDQuery component onto the form:

Image may be NSFW.
Clik here to view.
FDQuery

5. Double-click the FDQuery component to display the FireDAC Query Editor and enter this SQL Command tab:

SELECT TOP 20 pc.Name as CategoryName, p.name as ProductName

FROM SalesLT.ProductCategory pc

JOIN SalesLT.Product p

 

ON pc.productcategoryid = p.productcategoryid;

Image may be NSFW.
Clik here to view.
FDQuerySQLExecute

6. Click the Execute button on the FireDAC Query Editor and verify that your data results get returned from the SQL Azure database:

Image may be NSFW.
Clik here to view.
FDQueryResults

7. To display the data results on our RAD Studio Client application, let's drop a TStringGrid component onto the Form:

8. Using Visual Live Bindings, let's bind the results from the FDQuery to the TStringGrid.  Right-click on the Form and select Bind Visually... or on the Form Designer | right-click the TString component | Bind Visually:

9. On the LiveBindings Designer, select the * member of the FDQuery component, and connect it to the * member of the StringGrid component:

Image may be NSFW.
Clik here to view.
LiveBindingsDesigner

10.  Using the Object Inspector, if you set the Active property of FDConnection and FDQuery to True, then you should see Design-Time data on the StringGrid, like this:

Image may be NSFW.
Clik here to view.
FDQueryActive

Image may be NSFW.
Clik here to view.
DesignData

11.  Lastly, let's add a button on the Form, with Text property = "Get data SQL Azure".

12.  Double-click the Button, and for the Button1Click event, let's call the Open method of the FDQuery, like this:

 procedure TForm2.Button1Click(Sender: TObject);

begin

FDQuery1.Open();

end;

13.  Run the application, click on the "Get data SQL Azure" button, and verify FireDAC connects to the SQL Azure database and returns data on the StringGrid, like this:

Image may be NSFW.
Clik here to view.
SQLAzureRun
 

14.  Congratulations!   The steps in this post shows how easy it is to use FireDAC with Microsoft’s SQL Azure database!  We saw how easy it is to create a FireDAC connection to a SQL Azure database, connect to the SQL Azure database, and return data from the remote SQL Azure database to our RAD Studio multi-device or VCL clients. 

[DownloadButton Product='RAD' Caption='To try FireDAC with Cloud Databases or any other supported database, please download RAD Studio and try it yourself']

 

 

Zweite Deutsche CodeRage: Termin steht

Image may be NSFW.
Clik here to view.

Nur schon vorab ein kleiner Hinweis:

Der Termin für die zweite Deutsche CodeRage steht: Wir haben den 22. Juni 2017 festgemacht.

Es erwarten einen eine Vielzahl von Vorträgen zu RAD Studio, C++Builder und Delphi. Aber auch konzeptionelle und praktische Vorträge.

Die Deutsche CodeRage ist eine kostenfreie Onlinekonferenz, die auch diesmal in deutscher Sprache gehalten wird. Zur Zeit planen wir ein Programm von morgens (09:00) bis abends (19:00) mit unterschiedlichen Vorträgen. Sprecher werden sein: Dr. Holger Flick, Bernd Ua, Volker Hillmann, Roman Kassebaum, Matthias Eißing und noch weitere....

Anmeldung und weitere Infos demnächst hier.


Tech Tipp #1: Neuerungen in TDBImage: JPEG Bilder

Image may be NSFW.
Clik here to view.

Frage: In Delphi 10.2 Tokyo/C++Builder 10.2 Tokyo soll es ja die Möglichkeiten geben, daß man auch JPEG Grafiken aus einer Datenbank direkt in einem TDBImage anzeigen lassen kann. Zur Design-Zeit sieht auch alles gut aus:

Image may be NSFW.
Clik here to view.

(Eine FireDAC Tabelle mit einer JPEG Grafik)

Zur Laufzeit bekomme ich aber einen blöden Fehler:

Image may be NSFW.
Clik here to view.

Was mache ich falsch?

Antwort: Fast alles richtig gemacht. Man muss nur noch eine Unit einbinden, die dann auch die Umsetzung (JPEG) macht:

uses
[....], VCL.Imaging.JPEG [...];

Dann klappt's auch

Image may be NSFW.
Clik here to view.

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

Image may be NSFW.
Clik here to view.

Am Donnerstag, den 22. Juni, findet die Zweite 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 wie Volker Hillmann, Bernd Ua, Roman Kassebaum, Olaf Monien, Dr. Holger Flick und Matthias Eißing bringen Ihnen kompakt die neusten Technologien, Tipps & Tricks, Paradigmen und Best Practices für Delphi und C++Builder nahe.

Die Sprecher möchte ich hier kurz vorstellen:

Olaf Monien

Image may be NSFW.
Clik here to view.
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

  • Implementation des Facebook Login-Verfahrens mit Firemonkey-Anwendungen auf Desktop und mobilen Plattformen

Bernd Ua

Image may be NSFW.
Clik here to view.

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

  • Linux und Apache Entwicklung

Roman Kassebaum

Image may be NSFW.
Clik here to view.

Roman hat 1996 Pascal an der Universität Paderborn gelernt, wo er mit einem Master-Abschluss absolvierte. Er begann mit Turbo Pascal 7.0 und verwendete alle Versionen von Delphi von 1 bis zum aktuellen Delphi. In den letzten Jahren hat er auch mit dem C ++ Builder gearbeitet.

Roman ist Delphi MVP und ein Embarcadero Technology Partner. Er arbeitete an verschiedenen Arten von Projekten in nationalen und internationalen Teams in Deutschland, Australien, USA, Frankreich, Spanien und Neuseeland.

Während der letzten Jahre hat er spezielle Fähigkeiten in der Arbeit an Legacy-Code, vor allem bei der Migration zu neueren Delphi-Versionen, entwickelt.

Roman lebt in Bünde mit seiner Frau und seinen Söhnen. In seiner Freizeit spielt er gerne Schach, wo er einen FIDE Meistertitel hält.

Roman hält den Vortrag

  • Vorstellung von TMSPassKit

Dr. Holger Flick

Image may be NSFW.
Clik here to view.

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 die beiden Vorträge

  • Komponentenentwicklung
  • FireDAC

Volker Hillmann

Image may be NSFW.
Clik here to view.
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

  • Modernes C++ und Komponenten, ein einfacher Web- Server
  • Erstellen einer mobilen Anwendung (für Desktop-Entwickler)
  • Back to C++, Migration zurück zu C++

Matthias Eißing

Image may be NSFW.
Clik here to view.
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!

 

Tech Tipp #4: Kaputter Compiler oder Layer 8 Problem?

Image may be NSFW.
Clik here to view.

Frage: Ich habe folgenden Quelltext (stark vereinfacht dargestellt):

var
  a,b,c : Integer;
begin
  a := 1;
  b := 2;
  if (a<10) or (b<10) or (a+b<10) then
  begin
     c := 3;
     exit;  // <-----
  end;
  MachIrgendWas();

Der Methodenaufruf "MachIrgendWas()" wird nur dann angesteuert, wenn das "exit" (siehe Pfeil) auskommentarisiert wird. Das hängt doch alles vom "IF" ab!!! Warum?

Antwort: Zuerst muss man sagen, daß diese Darstellung hier ganz bewusst STARK vereinfacht dargestellt wird.... so daß dies dem ambitioniertem Entwickler sofort auffällt: Die IF-Bedingung wird immer erfüllt. Und damit wird auch immer EXIT aufgerufen. "MachIrgendWas" wird als Statement/Ausdruck damit gar nicht mehr übersetzt und mit in das Executable aufgenommen. Und der Compiler optimiert das einfach weg.

Soweit, so einfach..... Trickreich wird das erst, wenn man komplexere Ausdrücke in der IF-Bedingung stehen hat, die man als normalsterblicher Programmierer nicht mehr sofort überblickt; die sich vielleicht aus Ausdrücken erst berechnen (die aber schon zur Compile-Zeit auswertbar sind).

Also Augen auf, bei IF <Bedingung> then begin .... exit .... end!

Tech Tipp #5: Sauberer Start der IDE (ohne Fremdherstellerkomponenten und -erweiterungen)

Image may be NSFW.
Clik here to view.

Frage: Meine IDE stürzt 'ständig' ab. Wo liegt das Problem? Wann erscheint ein Fix dafür?

Antwort: Häufig (in weit mehr als 90% aller mir untergekommenen Fälle) ist daran eine IDE-Erweiterung, in Form eines Plug-Ins oder einer Komponenten-Sammlung, schuld. Das kann man zumindest rudimentär oder vollständig überprüfen.

Wichtiger Hinweis: Ich zeige hier einige Bildschirmfotos von/mit "CnPack / CnPack IDE Wizards", die "Jedi Visual Component Library" (Binary Installer hier vorher die Jedi Code Library) und die "GExperts", die nur als Beispiel dienen. Ich möchte in keinster Weise diese IDE-PlugIns diskreditieren.

Es kann durchaus sein, daß sich diese Plug-Ins / Komponentensammlungen mit der IDE beißen.... also erstmal testen, wie sich die IDE verhält, wenn diese nicht geladen werden. Dazu gibt es Kommandozeilenparameter für die IDE (BDS.EXE -parameter), die auch hier dokumentiert sind:
http://docwiki.embarcadero.com/RADStudio/Tokyo/de/IDE-Befehlszeilenoptionen

Hier findet sich nun ein Parameter, der die IDE in einer Standardkonfiguration startet: Parameter "r", wie "Registry"

Man startet also die IDE mit diesem Parameter (Achtung: Keine Leerstelle/Space zwischen dem Parameter und dem beliebigen Namen):

Microsoft Windows [Version 10.0.15063]
(c) 2017 Microsoft Corporation. Alle Rechte vorbehalten.

C:\Users\Matthias>"c:\Program Files (x86)\Embarcadero\Studio\19.0\bin\bds.exe" -rOhneIrgendwas

Die IDE wird dann ohne PlugIns und Komponenten gestartet (Ausnahme GExperts, die sich festbeissen). Hier kann man nun überprüfen, ob es denn generell an einem PlugIn gelegen hat, wenn die IDE dann stabil läuft.

Hintergrund: Es wird ein neuer Registry Zweig erzeugt mit den Standard-Einstellungen der IDE unter

HKEY_CURRENT_USER\Software\Embarcadero\OhneIrgendwas

Es werden dazu die Standardwerte von HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Embarcadero\BDS auf den CURRENT-USER-Zweig kopiert unter Zuhilfenahme des angegeben Registry-Zweigs:

Image may be NSFW.
Clik here to view.

(Die GExperts tragen sich auch unter HKEY_LOCAL_MACHINE ein)

Der Registry-Zweig "OhneIrgendwas" bleibt bestehen und kann jederzeit wieder über den Parameter -r benutzt werden. Man kann ihn aber auch in der Registry löschen

Wo liegen die Einschränkungen ("nur rudimentäre Überprüfung")?

Die Einschränkungen liegen darin verborgen, daß man ein bestehendes Projekt nicht mehr fehlerfrei/warnungsfrei öffnen kann, wenn man Komponenten benutzt

Tech Tipp #6: Neue Tools über GetIt: Beyond Compare und CodeSite Express

Image may be NSFW.
Clik here to view.

Frage: Wo sind die IDE-Plug-Ins "Beyond Compare" und "CodeSite Express" in der IDE?

Antwort: Seit einigen Tagen sind diese über GetIt (Tools | GetIt-Package-Manager) verfügbar.

Man findet diese leicht und schnell und der Kategorie "IDE Plugins":

Image may be NSFW.
Clik here to view.

Was ist Beyond Compare?

Beyond Compare ist ein sehr gutes Vergleichswerkzeug (diff, visual diff, Text-compare), mit dem man schnell und leicht Unterschiede in seinen (Text) Dateien feststellen kann. Dieses "plugged" sich dann auch in die IDE ein:

Vorher (In der Historienansicht -> Unterschiede)

Image may be NSFW.
Clik here to view.

Nachher:

Image may be NSFW.
Clik here to view.

Dadurch öffnet sich der externe Betrachter:

Image may be NSFW.
Clik here to view.

Dieser hat auch eine Vielzahl von Funktionen, die hier sehr gut beschrieben sind.

(Es handelt sich dabei um Beyond Compare Lite 4 in einer "RAD Studio Edition; Version 4.1.5). Die Vollversion bietet auch außerhalb der IDE Möglichkeiten lokale Dateien, Verzeichnisse und auch binäre Dateien zu vergleichen.

Was ist CodeSite Express?

CodeSite Express ist ein Logging System, um zur Laufzeit herauszufinden, wie sich Code verhält und die gespeicherten Ergebnisse (nachträglich) zu betrachten. Dazu gibt es Klassen (wie TCodeSiteLogger). Es handelt sich hierbei auch um eine "Lite" Version ("Express"), die aber grundlegende Funktionen mitbringt. Unterschiede findet man hier. Eine Einführung ist in der Onlinehilfe integriert:

Image may be NSFW.
Clik here to view.

Viewing all 167 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>