CString Builder XE10 TStringlist ordenación personalizada ordenar, ordenar e importar nombres de archivos digitales

Ordenar la importación por lotes de nombres de archivos digitales


// ------------------------------------------------ ----------------------------
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]). Length () -4);
    if (Form5-> isNum (sz1) && Form5-> isNum (sz2)) // Si es un número
    {
        if (sz1.ToInt () <sz2.ToInt ()) // solicitud del propietario: Zhang San <         李四
        {
            return -1;
        }
más if (sz1.ToInt ()> sz2.ToInt ()) // solicitud del propietario: Zhang San <李四
            return 1; de lo
        contrario,
            devuelva 0 ;
    }
    else // Si se trata de una comparación de caracteres
    {
        if (sz1 <sz2) // Solicitud del propietario: Zhang San <李四
        {
            return -1;
        }
        else if (sz1> sz2) // Solicitud del propietario: Zhang San <李四
            return 1; de lo
        contrario,
            devuelve 0;
    }

}

// ------------------------------------------------ ---------------------------

// ------------------------------------------------ ---------------------------
void __fastcall TForm5 :: BitBtn2Click (TObject * Sender)
{
AnsiString Dir = "";

    // ++++++++++++++++++++++++++++++++++++++++++++++++
     // tiempo de cálculo
     clock_t start, end, dtStart;
     start = clock ();
     //
     RzProgressBar1-> Percent = 0;
     // ++++++++++++++++++++++++++++ ++++++++++++++++++
          // La ruta absoluta de la carpeta seleccionada se guarda en Dir
    // Salir vacío
    // Dir = RzSelectFolderDialog1-> SelectedPathName;
  // Determinar si es por lotes Procesando
// if (! YNpl)
// {
    if (RzSelectFolderDialog1-> Execute ())
    {
     Dir = RzSelectFolderDialog1-> Directory;
     // Form5-> RzMaskEdit1-> EditText = RightStr (Dir, 3);
     // RzMaskEdit1-> EditText = RightStr (Dir, 3);
    }
// más
// retorno;
//}
// más
// 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 (Sistema :: Strutils :: RightStr (Dir, 3)))
    {
        // Editar3-> Texto = Sistema :: Strutils :: RightStr (Dir, 3);
    }
   if (FindFirst (Dir + "\\ *. txt", faAnyFile, sr) == 0)
      {ListView1-> Items-> BeginUpdate ();
          TStringList * Flist = new TStringList;
          Flist-> Clear ();
          do
          {
               Flist-> Append (Dir + "\\" + sr.Name);
                  // ++++++++++++++++++++++++++++++++++++++++++++
                   // if ( Lnum <100)
                   // RzProgressBar1-> Porcentaje = Lnum;
                   // Aplicación-> 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 (Flist-> 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 = fin-inicio;
     float dSec = float (dtStart) / 1000;
     RzStatusPane1-> Caption = "预 导入 大 底:" + Cadena (Lnum) + "个";
          ListView1-> Columns-> Items [0] -> Caption = "id [" + AnsiString (Lnum) + "]";
     RzStatusPane2-> Caption =
        "耗时:" + FloatToStrF (dSec, ffFixed, 4,3) + "秒";
     RzProgressBar1-> Porcentaje = 100;
}

// ------------------------------------------------ ----------------------------
// Determine si es un número
bool TForm5 :: isNum (String str)
{
    try {         

        flotador f; // StrToInt (str);       

       if (TryStrToFloat (str, f) == verdadero)           

           volver verdadero;       

       más           

      falso retorno;   

 }     

captura (excepción y excepción)   

 { falso retorno; }
}

Publicado 41 artículos originales · ganado elogios 12 · vistas 7018

Supongo que te gusta

Origin blog.csdn.net/lzksword/article/details/103156950
Recomendado
Clasificación