c++ builder XE4, 10.2 Tokyo > フォルダ文字列に不正な文字が入っているかチェックする実装
動作環境
C++ Builder XE4
Rad Studio 10.2 Tokyo Update 2 (追記: 2017/12/27)
フォルダ名に不正な文字列が入っているかのチェックをしたい。
関連 http://qiita.com/7of9/items/9aa82ce970c2898da5d0
Qiitaへのコメントにてセパレータ文字列を1つのstring型で定義している例を参考にした。
Unit1.cpp
static bool DirName_hasInvalidChar(String target, String invalids)
{
String invld;
for(int idx = 0; idx <= invalids.Length(); idx++) {
invld = invalids.SubString(idx + 1, 1);
if (target.Pos(invld) > 0) {
return true;
}
}
return false;
}
static void Test_DirName_hasInvalidChar()
{
String invalids = ".\\/:*?\"<>|";
bool ok1 = DirName_hasInvalidChar(L"XXX", invalids);
bool ok2 = DirName_hasInvalidChar(L"314159265358979", invalids);
bool ng1 = DirName_hasInvalidChar(L"...", invalids);
bool ng2 = DirName_hasInvalidChar(L"A.B.C", invalids);
bool ng3 = DirName_hasInvalidChar(L"A\\B", invalids);
bool ng4 = DirName_hasInvalidChar(L"A/B", invalids);
bool ng5 = DirName_hasInvalidChar(L"A:B", invalids);
bool ng6 = DirName_hasInvalidChar(L"A*B", invalids);
bool ng7 = DirName_hasInvalidChar(L"A?B", invalids);
bool ng8 = DirName_hasInvalidChar(L"A\"B", invalids);
bool ng9 = DirName_hasInvalidChar(L"A<B", invalids);
bool ng10 = DirName_hasInvalidChar(L"A>B", invalids);
bool ng11 = DirName_hasInvalidChar(L"A|B", invalids);
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Test_DirName_hasInvalidChar();
}
関数名は今後リファクタを検討するが、とりあえず実装した。
Author And Source
この問題について(c++ builder XE4, 10.2 Tokyo > フォルダ文字列に不正な文字が入っているかチェックする実装), 我々は、より多くの情報をここで見つけました https://qiita.com/7of9/items/7584f8f79a7774d71a36著者帰属:元の著者の情報は、元の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 .