|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
写软件都是想的时间比写的时间要长的.如果反过来了就得看看是什么原因了.另外大家可以回去问问公司里的小MM.(一般企业里,跟你们交付软件接触得最多的是她们)排序|数组当您利用FILESYSTEMOBJECT工具取得某个目次下的文件列表的时分,你有无发明没法把持它们的排序体例,好比依照名字排序,依照扩大名排序,依照文件巨细排序等等,让我们试着用数组给它们排排序儿。
假如您想经由过程名字排序,那将长短常复杂的,可是假设你想经由过程文件巨细大概文件创建工夫等等来排序的时分,那末将有点贫苦。我们将经由过程二维数组做到这一点。
上面的代码演示了怎样经由过程选择排序体例到达的我们目标,单击排序,点两次就反着排了。
<HTML>
<HEAD>
<TITLE>文件排序演示</TITLE>
</HEAD>
<BODY>
<%
设定一个演示目次,:)
CONSTDIRECTORY="/"
用常数界说排序体例
CONSTFILE_NAME=0依照名字排序……顺次类推
CONSTFILE_EXT=1
CONSTFILE_TYPE=2
CONSTFILE_SIZE=3
CONSTFILE_CREATED=4
CONSTFILE_MODIFIED=5
CONSTFILE_ACCESSED=6
取得排序命令,默许为依照名字排序
req=Request("sortBy")
IfLen(req)<1ThensortBy=0ElsesortBy=CInt(req)
req=Request("priorSort")
IfLen(req)<1ThenpriorSort=-1ElsepriorSort=CInt(req)
设置倒序
IfsortBy=priorSortThen
reverse=true
priorSort=-1
Else
reverse=false
priorSort=sortBy
EndIf
接上去入手下手我们真实的代码了。。。
path=Server.MapPath(DIRECTORY)
Setfso=CreateObject("Scripting.FileSystemObject")
SettheCurrentFolder=fso.GetFolder(path)
SetcurFiles=theCurrentFolder.Files
给这些文件做一个轮回
DimtheFiles()
ReDimtheFiles(500)我任意定的一个巨细
currentSlot=-1startbeforefirstslot
我们将文件的一切相干信息放到数组内里
ForEachfileItemincurFiles
fname=fileItem.Name
fext=InStrRev(fname,".")
Iffext<1Thenfext=""Elsefext=Mid(fname,fext+1)
ftype=fileItem.Type
fsize=fileItem.Size
fcreate=fileItem.DateCreated
fmod=fileItem.DateLastModified
faccess=fileItem.DateLastAccessed
currentSlot=currentSlot+1
IfcurrentSlot>UBound(theFiles)Then
ReDimPreservetheFiles(currentSlot+99)
EndIf
放到数组里
theFiles(currentSlot)=Array(fname,fext,ftype,fsize,fcreate,fmod,faccess)
Next
如今都在数组里了,入手下手下一步
fileCount=currentSlot文件数目
ReDimPreservetheFiles(currentSlot)
排序
(8暗示string)
IfVarType(theFiles(0)(sortBy))=8Then
IfreverseThenkind=1Elsekind=2给字符排序
Else
IfreverseThenkind=3Elsekind=4数字、工夫。。。
EndIf
Fori=fileCountTO0Step-1
minmax=theFiles(0)(sortBy)
minmaxSlot=0
Forj=1Toi
SelectCasekind
Case1
mark=(strComp(theFiles(j)(sortBy),minmax,vbTextCompare)<0)
Case2
mark=(strComp(theFiles(j)(sortBy),minmax,vbTextCompare)>0)
Case3
mark=(theFiles(j)(sortBy)<minmax)
Case4
mark=(theFiles(j)(sortBy)>minmax)
EndSelect
IfmarkThen
minmax=theFiles(j)(sortBy)
minmaxSlot=j
EndIf
Next
IfminmaxSlotiThen
temp=theFiles(minmaxSlot)
</p>asp对于服务器的要求较高,一般的服务器如果访问量一大就垮了,不得不重启。 |
|