Haruyuki Mohri

毛利春幸のブログです。

Ext JS proxy.Ajaxストアで CORS JSON base64画像をブラウザで表示

Output to JSON Base64 Image Data Reading Browser. I use Ext JS. And the JSON server is C++Builder bcc32. Create a standalone new project for WebBroker. Add action on TWebModule side. PathInfo is set to "/img". It is a code to output JSON c…

BDEを使ってParadox Blob形式をファイルに保存する

C++Builder 10.2 Tokyo does not have BDE installed. So, Install BDE separately in C++Builder 10.2 Tokyo. It is after the end of the all of the installation. Download BDE Installer for RAD Studio, Delphi, C++Builder 10.2 Tokyo Download the i…

ConnectivityManagerを使ってNetworkInfoを取得する

Using ConnectivityManager with C++Builder With C++Builder 10.2 Tokyo Android ConnectivityManager class is available. Use the ConnectivityManager, you can get NetworkInfo. NetworkInfo see various network information. inside that, The getTyp…

AndroidのWi-Fi切替(WifiManager)

Using C++Builder 10.2 Tokyo, explain how to switch Wi-Fi on Android. Manage Wi-Fi switching using JWifiManager I use di_JWifiManager which wrapped WifiManager. di_JWifiManager is the Delphi interface. Set the variable. _di_JWifiManager f_W…

TTaskからTQueue<String>にEnqueueする

When considering migration from old C++Builder 10.2 Tokyo bcc32 project. You can use functions such as TThread::CreateAnonymousThread() and TTask to improve performance. In addition to TCriticalSection, you can also use System.TMonitor whi…

Androidではstd::stoi()が使えないatoi()は使える。

C++Builder 10.2 Tokyo を使ってAndroidビルドする場合 std::stoi()は使えない。 そもそもAndroid NDK側でも使えないみたいです。 方法は色々あると思うけど、下記のような実装をしてみた。 namespace std { int stoi1(const std::string& s) { auto i = std…

CodeGuardでRTLを使う場合の注意

CodeGuardとは bcc32で構文規則に違反していないためにコンパイラでは検出されないエラーを通知します。 実行時ライブラリを追跡とマルチスレッド アプリケーションを完全にサポート。 機能 メモリおよびリソースの使用状況確認 関数呼び出しの検証 利用方法…

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の…