デジタルファイル名のバッチインポートの並べ替え
// ------------------------------------------------ ----------------------------
int __fastcall CrnSortList(TStringList * lst、int Index1 、int Index2)
{
String sz1 = ExtractFileName(lst- > Strings [Index1])。SubString(1、ExtractFileName(lst-> Strings [Index1])。Length()-4);
String sz2 = ExtractFileName(lst-> Strings [Index2])。SubString(1、ExtractFileName(lst -> Strings [Index2])。長さ()-4);
if(Form5-> isNum(sz1)&& Form5-> isNum(sz2))//数値の 場合
{
if(sz1.ToInt()<sz2.ToInt ())//家主からのリクエスト:Zhang San < 李四
{
return -1;
}
else if(sz1.ToInt()> sz2.ToInt())//家主からのリクエスト:Zhang San <李四
return 1;
else
return 0 ;
}
else //文字比較の場合
{
if(sz1 <sz2)//家主のリクエスト:Zhang San <李四
{
return -1;
}
else if(sz1> sz2)//家主のリクエスト:Zhang San <李四
return 1;
それ以外は
0を返す;
}
}
// ------------------------------------------------ ---------------------------
// ------------------------------------------------ ---------------------------
void __fastcall TForm5 :: BitBtn2Click(TObject * Sender)
{
AnsiString Dir = "";
// ++++++++++++++++++++++++++++++++++++++++++++++++
//計算時間
clock_t start、end、dtStart;
start = clock();
//
RzProgressBar1-> Percent = 0;
// ++++++++++++++++++++++++++++ ++++++++++++++++++
//選択したフォルダーの絶対パスがDirに保存されます
//出口が空です
// Dir = RzSelectFolderDialog1-> SelectedPathName;
//バッチかどうかを判断します処理
// if(!YNpl)
// {
if(RzSelectFolderDialog1-> Execute())
{
Dir = RzSelectFolderDialog1-> Directory;
// Form5-> RzMaskEdit1-> EditText = RightStr(Dir、3);
// RzMaskEdit1-> EditText = RightStr(Dir、3);
}
// else
// return;
//}
//その他
// Dir = PLpath;
// -----------------------
if(Dir.Length()== 0)
return;
int i、num、Lnum;
Lnum = ListView1-> Items-> Count;
TListItem * pItem = 0;
TSearchRec sr;
// int iAttributes = 0x0000003F;
//识别是否彩果
if(isNum(System :: Strutils :: RightStr(Dir、3)))
{
// Edit3-> Text = System :: Strutils :: RightStr(Dir、3);
}
if(FindFirst(Dir + "\\ *。txt"、faAnyFile、sr)== 0)
{ListView1-> Items-> BeginUpdate();
TStringList * Flist = new TStringList;
Flist-> Clear();
実行
{
Flist->追加(ディレクトリ+ "\\" + sr.Name)。
// ++++++++++++++++++++++++++++++++++++++++++++
// if( Lnum <100)
// RzProgressBar1-> Percent = Lnum;
// Application-> ProcessMessages();
// ++++++++++++++++++++++++++++++++++++++++++++
} while(FindNext (sr)== 0);
FindClose(sr);
//
// Flist-> Sorted = true;
Flist-> CustomSort(CrnSortList); //並び替えを行う
for(int i = 0; i <Flist-> Count; i ++)
{
pItem = ListView1-> Items-> Add();
pItem-> Caption = Lnum + 1;
pItem-> SubItems-> Add(ExtractFileName(Ftract-> Strings [i]));
pItem-> SubItems-> Add( "***"); //注数
pItem-> SubItems-> Add(Flist-> Strings [i]); //注数
// pItem-> SubItems-> Add( "*");
Lnum ++;
}
ListView1-> Items-> EndUpdate();
}
Lnum = ListView1-> Items-> Count;
// PageControl1-> ActivePageIndex = 0;
dtStart = end-start;
float dSec = float(dtStart)/ 1000;
RzStatusPane1-> Caption = "预导入大底:" + String(Lnum)+ "个";
ListView1-> Columns-> Items [0]-> Caption = "id [" + AnsiString(Lnum)+ "]";
RzStatusPane2-> Caption =
"消耗時:" + FloatToStrF(dSec、ffFixed、4,3)+ "秒";
RzProgressBar1-> Percent = 100;
}
// ------------------------------------------------ ----------------------------
//それが数値であるかどうかを判断します
bool TForm5 :: isNum(String str)
{
try {
float f; // StrToInt(str);
if(TryStrToFloat(str、f)== true)
trueを返します。
そうしないと
falseを返します。
}
catch(例外&例外)
{falseを返す; }
}