さて、今年も Delphi Advent Calendar 2015 が始まりました!
これは Delphi Advent Calendar 2 日目の記事です...でもね、ネタがないんですよ。そこで今回は幾つかの小ネタをまとめて記事にする事にしました。
ドヤァ!
いきなりの出オチですが "でるお (仮)" です。以前はパワポに貼り付けられるように emf 形式のファイルを同梱していましたが、今回はそれに加えて SVG ファイル (プレーン SVG) も同梱してみました。
今時のブラウザで SVG が表示できない事はなく、ベクター形式なので拡大/縮小してもキレイなままなので潰しが利くと思います。試しに、ブラウザで〔Ctrl〕+〔マウスホイール〕をグリグリしてみてください。
でるお(仮) の画像はパワポで emf 形式のファイルを作成し、Inkscape を使って SVG ファイルに変換しました。
Download: deruo_20151201.zip
先日紹介した Visual Studio Code ですが、Delphi のインストールパスやソースパスを指定しても、コード補完が利かなかったり、パラメータヒントが出なかったりしたので何故だろうと悩んでいましたが、理由が判明しました。
結論を書くと、
これを守ればちゃんと補完が利くようです。開いたファイルが UTF-8 で文字化けしてしまう場合には、
これで OK です。Visual Studio Code は随時更新されているようなので、たまには [Help | Check for Updates...] で更新を確認してみてください。
さて、思うところあって Wikipedia の Delphi ページを書き換えました。実は関連する C++ Builder と RAD Studio もちょっとだけ書き換えたのですけれど (^^;A
...それはいいのですが、箇条書きだと Delphi のどのバージョンでどの OS がサポートされてるのかわかりにくいです。ソースは DocWiki なのですが、これがまた探しづらい。
判りにくいのはマルチプラットフォームになった XE2 以降なので、XE2 以降の Delphi のバージョンとサポートしている OS のバージョンを一覧にしてみました。
Windows (開発環境) | OS X (PAServer) | OS X (アプリケーション) | iOS (アプリケーション) | Android (アプリケーション) | |
Delphi XE2 |
Windows 7 Windows Server 2008 Windows Vista Windows Server 2003 (SP1) Windows XP (SP3) |
OS X 10.7 (Lion) OS X 10.6 (Snow Leopard) |
OS X 10.7 (Lion) OS X 10.6 (Snow Leopard) |
iOS 5.x iOS 4.2 |
|
Delphi XE3 |
Windows 8 Windows 7 (SP1) Windows Vista (SP2) Windows Server 2008 |
OS X 10.8 (Mountain Lion) OS X 10.7 (Lion) OS X 10.6 (Snow Leopard) |
OS X 10.8 (Mountain Lion) OS X 10.7 (Lion) OS X 10.6 (Snow Leopard) |
||
Delphi XE4 |
Windows 8 Windows 7 (SP1) Windows Vista (SP2) Windows Server 2008 |
OS X 10.8 (Mountain Lion) OS X 10.7 (Lion) |
OS X 10.8 (Mountain Lion) OS X 10.7 (Lion) |
iOS 6 iOS 5.1 |
|
Delphi XE5 |
Windows 8 Windows 7 (SP1) Windows Vista (SP2) Windows Server 2008 |
OS X 10.9 (Mavericks) OS X 10.8 (Mountain Lion) |
OS X 10.9 (Mavericks) OS X 10.8 (Mountain Lion) OS X 10.7 (Lion) |
iOS 7 iOS 6 |
Android 4.4 (KitKat) Android 4.1.x、4.2.x、4.3.x (Jelly Bean) Android 4.0.3、4.0.4 (Ice Cream Sandwich) Android 2.3.x (Gingerbread) |
Delphi XE6 |
Windows 8, 8.1 Windows 7 (SP1) Windows Vista (SP2) Windows Server 2008 |
OS X 10.9 (Mavericks) OS X 10.8 (Mountain Lion) |
OS X 10.9 (Mavericks) OS X 10.8 (Mountain Lion) OS X 10.7 (Lion) |
iOS 7 iOS 6 |
Android 4.4 (KitKat) Android 4.1.x、4.2.x、4.3.x (Jelly Bean) Android 4.0.3、4.0.4 (Ice Cream Sandwich) Android 2.3.x (Gingerbread) |
Delphi XE7 |
Windows 8, 8.1 Windows 7 (SP1) |
OS X 10.10 (Yosemite) OS X 10.9 (Mavericks) OS X 10.8 (Mountain Lion) |
OS X 10.10 (Yosemite) OS X 10.9 (Mavericks) OS X 10.8 (Mountain Lion) |
iOS 8 iOS 7 |
Android 4.4 (KitKat) Android 4.1.x、4.2.x、4.3.x (Jelly Bean) Android 4.0.3、4.0.4 (Ice Cream Sandwich) Android 2.3.x (Gingerbread) |
Delphi XE8 |
Windows 10 Windows 8, 8.1 Windows 7 (SP1) |
OS X 10.10 (Yosemite) OS X 10.9 (Mavericks) |
OS X 10.10 (Yosemite) OS X 10.9 (Mavericks) |
iOS 8 iOS 7 |
Android 5 (Lolipop) Android 4.4 (KitKat) Android 4.1.x、4.2.x、4.3.x (Jelly Bean) Android 4.0.3、4.0.4 (Ice Cream Sandwich) |
Delphi 10 Seattle |
Windows 10 Windows 8, 8.1 Windows 7 (SP1) |
OS X 10.11 (El Capitan) OS X 10.10 (Yosemite) OS X 10.9 (Mavericks) |
OS X 10.11 (El Capitan) OS X 10.10 (Yosemite) OS X 10.9 (Mavericks) |
iOS 9 iOS 8 iOS 7 |
Android 5 (Lolipop) Android 4.4 (KitKat) Android 4.1.x、4.2.x、4.3.x (Jelly Bean) Android 4.0.3、4.0.4 (Ice Cream Sandwich) |
関連して、以下のトピックも更新してあります。
余談ですが、私は C++Builder に詳しくないので (Delphi も言うほど詳しくはないですけどね)、どなたか C++Builder のページを適宜書き換えていただけると幸いです m(_ _)m
BlueStacks という Windows で動作する Android エミュレータがありまして、ちょっと細工すれば Delphi 製 Android アプリが動作します。XE5 / Appmethod 1.13 では細工なしに動作していたのですけどね。
しかしながらこの BlueStacks、独自のガワが被せてあり、常駐もするしで開発用の Android エミュレータとして使うには少々使い勝手がよくありません。そこでオススメするのが当サイトでも紹介している Android-x86 です。Android-x86 は任意の VM に Linux としてインストールする事で動作します。
以前は Android-x86 上で Delphi 製 Android アプリは動作しなかったのですが...
以下の手順で Android-x86 上でも Delphi 製 Android アプリが動作するようになります (10 Seattle 用)。
具体的には、
|
VM の Android-x86 がデバイスとして認識されない場合には、VM のネットワーク設定を見直し、adb connect (IP アドレス) をやってみましょう。詳細についてはこちらをどうぞ。
Android-x86 は "Generic Android-x86" として認識されます。
今回はちょっと VM の用意が間に合わなかった (ウチの回線は貧弱なのです) ので、Aspire One 実機にインストールした Android-x86 で試していますが...
ご覧の通りですよ! \(^o^)/
Android-x86 を VM で起動してデバッグ環境として使うのもアリですが、押し入れに眠っているネットブックを引っぱり出してきて Android-x86 をインストールしてアプリを作ってみるのも楽しいかもしれませんね。2015 年のロードマップでは、Atom (Intel) な Android に対応するためのコンパイラの登場も示唆されていますし、今後がますます楽しみです。
See Also:
では今回はここまでとさせていただきますね。まとまりのない乱雑なトピックで申し訳ありませんでした m(_ _)m
これは Delphi Advent Calendar 2015 7 日目の記事です。
長らく「Delphi にはファイルコピーの機能がない」と言われてきました。今までどうやってファイルコピーをしていたのかと言うと、Windows API の CopyFile() を使うなり、AssignFile() を使うなり、TFileStream を使うなり、Shell API の SHFileOperation() を使っていました。
ですが、Delphi 2010 からは IOUtils の TFile クラスにある Copy() メソッドを使ってファイルコピーを行えるようになっています。
|
とても簡単ですね。では、今回はここまでとさせていただ...く訳ないでしょう? (^^;A
ローカルコピーは IOUtils.TFile.Copy() を使えばいいのですが、それ以外では?
何も第28回デベロッパーキャンプのおさらいをしようってんじゃありません。"それ以外" というのはこういう意味です。
[uFileGet.pas] |
|
コメント行でバレバレですが、このユニットを使うと、FileGet() という単一の関数だけで、
いずれからでもコピー可能です (もちろん個別にクラスを使ってもいいのですが)。中で使ってるロジックは Mr.XRAY さんトコのとふーさんトコのコードをパクってあります (w
これを使えば大抵のサーバ (オンプレミスを含む) からファイルを持って来れますね。
ZIP ファイルの解凍方法はこのサイトに Tips があります。
XE2 以降では System.Zip.TZipFile を使えばいいのですが、それ以前だと何らかのライブラリが必要となります。Tips では TurboPower Abbrevia は 2010 以降としてありますが、最近確認してみた所、Delphi 6 以降のすべてのパッケージが揃っているようです。
そうなると、この辺もまとめてみたいですよね、こんな感じで。
[uZipUtils.pas] |
|
Delphi 6~10 Seattle まで、DecompressZip() という同一の関数で解凍できます。XE 以前の環境には TurboPower Abbrevia をインストールする必要がありますけどね。
上記二つのコード (ユニット) に、第28回デベロッパーキャンプ でご紹介した uIOUtilsEx を組み合わせれば、何ができるでしょう?
そう、アプリケーションの (自動) アップデータを実装できます。今回の Advent Calendar の記事は、アップデータの実装を行う記事となります。
アプリケーションのアップデータを実装するには2つの方法があります。
前者は最初期のリリースからアップデータを配布しておく必要があります。途中でアップデータを配布するのは面倒です。何故ならば、ショートカットがアプリケーションを指しており、これを変更する手間が必要になるからです。 長所としては、アプリケーションの更新タイミングがシビアではないという事です。アップデートファイルを元々のアプリケーションフォルダに直接展開できます。
後者は後付けが可能です。但し、自身を再起動させる必要があるため、ファイルコピーのタイミングがちょっとシビアです。下手をするとファイルが使用中である可能性があります。
ぶっちゃけた話、自動アップデートをやってくれるクラスが公開されているのですが、ネットワーク関連で Indy ではなく Synapse を使っていたり、古い Abbrevia を使っていたり、説明とコードの記述が異なっていたりしますので、自分で作った方が早いと思います。
折角なので、当サイトで公開している IBConsole 日本語版+α にアップデート機能を組み込んでみました。
アップデートチェックが行われた時の動作は以下の通りです。
|
|
この方法だと毎回、更新ファイルに含まれている update.exe を起動するので、配布ファイルの構成が変わったり何か問題が起きても update.exe にパッチ的な何かを仕込む事ができます。 アプリケーション固有のコードが書いてあるため、アップデートチェックや update.exe のソースコードは公開しませんが、やっている事は上記の通りなので参考にして実装するのは難しくないと思います。
既にアーカイブも用意してあります。Unicode 版なら rel.62、ANSI 版なら rel.98 を DL してアップデートチェックを行うと それぞれ rel.63 と rel.99 に更新されます (このバージョンはアップデートチェック用のバージョンで、機能に差異はありません)。
uFileGet.pas や uZipUtils.pas は VCL 関連ユニットを uses していないので、FireMonkey でも動作するハズです。業務アプリ等にこういったアップデータを仕込めば Active Directory でない (使えない) 環境でも、配布が楽になりますね!
Delphi Advent Calendar 2015 用の記事に対するご意見ご感想などありましたら、Delphi Forum までどうぞ。では今回はこの辺で!
BACK | 古いのを読む | 新しいの読む |