1 sayfadan 1. sayfa

Dosya isimleri sıralaması

İletiTarih: 17 Kas 2020 12:37
C_E_M
Merhaba,
Dosya isimlerini bir listbox içerisine aşağıdaki gibi alıyorum.

For Each Dosya In CreateObject("Scripting.FileSystemObject").GetFolder(TextBox1 & "\" & ListBox1).Files
ListBox2.AddItem Dosya.Name
Next
Dosya isimleri;
isim_1.jpg
isim_10.jpg
isim_2.jpg
isim_3.jpg
olarak geliyor.

Ben aşağıdaki gibi gelmesini istiyorum. Bir yolu varsa yardımcı olur musunuz. Teşekkürler.
isim_1.jpg
isim_2.jpg
isim_3.jpg
.
isim_10.jpg

Cevap: Dosya isimleri sıralaması

İletiTarih: 17 Kas 2020 15:56
veyselemre
Kod: Tümünü seç
    ListBox2.Clear
    ListBox2.ColumnCount = 2
    say = 0
    For Each Dosya In CreateObject("Scripting.FileSystemObject").GetFolder(TextBox1 & "\" & ListBox1).Files
        If Dosya.Name Like "isim*" Then
            ListBox2.AddItem Dosya.Name
            ListBox2.List(say, 1) = Replace(Dosya.Name, "isim_", "")
            say = say + 1
        End If
    Next
    ls = ListBox2.List
    For i = 0 To UBound(ls) - 1
        For ii = i + 1 To UBound(ls)
            If Val(ls(i, 1)) > Val(ls(ii, 1)) Then
                ara = ls(i, 0)
                ls(i, 0) = ls(ii, 0)
                ls(ii, 0) = ara
                ara = ls(i, 1)
                ls(i, 1) = ls(ii, 1)
                ls(ii, 1) = ara
            End If
        Next ii
    Next i
    ListBox2.List = ls
    ListBox2.ColumnCount = 1

Cevap: Dosya isimleri sıralaması

İletiTarih: 19 Kas 2020 18:33
C_E_M
Cevabınız için teşekür ederim.
Bu şekilde değilde acaba isimleri dosya isimlerine göre alabilir miyiz?
Yani ilk döngüde sıralı olarak alma imkanı varmı acaba.
1.jpg den sonra 10.jpg almadan..

1.jpg, 2.jpg,....,9.jpg,10.jpg olarak alınabilir mi?

Cevap: Dosya isimleri sıralaması

İletiTarih: 19 Kas 2020 22:21
Erkan Akayay
Dosya ismi verirken dikkat etmeniz gerekiyor. 1 2 3 gibi numaralar vermemek gerekiyor. Dosya sıralamasında hep çıkan bir sorun. Düzeltmek için uzun kodlar yazmak gerekir. Uzun kod yazmamak için ben biraz yandan dolandım. Ben C:\x kalsöründe test yaptım kodumda. GetFolder("C:\x") kısmını kendinize göre düzenlersiniz. Listbox1 üzerinde çalıştım onuda düzenleyiniz.

Kod: Tümünü seç
Dim dosya_listesi: Set dosya_listesi = CreateObject("System.Collections.ArrayList")
For Each dosya In CreateObject("Scripting.FileSystemObject").GetFolder("C:\x").Files
dosya_listesi.Add Format(Split(Split(dosya.Name, "_")(1), ".")(0), "00000")
Next
dosya_listesi.Sort
For Each sirali In dosya_listesi
ListBox1.AddItem CInt(sirali) & ".jpg"
Next