c++ builder XE4, 10.2 Tokyo > 自動付加された数値のsuffix (例 "Edit12"の12)を取得する実装
6810 ワード
動作確認
C++ Builder XE4
RAD Studio 10.2 Tokyo Update 2 (追記: 2017/12/27)
コンポーネント名のEdit12から12を取得したり、Button3から3というインデックスを取得したい。
http://qiita.com/7of9/items/90c60cb9baa6c435b0cd
で実装していたものでは"_"始まりの数値しか取得できなかった。
以下でStrToIntDef()を使った実装をした。
Unit1.cpp
static int16_t getSuffixIndex(String name)
{
String work;
int16_t val;
for(int idx=0; idx < name.Length(); idx++) {
work = name.SubString(idx + 1, MAXINT);
val = StrToIntDef(work, -99);
if (val != -99) {
return val;
}
}
return -1;
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int16_t val = getSuffixIndex(L"Button314");
ShowMessage(IntToStr(val));
val = getSuffixIndex(L"Edit12");
ShowMessage(IntToStr(val));
val = getSuffixIndex(L"Edit12_34");
ShowMessage(IntToStr(val));
}
上記の結果、314, 12, 34の数値が取得できるようになった。
引数をSenderにした場合の実装は以下。
関連 http://qiita.com/7of9/items/d4d0a62d44c170b58dda
static int16_t getSuffixIndex(TObject *Sender)
{
TComponent *cmpPtr = (TComponent *)Sender;
String name = cmpPtr->Name;
String work;
int16_t val;
for(int idx=0; idx < name.Length(); idx++) {
work = name.SubString(idx + 1, MAXINT);
val = StrToIntDef(work, -99);
if (val != -99) {
return val;
}
}
return -1;
}
Author And Source
この問題について(c++ builder XE4, 10.2 Tokyo > 自動付加された数値のsuffix (例 "Edit12"の12)を取得する実装), 我々は、より多くの情報をここで見つけました https://qiita.com/7of9/items/8639a90678fc55349bcd著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .