参加しました!
うん、ちょっと失敗した (てへぺろ)。
デモの神様が荒ぶる荒ぶる。お供え物が必要なレベルでした。
Delphi が Linux 対応します (クロスコンパイラ)。正式な製品は来年3月くらいでしょうか?
デブキャン情報だと Ubuntu と Redhat に対応するようですが、Redhat に対応するなら CentOS 7 とかでも動作する可能性が高いですね。
デベロッパーキャンプで使おうと思い用意していた秘密兵器 (?)。
が。デモの神様の関係で使わない事に。あまりにも勿体ないのでソースコードを公開。
|
|
|
操作は画像にある通りですが、一応解説しておきます (Windows 10 を想定)。
キー | Windows | 備考 |
↑ | 〔Win〕+〔+〕 | ズームイン (拡大) |
↓ | 〔Win〕+〔-〕 | ズームアウト (縮小) |
← | 〔←〕 | 前へ |
→ | 〔→〕 | 次へ |
A | 〔Ctrl〕+〔Win〕+〔←〕 | 前の仮想デスクトップへ |
B | 〔Ctrl〕+〔Win〕+〔→〕 | 次の仮想デスクトップへ |
ノートパソコンのキーボードでももちろんやれるのですが、〔Ctrl〕+〔Win〕+〔→〕とか3キーのコンビネーションはキッチリ押されず不発になったりするので、ボタン一発操作が確実なのです。
ある意味、今回のデベロッパーキャンプの最大の目玉。
イラストレーターはおといちさん。
この度 "Delphi" のイメージキャラクター神野甘音のデザインとイラスト担当させて頂きました。掲載の許可を頂きましたのでご紹介です。皆さま宜しくお願いします! #dcamp_jp pic.twitter.com/erlBSjIJMq
— おといち (@oto_ichi3) 2016年12月10日
10.1 Berlin Update 2 をインストールしたら、起動時に DBX のパッケージがボコボコエラーになってたんですが「まぁ DBX 使わないからいいか...」と放置していました。
さて、久しぶりに Android のプロジェクトでもビルドしてみるかとやってみたら paclient error 217 が出てデプロイできないんです (コンパイルは正常に終わっている)。ググってみると全く同じ話が公式フォーラムにもありました。
「再インストールしたら直った」とかありますが、そんなのは解決方法じゃありません。やだよもう一回あの作業やるの。で、さらにググってみたら興味深い記事が。
これ、そもそもの原因は DBX パッケージなのだそうですよ...一見すると全く関係なさそうなんですけどね。
具体的な解決方法は、
配置の際に DBX に依存している何かがあるのかな?DBX を使うのであれば、もちろん再インストールするなり、dbxconnections.ini と dbxdrivers.ini をちゃんとしたものに置き換える必要があります。
僕の場合には C:\Users\Public\Documents\Embarcadero\Studio\dbExpress\18.0 に dbxconnections.win と dbxdrivers.win があったので、
コレでイケました。
今年もやってます、Delphi Advent Calendar!
私は5日目と13日目に参加しました。
本日開催!
動画配信はあるのかな?
はっじまるよー♪
移行という事で、Delphi をそこそこ知っている人向けの記事です。
10.1 Berlin Starter Edition が無償化されたのは既報の通りです。言語に関する新機能は一通り試せますので、最新の (有償版) Delphi をお持ちでない方は Starter Edition を常用するといいでしょう。
但し、10.1 Berlin の何らかのライセンスを持っている場合...例えば有償版やトライアルのライセンスを持っている場合に Starter Edition をインストールしても Starter Edition にならない事があります。これはインストーラが SKU に関わらず同一だからです。
おかしくなってしまった場合には、ライセンスマネージャを用いて当該ライセンスを削除した上で、完全手動アンインストールを行いましょう。
無償版のリリースにより、また Delphi を触り始めたヒト...おかえりなさい。
昔々に遡れば、Delphi の情報はパソコン通信のニフティサーブにあった FDELPHI というフォーラムで得られました。このため、インターネット時代になっても @nifty のアットホームページを利用する方が多かったのです...Nifty の有料会員であれば、所謂ホームページを持てたので。
そして @Homepage が 2016/11/10 を以て終了しました。これにより、Delphi 関連サイトが一気に消失しました。現在、Delphi の新しい情報を得ようと思った場合、即応性が高いのは twitter や Facebook 等の SNS です (質問への回答が早いという意味ではありません)。
昔の貴重な情報が無くなったのは悲しい事ですが、昔の Delphi のネガティブな情報...特に現状に当てはまらないような文句や、「今ならそんな書き方しなくても済むのに...」といった更新されていないコードも一緒に消失したので悪い事ばかりでもないのかもしれません。
Facebook はともかく、Twitter はアカウント作らなくてもツイートは見れます (質問とかツッコミができるので本当はアカウント作った方がいいのですが)。以下のリンク先をブックマークしておくと、芋づる式に情報が得られるでしょう。
あ、こないだ僕が病気になったときにお亡くなりになっていたら今年末でこのサイトも消滅していた事に気付き、慌てて契約を数年分延長しました。
これでオリンピックイヤーまでは大丈夫デス (w
一覧にしたのは以下の機能:
IDE に統合されたソースコードフォーマッタは Starter Edition にはありませんが、細川さん作のプラグインでコマンドライン版コードフォーマッタを呼び出せば同等の事を行えます。
旧 IDE っぽくする方法はデブキャンでブッ込んでおきました。Castalia 拡張と Konopka 拡張は好みが別れると思います。
Castalia 拡張 (XE8 以降) の機能の一つであるクリップボード履歴は、表示していなくてもクリップボードの内容をキャプチャしてるため、例えばユーザー名やパスワードをコピペすると履歴に残ります。しかもこの履歴を消す方法がありません。
Castaliaとの統合で追加されたクリップボード履歴がパスワード管理ツールと併用するとセキュリティ的に微妙という話が某所で出てるけど、管理ツール全体のリスクじゃね?というのも正しいし、かといってオフにできない機能を提供するのもどうなんよ?というのも一理ある
— Lyna (@lynatan) 2016年11月26日
Konopka 拡張 (10.1 Berlin 以降) は主にプロパティエディタなのですが、例えば TAlign のプロパティエディタは、オブジェクトインスペクタをキーボードで使う人には不評です。カーソルキーでフォーカスが移動しないからです (TAB を使えば移動するけれど)。
Delphi 10.1 Berlin Update 2の新しいTAlign型のビジュアルなプロパティエディタを無効化するプラグイン Actual source for DisableAlignPropertyEditor https://t.co/OqIyfLtIKx pic.twitter.com/nN0oL6u1LK
— Owl's perspective (@owlsperspective) 2016年12月1日
好みが別れるのは GetIt で提供するようにすればいいのに。そんな Konopka 拡張ですが、一つだけオススメ機能があります。僕はこの機能を自作してました。
[クイックコピー名] という変な和訳になってしまっているのが残念ですが、意味合いはコンポーネント名のコピーです。
一覧にしたのは以下の機能:
言語仕様については「OBJECT PASCAL HANDBOOK を読め!」としか言いようがないですね。少々お高いのですが、DocWiki をあてもなくなく彷徨うより短期間で知識が得られます。
ライブラリについては、まずは System 名前空間内の把握ですかね。ここには VCL / FireMonkey 共通...つまりマルチプラットフォームで使えるものが増えています。
「何コレ?知らんぞ?」というのは一つや二つじゃないハズです。XE7 までくらいの強烈なリファクタリングは大体落ち着いたので、座標 / ベクトル / 行列関連レコード等も安心して使えます。
仕切り直して、はっじまるよー♪
まさかの Windows 再起動で記事をフッ飛ばしてしまいました。
イロイロ要因はあると思いますが...
今までリリースされた Delphi と、現状の Delphi を考慮すると上記のような結論に至ると思います。
Professional 版では DBX / FireDAC によるサーバー接続ができないので、以下のどちらかを選択する必要があります。
FireDAC C/S Pack を購入しても DBX でサーバー接続できるようにはならないし、DataSnap も使えませんので、イロイロ DB 接続したいのなら Enterprise 以上が必要になります。
そもそも Professional 版では DB サーバに接続できないとか全く理不尽な制限で、アップデートサブスクリプション強制になって製品価格が上昇しており、新規購入の場合には "19万も出して C/S アプリも作れない" という状況は、正直擁護のしようもありません。アップデートサブスクリプションに加入していれば毎年の費用はそうでもないのですが、アップグレードですらちょっと引く金額になっています (12万円超)。
なので、プロジェクトを移行したいけれど予算がない場合には Professional 版で IBX や ZeosLib を使う事も検討してみてください。なお、開発ツール自体を変えるとまずデスマーチ決定なのでやめておいたほうがいいと思いますヨ?
IBX + Firebird の組み合わせは DB にお金をかけられない場合に有効ですが、UTF8 だとおかしくなります。これは Interbase の UTF8 と Firebird の UTF8 の実装が異なるからです。今の Firebird では "Unicode_FSS ≒ UTF8" なので、Unicode_FSS にすれば UTF8 が使えますが、気持ち悪いなら IBX のファイルを3つだけプロジェクトフォルダにコピーし、ソースコードを修正して使いましょう。
[IBX.IBSQL.pas] - 関数を置き換えます |
|
[IBX.IBDatabase.pas] - 手続きの最後に追記します |
|
[IBX.IBExtract.pas] - 4行コメントアウトします |
|
ZeosLib は Starter Edition にもインストール可能で、以下の DB に対応しています。
大抵の DB にはつなげますよね。ただ、Stable (7.1.4) は XE7 までしか対応していないので、XE8 以降の定義を Zeos.inc に追加してやる必要があります。
[Zeos.inc] - 追記します |
|
最新の ZeosLib は大丈夫かもしれませんが、この Stable (7.1.4) は BLOB の扱いがアフォで、一行 SELECT する度に BLOB の中身をキャッシュします。簡単に言うと、SELECT 文を実行して Next するたびに BLOB フィールドのサイズずつメモリを食い潰します。考えなしに一万件回したりすると死ねます...お気を付けあれ。
Delphi では XE から正規表現が使えますが、パフォーマンスが出ない場合には小宮さんの SkRegExp を使う事を検討してみてください。ラッパークラスを使う分には高い互換性があります。
「正規表現使うと文字列抽出がスマートに書けますよー」と言って出したサンプルが 自分で作った [クイックコピー名] です。
[GetComponentNames.dpr] |
|
EXE を生成しておき、[ツール | ツールの構成] で登録しておけば、
...という使い方ができます。
こないだの雑談ネタなので省略します。
プリミティブ型のヘルパーは XE4 以降で使えます。標準のプリミティブ型のヘルパーが使いにくいのなら、ヘルパーを上書きしてしまえばいいのです。
[uAltHelper.pas] |
|
この Integer 型ヘルパーは ToString で桁区切りした文字列を返します。
See Also:
これ、実は第28回デブキャンでもやってます。
自由に改変して使ってみてください。同様にコンボボックス用とかも作ってみると面白いかもしれません。
一つ目のレコード TChainSelectSQL。
メソッドチェーンにより、コード補完で入力可能。WHERE や ORDER も追加できるし省略もできる。Term() メソッドで SQL をビルドする。
二つ目のレコード TSelectSQL。
SQL の要素を一部だけ書き換えられるため、ちょっとだけ違う SQL を簡単に作ることができる。Build() メソッドで SQL をビルドする。
|
似たような事を既存の SQL プロパティでやれない事はないけれど、SQL が変更になったらワケワカラン事になる...バグの元。
レコードという事は、const でこんな書き方もできるという事。
上記二つのレコードを含むユニット uSQLBuilder.pas は以下から DL 可能。
もちろん SELECT / UPDATE / INSERT / DELETE 用レコードも用意されています。
実際の所、似たような実装は探せばいくつかみつかるのですが、ギッチギチに作ってあったりするので却って使いにくいと思います。SQL には方言があるのでゆるふわで作ってあった方が融通が利くのです。
以前、雑談で書いたので省略。
これのキモは uClassBaseClass.pas なのです。このユニットに
この機能があるため、FieldByName / ParamByName を記述しなくて済みます。
具体的な使い方ですが、
こうなります。メリットはスライドの通りです。TCustomEdit 用のクラスヘルパーと併用すれば入れポン出しポンが簡単になり、かつコンパイル時にそれなりにエラーで止まります。
uClassBaseClass.pas は BDE / dbGo / IBX / DBX/ FireDAC に対応しているハズですが、完全なテストができていません...が、それなりには動作します。
ちょっとセッションの趣旨からは外れるので Extras にしましたが単純に楽しいですよね、わはー!
一覧にしたのは以下の機能:
一部直リンクがあるので注意 (リンクの右にあるアイコンで判別可能)。
内容薄いように見えて、1時間で喋るにはこれでも多すぎるんですよね...orz
BACK | 古いのを読む | 新しいのを読む |