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; }
}