Delphi
DelphiとFreePascalで動作する自作ライブラリのテストコードを書くために、自作のxUnitフレームワークを使っています。 github.com 自作のテストフレームワークでは、 Test で始まるメソッド名をテストメソッドとして自動で実行するxUnitフレームワークでよ…
FreePascalのコンソールアプリで、デバッグするときにメモリダンプするユーティリティがほしかったので、ChatGPTにざっくり書いてもらって少し手直しして使っている。 コード memory_dump.pp: program memory_dump; uses SysUtils; procedure DumpMemory(add…
久々にDelphiを少し触ってました。かなり忘れてる。 Delphiのインターフェースを使って2つの実装クラスを作り、実行時にどちらのクラスを使うか決定してる。 試したバージョンはDelphi XE4。 Main.dpr program Main; {$APPTYPE CONSOLE} uses System.Classes…
Spring4Dの紹介 from Shinya Okano
以前Delphi2009で書いてた。 DelphiでWinsockを使ってサーバを書いてみる - 偏った言語信者の垂れ流し 以前書いたのと比べて、XE4でusesのパッケージが変わったのと、AnsiStringを使わずにTBytesを使うように変更してみた。 TBytesよりPByte(ポインタ)のほう…
Delphiで無名スレッドを使ってみる。試したのはDelphiXE4。 anonymous_thread.dpr program anonymous_thread; {$APPTYPE CONSOLE} uses System.SysUtils , System.Classes ; var Thread: TThread; begin // スレッドオブジェクトを生成 Thread := TThread.Cr…
XE4になってからまだ試してなかったので、少し試した。 StyleBookはTransparent.styleを適用している状態 Windows7 TMemoコンポーネントでGoogleIMEだと表示位置がおかしい?かも。表示されなくなる場合もある。 それ以外はぱっと見問題無さそう。 MacOSX(10…
DelphiからDLLを動的にロードする場合、WindowsではLoadLibraryとGetProcAddressを使っていましたが、MacOSXのdylibではどうすればいいのか調べてました。 MacOSX(Posix)だとdlopen, dlsymを使うことになるらしいです。 dlopen(3) Mac OS X Developer Tools …
レコードヘルパはInteger型やString型などにメソッドを追加する機能。 試したのはDelphiXE4。2010以降の機能なのかな。 test_my_record_helper.dpr program test_my_record_helper; {$APPTYPE CONSOLE} type TMyIntegerHelper = record helper for Integer f…
Delphi XE4が先日発売されましたね。私はiOSアドオンなしでXE3からアップグレードしました。 XE3を購入したときのポイントが余ってたおかげで、SEshopで1,200円程度で購入できました。 iOS対応を除くと、機能追加はほとんどないのですが、リリースノートに載…
査読に参加したということで、細川さん(@pik)の著書「DelphiでかんたんiOSアプリプログラミング」を一冊いただきました。 CUTT System:C++/Delphiでかんたん iOSアプリプログラミング 先日のエンバカデロ・デベロッパーキャンプでは先行販売されていて、一時…
前回の続き。 TInterfacedObjectとinterfaceを使ってオブジェクトを自動的に開放する - 偏った言語信者の垂れ流し 自動的に開放されるオブジェクトでプロパティを使ってみる。 interfaced_object.dpr program interfaced_object_property; {$APPTYPE CONSOLE…
メモ。TInterfacedObjectとinterfaceの使い方。 TInterfacedObjectを継承し、interfaceで参照している場合、参照カウント方式で自動的にオブジェクトは開放される。 試したDelphiのバージョンはXE3。 interfaced_object.dpr program interfaced_object; {$AP…
以前コマンドライン引数の取得について書いたとき、FindCmdLineSwitchという関数があることを教えてもらった。 Delphiでコマンドライン引数を取得する - 偏った言語信者の垂れ流し System.SysUtils.FindCmdLineSwitch - XE3 API Documentation 試してみたの…
Free Pascalが最近どうなってるのかなーと思って試してました。 Free Pascal - Advanced open source Pascal compiler for Pascal and Object Pascal - Home Page 先日作成したファイル分割のプログラムをFree Pascal Compiler(FPC)でコンパイルしようとしま…
ファイルを指定したサイズで分割するコンソールアプリケーションをDelphiで作ってみました。 DelphiのバージョンはXE3。 ソースコードはBitbucketに置いてます。 tokibito / filesplit — Bitbucket ファイル分割は、ファイル内容のコピー先を複数にすること…
この記事は、 Delphi Advent Calendar 2012 の16日目のものです。 巨大なファイルの作成に時間がかかる場合、途中で他のプログラムの動作によってディスク容量が足りなくなることがたまにあります。 出力されるファイルのサイズが予めわかっている場合は、そ…
この記事は、 Delphi Advent Calendar 2012 の2日目のものです。 Delphiで作成したプログラムをビルドする場合、IDEから行うのが一般的だと思いますが、今回は私がよく使っているMakefile(makeコマンド)でビルドする手順を紹介します。 DelphiXE3で試しまし…
System.Classes.TFileStreamを使ってファイルを読み込むのを、DelphiXE3で試しました。 かなり昔から使い方は変わってないですね。 簡単な例として16進ダンプを作ってみました。 hexdump.dpr program hexdump; {$APPTYPE CONSOLE} uses System.SysUtils , Sy…
メモ。 Jenkinsでテスト結果を集計するため、自前で作ったテストフレームワークにJUnit形式のXMLレポートを出力する機能を追加してみた。 tokibito / delphi-unittest — Bitbucket Mercurialのリポジトリなので、JenkinsにMercurial Pluginをインストールし…
前に使ってたバージョンがDelphi2009なのでTRttiContextを使うのはこれが初めて。 TRttiContextを使ってメソッド名の取得や取得したメソッドの実行ができるので、xUnit(DUnitとか)なテストフレームワークを作ってみました。 "Test"という名前で始まるメソッ…
DelphiにはDUnitが含まれていて、ユニットテストを作成するのに使える。 以前使ったことはあるけど、書いていなかったので書いとく。 DelphiXE3で試した。 テストプロジェクトを作成する テストを実行するテストランナーは、ビルドして実行ファイルの状態で…
Indyコンポーネントのおさらい。DelphiでHTTPS経由でファイルをダウンロードする。 HTTPS経由だとIOHandlerをSSL対応のものを指定しないといけない。 idhttp_test.dpr program idhttp_test; {$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils, System.Cla…
比較的最近増えたクラスなのかな。Delphi XE3でJSONデータを扱うにはusesにData.DBXPlatformとData.DBXJSONを追加して、TJSONObjectクラスを使えばいいらしい。 json_test.dpr program json_test; {$APPTYPE CONSOLE} {$R *.res} uses System.SysUtils, Data…
Delphiから直接CocoaのAPIを使えるようなので試してみた。 DelphiXE3でターゲットをOSXにしてコンパイル。動作させた環境はMacOSX 10.6。 cocoa_test.dpr CocoaのNSURL、NSDataを使ってWeb上のファイルをダウンロードして保存するだけの簡単なコンソールアプ…
メモ。しばらく使ってなくて忘れてる。 Delphiでコマンドライン引数を取得する方法。 ParamStr関数を使う。引数の数の取得はParamCount関数。 インデックス0は実行ファイルのパス。1からがパラメータになる。 DelphiXE3で試した。 Win32, Win64, OSX32で動作…
Delphi XE3、FireMonkeyアプリケーションで指定したURLをデフォルトのウェブブラウザで開くには。 WindowsだとShellAPI.ShellExecuteを使えばいいんだけど、WindowsAPIなのでこれはMacOSXでは使えない。 MacOSXだとPosixパッケージのコマンド実行(_system関…
エクスプローラーやFinderからドラッグアンドドロップされたファイルを受け入れる例。 FireMonkeyでもVCLでも一緒なのかな。試したバージョンはDelphiXE3。 DragOverイベントでAcceptにTrueを代入することで、ドラッグを受け入れられる。 ドロップされた際に…
DelphiXE3でOSX向けのアプリケーションを開発する場合、同梱されているPAServerを使ってリモートデバッガを利用することになる。 ということで、試してみた。 手順はDEKOさんのところで詳しく解説されてる。 Delphi XE2 の新しいリモートデバッガ - PAServer…
Delphi2009を持ってて、そろそろアップグレードかなーと思ってたので、Delphi XE3のESD版を買った。 さすがにWindowsXPでは楽しくなさそうなので、Windows7(64bit)が載ってるASUSのZENBOOKも買った。 さっそく動かしてみてる。 まだドキュメントとかは全然読…