CString Builder XE10 TStringlistカスタムソートカスタムソート、デジタルファイル名のソートとインポート

デジタルファイル名のバッチインポートの並べ替え


// ------------------------------------------------ ----------------------------
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を返す; }
}

公開された41元の記事 ウォン称賛12 ビュー7018

おすすめ

転載: blog.csdn.net/lzksword/article/details/103156950