7 个解决方案
#1
对于
A-B-C.ext
是不是 A 是最高位,B 是次高位……
A-B-C.ext
是不是 A 是最高位,B 是次高位……
#2
简单一点,判断文件名是否是以 1-1、2-1、3-1、……、9-1、10-1 开头,即:
AnsiString file = ".....";
bool check = false;
for(int i=1;i<=10;i++)
if( !check && file.Pos(IntToStr(i)+"-1") == 1 ) {
check = true;
}
if( check == true ) {
//符合要求
}
AnsiString file = ".....";
bool check = false;
for(int i=1;i<=10;i++)
if( !check && file.Pos(IntToStr(i)+"-1") == 1 ) {
check = true;
}
if( check == true ) {
//符合要求
}
#3
另外一种办法,将文件名根据 - 符号分开,判断 - 号前是否为高位是否为 1-10,次高位是否为 1,即:
TStringList *list = new TStringList();
AnsiString file = "........";
list->Delimiter = '-';
list->DelimitedText = file;
if( list->Count > 3 && //由于文件名中有两个 - 号,所以应该分隔成三个部份
list->Strings[0].ToIntDef(-1) >= 1 && //高位
list->Strings[0].ToIntDef(-1) <= 10 &&
list->Strings[1].ToIntDef(-1) == 1 ) {//次高位
//符合要求
}
delete list;
TStringList *list = new TStringList();
AnsiString file = "........";
list->Delimiter = '-';
list->DelimitedText = file;
if( list->Count > 3 && //由于文件名中有两个 - 号,所以应该分隔成三个部份
list->Strings[0].ToIntDef(-1) >= 1 && //高位
list->Strings[0].ToIntDef(-1) <= 10 &&
list->Strings[1].ToIntDef(-1) == 1 ) {//次高位
//符合要求
}
delete list;
#4
对头。
#5
非常感谢楼上的赐教,我还想请教一个问题,就是如何给上述的程序中的那个“file”赋上具体的文件名。比如在“..\Courseware\”下有些上述格式的多媒体文件,当程序要求显示文件名时,首先遍历Courseware目录下所有的文件和文件夹的名称,然后将符合要求的所有文件名显示在ListView中,如何实现取得Courseware目录下所有文件/文件夹的名称这一过程?
在获取文件的名称时有没有诸如GetFileName(..\\Courseware\*.*)——当然这是我猜想的取得文件名的函数——然后返回AnsiString格式的文件名的函数?
再次感谢.
在获取文件的名称时有没有诸如GetFileName(..\\Courseware\*.*)——当然这是我猜想的取得文件名的函数——然后返回AnsiString格式的文件名的函数?
再次感谢.
#6
查这几个函数
FindFirst
FindNext
FindClose
int FountainSearchAllFiles(AnsiString FileName, TStringList *FStringList, bool FPath, bool FFullPath)
//功能:搜索文件
//参数:
// FileName - 文件类型(可含 * ?)
// FStringList - 存放搜索结果
// FPath - 包含目录名
// FFullPath - 搜索到的文件名是否包含文件所在目录
//返回值:搜索到的项数
{
AnsiString sFindFile = FileName;
AnsiString sFilePath = ExtractFilePath(FileName.Trim());
if( sFilePath == "" ) sFilePath = GetCurrentDir();
AnsiString sCurrentPath = GetCurrentDir();
try{
TSearchRec sr;
if( sFilePath != "" )
SetCurrentDir(sFilePath);
int iAttributes;
//search paths
if( FPath )
{
iAttributes = 0;
iAttributes |= faReadOnly * true;
iAttributes |= faHidden * true;
iAttributes |= faSysFile * true;
iAttributes |= faVolumeID * true;
iAttributes |= faDirectory * true;
iAttributes |= faArchive * true;
iAttributes |= faAnyFile * true;
int iFind = FindFirst("*.*", iAttributes, sr);
// int iFind = FindFirst(sFileName.Trim().c_str(), iAttributes, sr);
while( iFind == 0
&& (
// sr.Name == "."
// || sr.Name == ".."
// ||
(sr.Attr & faDirectory) == faDirectory
)
)
{
FStringList->Add(FFullPath ? sFilePath + sr.Name : sr.Name);
iFind = FindNext(sr);
}
FindClose(sr);
}
//Search files
iAttributes = 0;
iAttributes |= faReadOnly * true;
iAttributes |= faHidden * true;
iAttributes |= faSysFile * true;
iAttributes |= faVolumeID * true;
iAttributes |= faDirectory * true;
iAttributes |= faArchive * true;
iAttributes |= faAnyFile * true;
int iFind = FindFirst(FileName.Trim().c_str(), iAttributes, sr);
while( iFind == 0 )
{
if (
sr.Name != "."
&& sr.Name != ".."
&& (sr.Attr & faDirectory) != faDirectory
)
{
FStringList->Add(FFullPath ? sFilePath + sr.Name : sr.Name);
// FStringList->Add(sr.Name);
}
iFind = FindNext(sr);
}
FindClose(sr);
SetCurrentDir(sCurrentPath);
return(FStringList->Count);
}//try
catch(...)
{
SetCurrentDir(sCurrentPath);
return(FStringList->Count);
}
}
//---------------------------------------------------------------------------
FindFirst
FindNext
FindClose
int FountainSearchAllFiles(AnsiString FileName, TStringList *FStringList, bool FPath, bool FFullPath)
//功能:搜索文件
//参数:
// FileName - 文件类型(可含 * ?)
// FStringList - 存放搜索结果
// FPath - 包含目录名
// FFullPath - 搜索到的文件名是否包含文件所在目录
//返回值:搜索到的项数
{
AnsiString sFindFile = FileName;
AnsiString sFilePath = ExtractFilePath(FileName.Trim());
if( sFilePath == "" ) sFilePath = GetCurrentDir();
AnsiString sCurrentPath = GetCurrentDir();
try{
TSearchRec sr;
if( sFilePath != "" )
SetCurrentDir(sFilePath);
int iAttributes;
//search paths
if( FPath )
{
iAttributes = 0;
iAttributes |= faReadOnly * true;
iAttributes |= faHidden * true;
iAttributes |= faSysFile * true;
iAttributes |= faVolumeID * true;
iAttributes |= faDirectory * true;
iAttributes |= faArchive * true;
iAttributes |= faAnyFile * true;
int iFind = FindFirst("*.*", iAttributes, sr);
// int iFind = FindFirst(sFileName.Trim().c_str(), iAttributes, sr);
while( iFind == 0
&& (
// sr.Name == "."
// || sr.Name == ".."
// ||
(sr.Attr & faDirectory) == faDirectory
)
)
{
FStringList->Add(FFullPath ? sFilePath + sr.Name : sr.Name);
iFind = FindNext(sr);
}
FindClose(sr);
}
//Search files
iAttributes = 0;
iAttributes |= faReadOnly * true;
iAttributes |= faHidden * true;
iAttributes |= faSysFile * true;
iAttributes |= faVolumeID * true;
iAttributes |= faDirectory * true;
iAttributes |= faArchive * true;
iAttributes |= faAnyFile * true;
int iFind = FindFirst(FileName.Trim().c_str(), iAttributes, sr);
while( iFind == 0 )
{
if (
sr.Name != "."
&& sr.Name != ".."
&& (sr.Attr & faDirectory) != faDirectory
)
{
FStringList->Add(FFullPath ? sFilePath + sr.Name : sr.Name);
// FStringList->Add(sr.Name);
}
iFind = FindNext(sr);
}
FindClose(sr);
SetCurrentDir(sCurrentPath);
return(FStringList->Count);
}//try
catch(...)
{
SetCurrentDir(sCurrentPath);
return(FStringList->Count);
}
}
//---------------------------------------------------------------------------
#7
一个字:高 !
#1
对于
A-B-C.ext
是不是 A 是最高位,B 是次高位……
A-B-C.ext
是不是 A 是最高位,B 是次高位……
#2
简单一点,判断文件名是否是以 1-1、2-1、3-1、……、9-1、10-1 开头,即:
AnsiString file = ".....";
bool check = false;
for(int i=1;i<=10;i++)
if( !check && file.Pos(IntToStr(i)+"-1") == 1 ) {
check = true;
}
if( check == true ) {
//符合要求
}
AnsiString file = ".....";
bool check = false;
for(int i=1;i<=10;i++)
if( !check && file.Pos(IntToStr(i)+"-1") == 1 ) {
check = true;
}
if( check == true ) {
//符合要求
}
#3
另外一种办法,将文件名根据 - 符号分开,判断 - 号前是否为高位是否为 1-10,次高位是否为 1,即:
TStringList *list = new TStringList();
AnsiString file = "........";
list->Delimiter = '-';
list->DelimitedText = file;
if( list->Count > 3 && //由于文件名中有两个 - 号,所以应该分隔成三个部份
list->Strings[0].ToIntDef(-1) >= 1 && //高位
list->Strings[0].ToIntDef(-1) <= 10 &&
list->Strings[1].ToIntDef(-1) == 1 ) {//次高位
//符合要求
}
delete list;
TStringList *list = new TStringList();
AnsiString file = "........";
list->Delimiter = '-';
list->DelimitedText = file;
if( list->Count > 3 && //由于文件名中有两个 - 号,所以应该分隔成三个部份
list->Strings[0].ToIntDef(-1) >= 1 && //高位
list->Strings[0].ToIntDef(-1) <= 10 &&
list->Strings[1].ToIntDef(-1) == 1 ) {//次高位
//符合要求
}
delete list;
#4
对头。
#5
非常感谢楼上的赐教,我还想请教一个问题,就是如何给上述的程序中的那个“file”赋上具体的文件名。比如在“..\Courseware\”下有些上述格式的多媒体文件,当程序要求显示文件名时,首先遍历Courseware目录下所有的文件和文件夹的名称,然后将符合要求的所有文件名显示在ListView中,如何实现取得Courseware目录下所有文件/文件夹的名称这一过程?
在获取文件的名称时有没有诸如GetFileName(..\\Courseware\*.*)——当然这是我猜想的取得文件名的函数——然后返回AnsiString格式的文件名的函数?
再次感谢.
在获取文件的名称时有没有诸如GetFileName(..\\Courseware\*.*)——当然这是我猜想的取得文件名的函数——然后返回AnsiString格式的文件名的函数?
再次感谢.
#6
查这几个函数
FindFirst
FindNext
FindClose
int FountainSearchAllFiles(AnsiString FileName, TStringList *FStringList, bool FPath, bool FFullPath)
//功能:搜索文件
//参数:
// FileName - 文件类型(可含 * ?)
// FStringList - 存放搜索结果
// FPath - 包含目录名
// FFullPath - 搜索到的文件名是否包含文件所在目录
//返回值:搜索到的项数
{
AnsiString sFindFile = FileName;
AnsiString sFilePath = ExtractFilePath(FileName.Trim());
if( sFilePath == "" ) sFilePath = GetCurrentDir();
AnsiString sCurrentPath = GetCurrentDir();
try{
TSearchRec sr;
if( sFilePath != "" )
SetCurrentDir(sFilePath);
int iAttributes;
//search paths
if( FPath )
{
iAttributes = 0;
iAttributes |= faReadOnly * true;
iAttributes |= faHidden * true;
iAttributes |= faSysFile * true;
iAttributes |= faVolumeID * true;
iAttributes |= faDirectory * true;
iAttributes |= faArchive * true;
iAttributes |= faAnyFile * true;
int iFind = FindFirst("*.*", iAttributes, sr);
// int iFind = FindFirst(sFileName.Trim().c_str(), iAttributes, sr);
while( iFind == 0
&& (
// sr.Name == "."
// || sr.Name == ".."
// ||
(sr.Attr & faDirectory) == faDirectory
)
)
{
FStringList->Add(FFullPath ? sFilePath + sr.Name : sr.Name);
iFind = FindNext(sr);
}
FindClose(sr);
}
//Search files
iAttributes = 0;
iAttributes |= faReadOnly * true;
iAttributes |= faHidden * true;
iAttributes |= faSysFile * true;
iAttributes |= faVolumeID * true;
iAttributes |= faDirectory * true;
iAttributes |= faArchive * true;
iAttributes |= faAnyFile * true;
int iFind = FindFirst(FileName.Trim().c_str(), iAttributes, sr);
while( iFind == 0 )
{
if (
sr.Name != "."
&& sr.Name != ".."
&& (sr.Attr & faDirectory) != faDirectory
)
{
FStringList->Add(FFullPath ? sFilePath + sr.Name : sr.Name);
// FStringList->Add(sr.Name);
}
iFind = FindNext(sr);
}
FindClose(sr);
SetCurrentDir(sCurrentPath);
return(FStringList->Count);
}//try
catch(...)
{
SetCurrentDir(sCurrentPath);
return(FStringList->Count);
}
}
//---------------------------------------------------------------------------
FindFirst
FindNext
FindClose
int FountainSearchAllFiles(AnsiString FileName, TStringList *FStringList, bool FPath, bool FFullPath)
//功能:搜索文件
//参数:
// FileName - 文件类型(可含 * ?)
// FStringList - 存放搜索结果
// FPath - 包含目录名
// FFullPath - 搜索到的文件名是否包含文件所在目录
//返回值:搜索到的项数
{
AnsiString sFindFile = FileName;
AnsiString sFilePath = ExtractFilePath(FileName.Trim());
if( sFilePath == "" ) sFilePath = GetCurrentDir();
AnsiString sCurrentPath = GetCurrentDir();
try{
TSearchRec sr;
if( sFilePath != "" )
SetCurrentDir(sFilePath);
int iAttributes;
//search paths
if( FPath )
{
iAttributes = 0;
iAttributes |= faReadOnly * true;
iAttributes |= faHidden * true;
iAttributes |= faSysFile * true;
iAttributes |= faVolumeID * true;
iAttributes |= faDirectory * true;
iAttributes |= faArchive * true;
iAttributes |= faAnyFile * true;
int iFind = FindFirst("*.*", iAttributes, sr);
// int iFind = FindFirst(sFileName.Trim().c_str(), iAttributes, sr);
while( iFind == 0
&& (
// sr.Name == "."
// || sr.Name == ".."
// ||
(sr.Attr & faDirectory) == faDirectory
)
)
{
FStringList->Add(FFullPath ? sFilePath + sr.Name : sr.Name);
iFind = FindNext(sr);
}
FindClose(sr);
}
//Search files
iAttributes = 0;
iAttributes |= faReadOnly * true;
iAttributes |= faHidden * true;
iAttributes |= faSysFile * true;
iAttributes |= faVolumeID * true;
iAttributes |= faDirectory * true;
iAttributes |= faArchive * true;
iAttributes |= faAnyFile * true;
int iFind = FindFirst(FileName.Trim().c_str(), iAttributes, sr);
while( iFind == 0 )
{
if (
sr.Name != "."
&& sr.Name != ".."
&& (sr.Attr & faDirectory) != faDirectory
)
{
FStringList->Add(FFullPath ? sFilePath + sr.Name : sr.Name);
// FStringList->Add(sr.Name);
}
iFind = FindNext(sr);
}
FindClose(sr);
SetCurrentDir(sCurrentPath);
return(FStringList->Count);
}//try
catch(...)
{
SetCurrentDir(sCurrentPath);
return(FStringList->Count);
}
}
//---------------------------------------------------------------------------
#7
一个字:高 !