74 lines
1.8 KiB
Plaintext
74 lines
1.8 KiB
Plaintext
#include "dir.bi"
|
|
|
|
Type infoarchv
|
|
tamano As Longint
|
|
nombre As String
|
|
End Type
|
|
|
|
Sub sortFiles(files() As infoarchv)
|
|
Dim As Integer i, j, n = Ubound(files)
|
|
For i = 0 To n-1
|
|
For j = i+1 To n
|
|
If files(j).tamano < files(i).tamano Then
|
|
Swap files(i), files(j)
|
|
Elseif files(j).tamano = files(i).tamano Then
|
|
If files(j).nombre < files(i).nombre Then Swap files(i), files(j)
|
|
End If
|
|
Next j
|
|
Next i
|
|
End Sub
|
|
|
|
' Main program
|
|
Dim As String d
|
|
Line Input "Enter directory to search (leave blank for current directory): ", d
|
|
|
|
If d = "" Then d = Curdir
|
|
If Chdir(d) <> 0 Then Print "Could not change directory: "; d : End
|
|
|
|
Redim As String dirlist(0)
|
|
Dim As Integer i, cntarchv = 0
|
|
|
|
Dim As String cad = Dir("*", fbNormal)
|
|
While cad <> ""
|
|
Redim Preserve dirlist(cntarchv)
|
|
dirlist(cntarchv) = cad
|
|
cntarchv += 1
|
|
cad = Dir()
|
|
Wend
|
|
|
|
Dim As infoarchv files()
|
|
Redim files(cntarchv-1)
|
|
|
|
For i = 0 To cntarchv-1
|
|
Dim As Long f = Freefile
|
|
If Open(dirlist(i) For Binary Access Read As #f) = 0 Then
|
|
files(i).tamano = Lof(f)
|
|
files(i).nombre = dirlist(i)
|
|
Close #f
|
|
Else
|
|
files(i).tamano = -1
|
|
files(i).nombre = dirlist(i)
|
|
End If
|
|
Next
|
|
|
|
Print !"\nDirectory : "; d
|
|
Print String(40, "-")
|
|
sortFiles(files())
|
|
|
|
Dim As Boolean linea = False
|
|
For i = 0 To cntarchv-2
|
|
If files(i).tamano = files(i+1).tamano And files(i).tamano >= 0 Then
|
|
Print files(i).tamano; " "; files(i).nombre
|
|
Print files(i+1).tamano; " "; files(i+1).nombre
|
|
If i < cntarchv-2 Andalso files(i+1).tamano <> files(i+2).tamano Then linea = True
|
|
Else
|
|
linea = False
|
|
End If
|
|
If linea Then
|
|
Print String(40, "-")
|
|
linea = False
|
|
End If
|
|
Next
|
|
|
|
Sleep
|