C 半角カナ判定
プロジェクトの文字セットが、Unicode になっているか、
マルチバイトになっているかで、文字の扱いが違うので、
以下のようにどちらにも対応できるようにしてみました。
半角カナ判定--------------------------------------------------
TCHAR* tc = _T(";あアカサタナ");
int tc_size = lstrlen(tc);
#ifdef UNICODE
for( int i = 0; i < tc_size; i++ ){
if ( (WORD)tc[i] >= 0xff61 && (WORD)tc[i] <= 0xff9f ) {
/// 半角カナだった場合の処理
}
}
#else
for ( int i = 0; i < tc_size; i++ ) {
if ( _ismbbkana(tc[i]) ) {
/// 半角カナだった場合の処理
}
}
#endif
--------------------------------------------------------------
マルチバイトの場合(#else)、文字列が char* なので、そのまま、
_ismbbkanaを使用しています。
_ismbbkana に、Unicode の WCHAR* は使用できないので、
wcstombs_s とか使って変換すればできるのかと思ったが、
locale.h を、include する必要があるようなので、Unicode
の半角カナの範囲を調べて、上記のようにやってみました。
一応判定は出来ていますが、いいやり方ではないのかな?
*+*+*+*+*+*+*+*+*+*+*+***+*
フリーエンジニアの方々へ
支援サービス『SYNAPSE』で案件を提供させい頂いております。
当サービスのメディエイターが、
皆様のニーズにマッチした案件を提案させていただきます!
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
案件提案型フリーエンジニア支援サービス『SYNAPSE』
http://www.neuron-network.co.jp/fe-synapse/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
*+*+*+*+*+*+*+*+*+*+*+***+*
VC++ マウスホイールでスクロール
マウスホイールでスクロールを実行する方法を紹介してみます。
xxxView.cpp ----------------------------------------------------
BOOL xxxView::OnMouseWheel(UINT nFlags, short zDelta, CPoint pt)
{
WPARAM upDown;
if ( zDelta < 0 ) {
upDown = SB_LINEDOWN;
}
else {
upDown = SB_LINEUP;
}
this->SendMessage( WM_VSCROLL, upDown, 0 );
return FALSE;
}
----------------------------------------------------------------
対象のビュークラスで、OnMouseWheelをオーバーライドして、その中の
処理で、WM_VSCROLL(縦スクロール) メッセージをビューに送っています。
zDelta の値については、msdnを参照してください。
フリーエンジニアの方々へ
支援サービス『SYNAPSE』で案件を提供させい頂いております。
当サービスのメディエイターが、
皆様のニーズにマッチした案件を提案させていただきます!
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
案件提案型フリーエンジニア支援サービス『SYNAPSE』
http://www.neuron-network.co.jp/fe-synapse/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
ruby 動的にインスタンス変数を設定 instance_variable_set
動的にインスタンス変数を設定する方法を、紹介してみたいと思います。
動的にインスタンス変数を設定するには、instance_variable_set を使用します。
以下は、CSVファイルから読み込んだ値を、動的にインスタンス変数に設定する例です。
CSV.open の使用方法は、以下を参照してください。
http://www.ruby-lang.org/ja/man/html/CSV.html
---------------test.rb-------------------------
require 'csv'
class Test
@@cols = %w(one two three four five)
def set_value(row)
row.each_index do |i|
instance_variable_set('@'
+ @@cols[i], row[i])
end
end
def start
CSV.open('test.csv', 'r') do |row|
set_value(row)
puts @one, @two, @three, @four, @five
end
end
end
---------------------------------------------
この例での、test.csv の内容は、以下のようになります。
---------------test.csv------------------------
"data1-1","data1-2","data1-3","data1-4","data1-5"
"data2-1","data2-2","data2-3","data2-4","data2-5"
----------------------------------------------
この例の実行結果は、以下のようになります。
---------------実行結果---------------------
data1-1
data1-2
data1-3
data1-4
data1-5
data2-1
data2-2
data2-3
data2-4
data2-5
----------------------------------------------
配列 @@cols の要素の文字列が
instance_variable_set('@' + @@cols[i], row[i])
の部分で、インスタンス変数として設定されます。
*+*+*+*+*+*+*+*+*+*+*+***+*
フリーエンジニアの方々へ
支援サービス『SYNAPSE』で案件を提供させい頂いております。
当サービスのメディエイターが、
皆様のニーズにマッチした案件を提案させていただきます!
↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
案件提案型フリーエンジニア支援サービス『SYNAPSE』
http://www.neuron-network.co.jp/fe-synapse/
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
*+*+*+*+*+*+*+*+*+*+*+***+*
