Haruyuki Mohri

毛利春幸のブログです。

BCC32で TFuncにデータを渡す場合

When dealing with TFunc in BCC32(C++Builder 10.2). For example, suppose Delphi side has the following function. type Tproc_func = record {When TFunc is an argument as shown below. } function func1(func: TFunc<Integer, String>):String; end; implementation f</integer,>…

BCC32でTThread::CreateAnonymousThread

Implement CreateAnonymousThread with BCC32. BCC32 can not write lambda. So write an implementation in Invoke() with TCppInterfacedObject<>. struct T_thread_proc : TCppInterfacedObject<TProc>{ TNotifyEvent f_ev_; struct T_sync_proc : TCppInterface</tproc>…

Delphi コンパイラ Attributes

Delphiのコンパイラ属性としてRef,Unsafe,Volatile,Weakなど使えます。 var TMyClass = class private [Ref] FRef: TObject; [Unsafe] FUnsafe: TObject; [Volatile] FVolatile: TObject; [Weak] FWeak: TObject; end; 属性 内容 Ref 関数に(値ではなく)参…

iOS オーディオ出力音量制御 (MPVolumeView)

Use C++Builder 10.2 to control audio volume of iOS. I used the MPVolumeView class of iOS. The MPVolumeView class is declared in “iOSapi.MediaPlayer.hpp”. Include two files. #include <iOSapi.MediaPlayer.hpp> #include <iOSapi.UIKit.hpp> Form design Arrange “Up” and “Down” two TButto</iosapi.uikit.hpp></iosapi.mediaplayer.hpp>…

カンマ区切りのファイルをTFDMemTable形式JSONファイルに変換

Convert from CSV file to “JSON file” of “TFDMemTable format”. This program uses C++Builder 10.2 Tokyo Release 1. include #include <iostream> #include <fstream> #include <string> #include <codecvt> #include <FireDAC.Comp.Client.hpp> #include <FireDAC.Stan.StorageJSON.hpp> #include </firedac.stan.storagejson.hpp></firedac.comp.client.hpp></codecvt></string></fstream></iostream>

bds.exe コマンドラインスイッチ

IDE コマンド ライン スイッチ IDE をコマンド ラインから起動する場合は、以下のオプションを使用できます。 特に説明がない限り、すべてのオプションの前には、ダッシュ(-)かスラッシュ(/)のどちらかを付ける必要があります。オプションには、大文字/…

Android インストールアプリケーション一覧取得

C++Builder FireMonkeyで Androidアプリ一覧取得方法 元ネタ edn.embarcadero.com _di_JPackageManager _di_JPackageManagerのgetInstalledApplications()で取得したデータは _di_JListリストに入る_di_JApplicationInfo取得後 アプリ名をstd::queue<String>に保存 </string>…

Androidの着信モード取得と切替方法

The getRingerMode of JAudioManager. is Returns the current ringtone mode of Android. JAudioManager::getRingerMode() is also available in C++Builder. The current ringtone mode(getRingerMode()), one of RINGER_MODE_NORMAL, RINGER_MODE_SILENT,…

std::condition_variableを試した。

std::condition_variable is a class for waiting for thread execution until the condition is satisfied. Used in combination with std::mutex. I tried the wait() function in std::condition_variable. This is combined with std::unique_lock<std::mutex>. I th</std::mutex>…

timed_mutexを使ってみた。

In C++11, mutex is attached as a standard library. Of course, it can also be used in C++Builder. There are mutex,recursive_mutex,timed_mutex,recursive_timed_mutex. I tried timed_mutex this time. timed_mutex supports lock acquisition timeou…

ビーコンの現在の近接度 TBeacon

System.Beacon.TBeaconProximity TBecaonProximity 型はビーコンの現在の近接度を示します。 次の 4 つの異なる近接度が定義されています。 レベル 値 説明 Inmediate 1 0.5 m 未満 Near 2 0.5 m 以上 1.5 m 以下 Far 3 1.5 m より遠い Away 4 判定不能

代替オペレータ Alternative operator representations

C++のソースコードは、ISO 646:1983の不変文字セットを含むASCII以外の7ビット文字セットで記述することができます。 (いくつかのC++演算子と句読点には、ISO 646コードセットの外にある文字、{, }, [, ], #, \, ^, |, ~が必要) Alternative tokens ISO646以…

Twitter Developer ツイートアプリを作る

C++Builder(VCL)でTwitterアプリを作る方法 Twitter Developersにアクセスする。 https://dev.twitter.com/ ここにアクセスする サイトの下の方に「Tools」「Manage my apps」があるのでクリック Create New Appでアプリを作成 登録画面の「Application Deta…

C++Builder タイトル付きのダイアログ TaskMessageDlg() 使い方

TaskMessageDlgはタイトル付きダイアログです。 Vcl.Dialogs.hppを見ると、TaskMessageDlg, MessageDlgPos,MessageDlgPosHelpがあります。 TaskMessageDlg TaskMessageDlg("Title Name", "Message",TMsgDlgType::mtError,TMsgDlgButtons() << mbOK, 0); Mess…

Interbase テーブルFieldのAutoIncrement

Interbase 2017で テーブルの自動インクリメント 下記の様なテーブルがあったとして -- #t1 テーブル作成 create table t1( num_ int not null, name_ varchar(50) not null, primary key(num_) ); t1テーブル field名 型 null / PK num_ int not null (PK) …

template中にtemplateを書く場合

templateの中にtemplateを書く事が可能です。 その場合のメリットは geho_<std::vector> クラステンプレートをそのままテンプレートに渡せます。 namespace my_ { template <class T1, typename T2> struct hoge_{}; template< template<typename, typename> class T, typename T1, typename T2> struct geho_ { T<T1, T2> t_;</t1,></typename,></class></std::vector>…

MSBuildToolsPath is not specified for the ToolsVersion "14.0" が出てビルドできない場合

ビルド時のエラー DelphiまたはC ++プロジェクトをコンパイルしようとすると、次のエラーが発生します。 「MSBuildToolsPath is not specified for the ToolsVersion "14.0" defined at "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0"…

Delphi reintroduce指令

Delphi Reintroduce reintroduce 指令を付けると、既に宣言されている仮想メソッドが隠蔽されるというコンパイラ警告が表示されなくなります。以下に例を示します。 [dcc32 警告] Unit1.pas(11): W1010 メソッド 'Create' で基底型 'TComponent' の仮想メソ…

URLエンコード TURLEncoding

System.NetEncoding.TURLEncoding C++BuilderでURL エンコード 形式でデータをエンコードおよびデコードするメソッドを提供 TURLEncoding は、スペース(プラス記号 + として)と、次の予約された URL エンコード文字のみをサポートします ;:&=+,/?%#[]。 TU…

Interbase ODBCドライバインストール方法

Interbase ODBCドライバダウンロード 28975 Embarcadero InterBase ODBC Driver for Windows, 32-bit and 64-bit 上記からダウンロードできます。 「odbcibinstall.exe」で保存します。 Interbase ODBCドライバインストール odbcibinstall.exeを起動します。…

TIdURI::PathEncode()を使わずエンコーディング

Embarcadero C++Builderは TIdURIにPathEncode()や、URLEncode()など機能があります。 std::ostringstream と GetBytes()を使って同じような実装をしてみました。 #include <sstream> #include <array> #include <functional> const std::string path_encoding(UnicodeString input_, TEn</functional></array></sstream>…

Interbase Generator 応用1

generator一覧を取得 generatorは “RDB$GENERATORS"ここに入っています。 select * from RDB$GENERATORS; この方法でgenerator一覧の取得が可能です。 1つのgeneratorデータを取得 “gen_id([ジェネレータ名],0)"で取得できますが上記のRDB$GENERATORSを使っ…

ANDROID_IDと、identifierForVendorを取得

C++Builderを使用してANDROID_IDとidentifierForVendor(IDFV)を取得を試す。 ID Description ANDROID_ID ANDROID_IDは、Android端末の初期化時にランダムに生成された文字列です。 identifierForVendor(IDFV) identifierForVendor(IDFV)は、iOS UDIDの…

RAD Studio bds.exe オプション

RAD Studio bds.exe の使用例 コード 内容 bds.exe -ns RAD Studio IDE をスプラッシュ画面を表示せずに起動します。 bds.exe -sd c:\test\source -d c:\test\myprog.exe \mbox{-}td -td および、デバッガ オプション(-d exename)の後ろに指定される他のあ…

Interbase Generator作成と更新

Interbase Generatorの使い方 Interbaseはジェネレータを持っています。 generator 新規作成 create generator sq1 これで"sq1"と言う名称のgeneratorが一つ完成しました。 中身は0が入っています。 generatorの番号セット SET generator sq1 TO 1 “sq1"の中…

iOSアプリの起動中にスリープさせない方法

setIdleTimerDisabled(true)にすればスリープしない C++BuilderでiOSアプリを作成する場合 __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { _di_UIApplication app_ = TUIApplication::Wrap(TUIApplication::OCClass->sharedApplication());…

C++Builderでstd::unordered_mapを使う

std::unordered_mapを使う。 先日、「Optimized C++」書籍についてのC++勉強会に参加しました。 その時、std::unordered_mapの議論もありました。 C++Builderでは、std::unordered_mapも使用できます。 刈谷さんがstd::unordered_mapについて詳しくスライド…

Xcode Version 8.3.3 (8E3004b) + PAServer 10.0.1.30

10.2 Tokyo PAServer 10.0.1.30 10.2のHotfix1でPAServer 10.0.1.30にアップデートされています。 デバッグモードでは問題なく使えます。 ですが、Ad hocでは下記のエラーが出ます。 [PAClient Error] Error: E0776 '"/usr/bin/xcrun" -sdk iphoneos Package…

SQLite ローカル時間取得 select datetime('now') as now_

SQLiteで ローカル時間取得 select datetime('now') as now_ これだと日本時間が出ないので select datetime('now', 'localtime') as now_ ‘localtime'を指定すると日本時間で取得できる。

AngularJSとnode.js インストール

RAD Studioロードマップ(2017年5月付)に書いていますが、 10.3 以降のRAD ServerでAngularJSクライアントがサポートされます。 Angular は、JavaScriptで書かれたOpen Sourceのフロントエンド Webフレームワークです。 先日、Angular release is 4.0.され…