Private Sub Command1_Click()
Dim polku As String: polku = "C:\testi\*.txt"
Dim filu As String
filu = Dir(polku)
Do While filu <> ""
List1.AddItem filu
filu = Dir
Loop
End SubTuo kyllä toimii, mutta kuinka nuo saa järjestettyä tiettyyn järjestykseen (siis järjestys missä tiedostojen nimet on ListBoxissa)?
Eli, jos tekstitiedostoja on useita, nimeltään 1.txt, 2.txt ... 24.txt. Listaus tulee tässä muodossa: 1.txt, 10.txt 11.txt jne. kun olisi tärkeää saada tiedostot ListBoxiin tässä järjestyksessä: 1.txt, 2.txt, 3.txt ...
Miten tuo siis onnistuu? Jollain arrayfunktiolla? Onko sellaisia Visual Basicissa?
Järjestelyn voi helposti tehdä itse, mutta mikä on tässä tapauksessa tarkka järjestelyperiaate?
Tarkoituksena olisi järjestää se tälläiseen järjestykseen:
1.txt
2.txt
3.txt
4.txt
..
10.txt
11.txt
..
19.txt
20.txt
..
24.txt
Eli, ihan numeron mukaan.
Ei onnistu ilman etunollia:
01.txt
.
.
09.txt
10.txt
jne.
Toki voit tehdä tietueen, jossa on Integer ja String. Laita kaikki nimet sinne, sitten poimi jokaisesta nimen numeroarvo Integeriin Val- ja Left-funktioiden avulla ja järjestä nämä tietueet lukuarvon mukaan. Jos kansiossa on muitakin kuin numeroituja tiedostoja, se mutkistaa asiaa hieman, etenkin, jos nimessä voi olla sama luku mutta sen jälkeen eri kirjaimia.
Tarkoitin lähinnä, että jos tiedostojen nimissä voi olla sekaisin numeroita ja kirjaimia, järjestelyperiaate ei ole itsestään selvä. Mutta jos kaikki nimet alkavat luvulla ja päättyvät samalla tavalla, riittää, että järjestelyssä tarkastellaan numeroista muodostuvaa alkuosaa. Nimet kannattaa lukea ensin taulukkoon ja järjestellä valmiiksi ennen listalle lisäystä.
Voit toki kokeilla mitä Listboxin Sorted = True tapahtuma tekee.
Tiedostot ovat oikeastaan muotoa (a1.txt, a2.txt ... a24.txt); eli nimi muodostuu kirjaimesta, joka on aina vakio, ja numerosta. Mikä olisi helpoin tapa saada nuo järjestymään? Sedän tapa(ko)? Metabolixin selitystä en ihan ymmärtänyt.
Sedän tavassa tulee vain se ongelma, että myöhemmin ohjelmassa availen noita tiedostoja hakemalla ListBoxista tiedostojen nimet (esim. listBox1.List(0)).
tesmu kirjoitti:
Voit toki kokeilla mitä Listboxin Sorted = True tapahtuma tekee.
VBA:ssa ei tätä ominaisuutta ilmeisesti ole. Vai olenko väärässä?
Aihe on jo aika vanha, joten et voi enää vastata siihen.