Haruyuki Mohri Blog(Delphi)

毛利春幸のブログ

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
  1. --/--/--(--) --:--:--|
  2. スポンサー広告

Delphi XE6から*.dylib(MacOS)の関数を呼ぶ

xcodeで (MacOS)C言語で関数ライブラリを作成しbuildすると*.dylibと言うのが作られます
2014-08-28 15.12.56
たんに

UInt16 testfunc(UInt16 a, UInt16 b)
{
return a + b;
}

とa+bしてるだけです
これをDelphi XE6で呼ぶのはすごい簡単です

出来上がったlibtestdylib.dylibをプロジェクトのパスの効くところに配置して
2014-08-28 15.19.19
とすれば呼べます
function testfunc(a: Integer; b: Integer): Integer; cdecl; external 'libtestdylib.dylib' name '_testfunc';
ボタンイベントで
procedure TForm1.Button1Click(Sender: TObject);
var
c: Integer;
begin
c := testfunc(1, 2);
Edit1.Text := IntToStr(c);
end;


C++Builder側でも*.dylibは作れるみたいです
http://community.embarcadero.com/index.php/blogs/entry/delphi--firemonkeyos-xアプリでimeを切り替えるcbuilderでdylib作成-3621
スポンサーサイト
  1. 2014/08/28(木) 15:18:44|
  2. Delphi

Delphi XE6(32Bit)コンパイラバージョン

Delphi XE6コンパイラって 古いdelphiバージョンがずっと引き継がれてまして
2014-08-24 20.45.06
もう バージョン27なんですよね
老舗うなぎ屋のタレみたいですね

ちなみにDCC64.exeもバージョン27でした

dccosx.exeはいつになったら64ビット対応してくれるのでしょうか
願うばかりです


テーマ:プログラミング - ジャンル:コンピュータ

  1. 2014/08/24(日) 20:50:57|
  2. Delphi

identifierForVendor(iOS)をDelphi XE6で取得する

Delphi(iOS7)からidentifierForVendorを呼ぶ方法

Delphi XE6もiOSApi.UIKitの中に
UIDeviceがあるのでidentifierForVendorのユニークなIDを呼ぶ事ができます
UDIDに替わる標準の端末識別子として使用するみたいです
詳細は「http://quesera2.hatenablog.jp/entry/2014/03/03/001232」
まとめてくださっている人がいます

Delphiから呼ぶには
procedure TForm1.Button1Click(Sender: TObject);
var
uidevice: iOSApi.UIKit.UIDevice;
begin
uidevice := TUIDevice.Wrap(TUIDevice.OCClass.currentDevice);
Edit1.Text := NSStringToString(uidevice.identifierForVendor.UUIDString);
end;

これだけです

テーマ:スマートフォン - ジャンル:コンピュータ

  1. 2014/08/11(月) 19:35:06|
  2. Delphi

Androidスマホの物理画面サイズ(インチ)を取得

エンバカデロエバンジェリストTさんが やってた記事を真似してテストしてみました
http://blogs.embarcadero.com/teamj/2014/07/01/4605/
ターゲットデバイスは「スクリーンショット 2014-08-07 17.14.08」です

コードはそのままです
スクリーンショット 2014-08-07 17.16.16
TPlatformServicesってのを使って IFMXScreenServiceを呼びます
Delphiのヘルプを見ると「デフォルトの論理単位からこの画面の物理座標へと変換するために必要な倍率を示します」
var scr: IFMXScreenService;変数にして呼び出しても良いのですが
このTさんのサンプルではScaleだけをSingleで取ってきてます

AndroidのHelperの中にGetJDisplayMetricsと言うファンクションがあるので
それを見るとJDisplayってインターフェイス呼び出してるみたいです
これで物理ピクセルがわかるので 後は倍率と物理サイズで割り算してる感じでしょうか
DPI=100だったとしたら100ピクセルで1インチになったと思うので
あとは簡単ですね(^_^;)

写真 2014-08-07 17 18 18
なんとなく5インチっぽい答えが返ってきました
48.0バーの取得ってできないのかな?

Androidに関し画面の細かい説明は山本さんが書かれているようです
http://www.gesource.jp/weblog/?p=6706
  1. 2014/08/08(金) 18:20:59|
  2. Delphi

iPhoneでLTEなのか無線LANなのか判断してみる(Delphi XE6)

iPhoneで今LTEなのかそれとも無線LAN接続しているのか知りたい場合
xcodeでは Reachability.h的なモノがサンプル含めあります
https://developer.apple.com/library/ios/samplecode/Reachability/Listings/Reachability_APLViewController_h.html

このReachabilityをうまく使ってエンバカデロMVPさんがclass作ってくれているみたいで
libReachability.aなんかも作ってくれています
http://delphi.radsoft.com.au/2013/11/checking-for-an-internet-connection-on-mobile-devices-with-delphi-xe5/

サンプルもあるのでそのプロジェクトを起動するだけですww

www
しかもAndroidも対応してます

今僕はiPhoneのデバッグ環境しか無いのでiPhoneでデバッグ実行試してみました
まず「[DCC エラー] E2597 ld: file not found: /System/Library/Frameworks/SystemConfiguration.framework/SystemConfiguration」こんな感じで怒られますので
SDKマネージャーでSystemConfigurationフレームワークを設定してください

SDKまねー20140806

あとは実行成功します

↓起動画面
Screenshot 2014.08.06 20.10.47

↓clickボタンを押すと無線LANのSSIDとステータスが返ります
Screenshot 2014.08.06 20.10.58

↓iPhoneの無線LANをOFFにしてから再度clickボタンを押すとステータスがWWANに変わります
Screenshot 2014.08.06 20.11.07

せっかくpas作ってくれていますので
ありがたく使わせていただこうと思いますww




  1. 2014/08/06(水) 19:45:23|
  2. Delphi

FireDACを使わずmySQLに問合せする(Delphi XE4〜6)

Delphi XE6には便利なFireDACと言うデータベース接続用コンポーネントがあります
このFireDACを使えばmySQLやOracle, PostgreSQLやSQLiteなども簡単に接続できます

でも少し中身も知ってた方が勉強になると思い
FireDAC無しでmySQL接続をテストしてみました
(FireDAC使いたくないわけでなく接続の仕組みを知るための勉強です)

1.mySQL接続用(MySQL Connectors)の DLLをダウンロードします
http://dev.mysql.com/downloads/connector/
Connector/C (libmysqlclient) is a client library for C development.を選択します
Connector/C 6.0.2をダウンロードしてください(Win32が良いと思います)
Connector/C 6.0.2Page

2.ダウンロード後Pathにきいている場所にlibmysql.dllを配置します
(テスト用のEXEファイルから見えていればOKです)

3.mysql.pas (Version 2011-09-15)
便利なラッパー作ってくれている人がいますので そのコードを利用します
http://www.audio-data.de/mysql.html

4.ダウンロードしてきたmysql.pasの中にDEMOがいくつか入ってますので
それを実行します(簡単です)
mysql.passampledemo0803

接続やQueryなどの関数もPHPとさほど変わらないです
接続⇒ function mysql_connect(_mysql: PMYSQL; host, user, passwd: PAnsiChar): PMYSQL;
Query実行⇒ function mysql_query(_mysql: PMYSQL; q: PAnsiChar): longint;
閉じる⇒ procedure mysql_close(sock: PMYSQL);
sampleにほとんどの処理が入ってますので何も困ること無く接続やQuery操作する事ができました



テーマ:プログラミング - ジャンル:コンピュータ

  1. 2014/08/03(日) 15:32:23|
  2. Delphi

Profile

Twitter...

最近の記事

ブログ内検索

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。