Swanman's Horizon

性欲をもてあましつつなんらかの話をするよ。

2016-01-01から1年間の記事一覧

プラグインのまほう

これはDelphi Advent Calendar 2016の9日目の記事です。前日は@luxideaさんのシェーダでプロジェクションマッピングする。でした。3D関連は不得意なので物凄く勉強になります! 概要 IDEのプラグインを作ろう!と思っても、ただでさえ少ないDelphi情報のさら…

Component Tray

これは何? DelphiのIDEにコンポーネント置き場を追加するプラグインです。非ビジュアルコンポーネントを別の場所へ隔離できるので、デザイン時にこれらのアイコンが邪魔になりません。 動作環境 10.1 Berlinでしかテストしてないので他の環境で動くかどうか…

DLight 0.0.2

DLightとは 更新点 10 Seattleの対応と、10.1 Berlin Starter Editionの限定的対応(監視式内容の表示のみ)の追加。 あと今回からGitHubに上げて、Delphinusからもインストールできるようにしました。 ダウンロード https://github.com/lynatan/DLight

インライン評価プラグイン「DLight」を作った

DLightって何? Light TableのInline Evaluationのように、デバッグ実行時にローカル変数と監視式の値をインライン表示するプラグインです。 たぶん説明するより見た方が早い。 ダウンロード DLight 0.0.1をダウンロード 現在はDelphi 10.1 Berlin専用です。…

macOSでDockメニューに独自項目を追加する。

サンプルコード uses ..., System.Messaging, Macapi.ObjCRuntime, Macapi.ObjectiveC, Macapi.AppKit, Macapi.Helpers, FMX.Helpers.Mac; procedure TForm1.FormCreate(Sender: TObject); begin TMessageManager.DefaultManager.SubscribeToMessage(TApplic…

class or class = ???

1200万パワーだ! 昨日の記事の応用編。なんと演算子オーバーロードの代替表記を使えば、通常では組み合わせることのできない演算子オーバーロードとジェネリクスを同時に使えます。 サンプルコード https://gist.github.com/lynatan/673e574faa8343fa01d7a9…

Use operator overloading for classes with non-ARC compiler

はじめに 演算子オーバーロードはDelphi 2006で導入された機能で、自分が定義したレコードに+や-といった演算子の動作を実装できます。この機能はARC対応コンパイラであればレコードだけでなくクラスでも使えるんですが、非ARCコンパイラ、つまりx86向けのよ…

Starterでフォームデザイナオプションが表示されないバグの修正プラグイン作った。

VM上で検証してたら原因が分かったので直しました。 ダウンロード https://github.com/lynatan/StarterFix 「Clone or Download -> Download ZIP」でダウンロードできます。 Delphinusにも対応しているので、インストールしている方はそちらから導入した方が…

Delphinusパッケージマネージャの紹介。

パッケージマネージャとはなんぞや Delphiは数多くのパッケージの集合で成り立っています。パッケージには製品本体に元々付属しているもの以外に企業や個人が作った追加パッケージがあり、この追加パッケージを簡単に導入できるようにするのがパッケージマネ…

DelphiとFreePascalの最適化比較。

はじめに 先日a-1-4がa-5に最適化されないDelphiコンパイラの残念さを知り、ついでに巷で言われている「FreePascalは遅い」は本当なのかが気になったので軽く調べてみた。 検証用コード Wikipediaより拝借したコードをPascalに書き直した以下のコードを使用…

class helperで擬似的にインスタンス変数を追加する。

はじめに class helperは任意のクラスにメソッドや定数、クラス変数を追加する機能を持ちますが、インスタンス変数を追加することはできません。しかしインスタンスの実態が単なるポインタであり、任意のフィールドへのアクセスが「インスタンスアドレス+フ…

ジェネリック関数を作る。

作る(作れるとは言ってない) 現在のDelphiの仕様では、ジェネリクスを使用した処理を記述しようとした場合、クラス単位、あるいはクラスに属するメソッド単位でしか使用することはできません。つまり、ジェネリック手続きやジェネリック関数は作ることがで…

コンパイラが自身のバージョンをEXEに埋め込むようになっていた件。

きっかけ ふと「最新コンパイラで小さいEXEってまだ作れるのかな?」と気になり、XE2の頃に試したコードを再コンパイルしたところ、当時3,584バイトだったEXEが4,608バイトに増えてしまっていました。で、原因を調べるためにとりあえずバイナリエディタで開…

Delphiプログラマを見分ける10の質問(解説編)。

はじめに 先日公開した10の質問、いかがだったでしょうか。「この質問を作ったのは誰だあっ!」と海原雄山が怒鳴り込んできそうなくらいDelphiを扱う上では全く必要ない知識ばかりでしたが、知っていれば明日のDelphiトークのひとつとして使える程度には役立…

Delphiプログラマを見分ける10の質問。

16/07/20追記 真っ当な設計をしてたら出会わない挙動が多く、ネタとしてわざと難しい質問にしてるので、間違ったら恥ずかしいなんて躊躇せず、ぜひとも勢いよく突っ込んで爆発四散してください! はじめに ものすごーく前に「○○プログラマを見分ける10の質問…

TPdfDocument クラス。

これは何? 前回の成果を簡単なクラスにまとめて、Delphi的にCreateしてLoadFromFileで読み込み的なやつです。読み込んでExportAsImageで画像化するシンプルなクラスになってます。 使い方 デフォルト設定で使う場合はめちゃくちゃシンプルです。 uses ..., …

外部ライブラリ無しでPDFを描画する。

WinRTって知ってる? WinRTとは、Windowsストアアプリ専用のAPIセット…ではないです。すでにトーストAPIなどを使っていてご存じの方もいると思いますが、デスクトップからも利用可能なCOMベースのAPIです。 Windows 8の時点だとWinRTは未来があるのか怪しいA…

Oculus SDK 1.4.0 wrapper for Delphi

ダウンロード Oculus SDK 1.4.0 wrapper for Delphiをダウンロード 今頃CV1が届いてるはず…そんなふうに考えていた時期が俺にもありました 出荷予定日:5/16/2016 - 5/26/2016 なのに未だ出荷されず。Oculusェ…。

Oculus SDK 1.3.2 wrapper for Delphi (と、いくつかデモ)

久々に 0.0.1のリリースからかなり間が空きましたが、もうすぐCV1が届くはずなのでリハビリも兼ねてヘッダを移植してみました。 今回はそれに加えて、元々入っているOculusRoomTiny系のデモもいくつか移植しています。コンパイル済みのEXE(64bit用)も入れ…

自作プラグイン更新のお知らせ。

10.1 Berlinで動かなかったので直したもの 痛IDEプラグイン for RAD Studio Ver.0.0.12 Jpfix plugin Ver.1.1.4 Component Initializer Ver.0.0.3 dNotes plugin Ver.0.0.5 UTF8ize plugin Ver.0.0.3 DisableStat Ver.0.0.2 Template Replacer Ver.0.0.2 Sor…

10.1 Berlinのclass helper仕様変更は全然改良じゃないと思った?

皆さんご存じかと思われますが、Delphi 10.1 Berlinがリリースされました。で、新機能の一覧の中にこんなことがさらっと書いてありました。 Delphi コンパイラのその他の改良点 (中略) 可視性のセマンティクスを実行するため、クラス ヘルパやレコード ヘ…