Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VBA: Visual Basic: Dir-listaus

Sivun loppuun

Queq [07.06.2006 17:19:30]

#

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 Sub

Tuo 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?

Antti Laaksonen [07.06.2006 21:13:45]

#

Järjestelyn voi helposti tehdä itse, mutta mikä on tässä tapauksessa tarkka järjestelyperiaate?

Queq [08.06.2006 06:54:15]

#

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.

setä [08.06.2006 08:50:15]

#

Ei onnistu ilman etunollia:
01.txt
.
.
09.txt
10.txt
jne.

Metabolix [08.06.2006 10:09:28]

#

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.

Antti Laaksonen [08.06.2006 10:39:07]

#

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ä.

tesmu [08.06.2006 13:38:56]

#

Voit toki kokeilla mitä Listboxin Sorted = True tapahtuma tekee.

Queq [08.06.2006 18:44:35]

#

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ä?


Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta