Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Vb tiedoston hallinnan listaus

Sivun loppuun

Cc [13.11.2004 00:30:01]

#

Olen tekemässä ohjelmaa joka listaa tiedoston hallinnan tiedostot erilliselle Lista.txt tiedostolle. Mutta tarvitsisin hiukan apua koodin kanssa kun minun ohjelmani ei suostu kirjoittamaan kun yhden tiedoston kansiosta siihen Lista.txt tiedostoon ja kun uudelleen tekee niin se pyyhkii vanhan pois.

Koodi:

Private Sub Form_Load()
    MkDir "C:\Listatut"
End Sub

Private Sub Drive1_Change()
    Dir1.Path = Drive1.Drive
End Sub

Private Sub Dir1_Change()
    File1.Path = Dir1.Path
End Sub

Private Sub Command3_Click()
    tied$ = Dir$("File1 *-*")
    Do While tied$ <> ""
    Print tied$; "C:\Listatut\Lista.txt"
    tied$ = Dir$
    Loop
End Sub

Private Sub Command2_Click()
    Open "C:\Listatut\Lista.txt" For Output As #1
    Write #1, "Tiedosto:"
    Write #1, File1
    Close #1
End Sub

Blaze [13.11.2004 01:05:29]

#

Avaa tiedosto Outputin sijaan Append-moodissa.

Cc [13.11.2004 12:52:11]

#

Se ei siltikään listannut kuin yhden tiedoston nimen sille tekstitiedostolle.

hunajavohveli [13.11.2004 12:56:46]

#

Koitas:

Open "C:\Listatut\Lista.txt" For Append As #1
Print #1, "Tiedosto:"
Print #1, File1
Close #1

En kyllä ole varma auttaako tuo mitään, mutta Writeä en ole koskaan käyttänyt, ja Print on ainakin itselläni aina toiminut. Oletko varma, että tuo koodi edes ajetaan useamman kerran? Siis, että tuo nimi on varmasti kuuluu olla Command2_Click tms.

Cc [13.11.2004 13:14:37]

#

en ole varma että ajetaanko sitä useampia kertoja. tämä on ensimmäinen sellainen "isompi" projektini ja ihan kokonaan oma toteuttamani. mutta siinä on drivelistbox, dirlistbox ja filelistbox ja kolme command buttonia ja kun painaa command2 buttonia niin sen pitäisi listata dirlistboxin tiedostot erilliseen tekstitiedostoon.

hunajavohveli [13.11.2004 13:22:54]

#

Tarkoitat kai FileListboxin, etkä DirListboxin? Ainakin koodissasi on "Write #1, File1" eikä "Write #1, Dir1". Mutta jos teet sen vain noin, niin se tulostaa vain sen kodan, mikä listassa on valittuna. Pitäisi tehdä silmukka joka tallentaa vuorotellen jokaisen kohdan listasta. Esim

For i = 0 To File1.ListCount   'silmukka nollasta rivien määrään
Print #1, File1.List(i)   'tallennetaan kohta i
Next i

Kokeiles toimiiko noin.

Cc [13.11.2004 13:35:55]

#

Kiitos Hunajavohvelille. Kun tuolla minun koodissa on Tuo

Private Sub Form_Load()
MkDir "C:\Listatut"
End Sub

Nii saisiko siihen mitenkään sellaista koodia joka tarkistaisi että onko kansio jo olemassa ja jos on niin että ei tekisi sitä uudellee jos tekee sen uudelleen niin se valittaa että

Run-time error '75':
Path/File access error

jrantala [13.11.2004 14:33:25]

#

If Dir("C:\Listatut") = "" Then
  MkDir "C:\Listatut"
End if

Tuon pitäisi toimia...

Cc [13.11.2004 21:19:58]

#

ei toiminnut.. sanoo samaa

Run-time error '75':
Path/File access

Sen koodin pitäisi tarkistaa onko C:llä sellainen kansio kuin Listatut ja jos on nii ei tekisi sitä ja jos ei ole nii tekisi sellaisen kansion sinne.

Antti Laaksonen [13.11.2004 21:27:40]

#

Vilkaisepa tämän keskustelun viimeinen viesti.

Cc [13.11.2004 21:43:15]

#

Kiitos antti tuo auttoi siihen tarkistamiseen mutta miten saisin sen vielä tekemään sen kansion jos sitä ei ole olemassa.

Antti Laaksonen [13.11.2004 21:48:15]

#

No se onnistuu juuri tuolla MkDir-komennolla. Muuta vain jrantalan koodia niin, että parametri vbDirectory on mukana.

Cc [13.11.2004 22:10:19]

#

Kiitos antti.

Cc [14.11.2004 00:18:26]

#

Muokkailin koodiani pikkuisen ja törmäsin ongelmaan mitä en onnistunnut ratkaisemaan

Private Sub Form_Load()
If Dir("C:\Listatut", vbDirectory) = "" Then
  MkDir "C:\Listatut"
End If
End Sub

Private Sub Drive1_Change()
    Dir1.Path = Drive1.Drive
End Sub

Private Sub Dir1_Change()
    File1.Path = Dir1.Path
End Sub

Private Sub command2_click()
Open "C:\Listatut\Lista.txt" For Append As #1
Print #1, "Kansio mistä listattiin:"
Print #1, Dir1.Path
Print #1, "Tiedostot:"
For i = 0 To File1.ListCount
Print #1, File1.List(i)
Next i
lista$ = Dir1.Path
List1.AddItem lista$
End Sub

Private Sub Command1_Click()
    Form2.Show
End Sub

Ongelma on sellainen että tuolla koodilla ei voi listata kuin kerran ja sitten joutuu käynnistämään ohjelman uudelleen että voi listata jonkun muun kansion. Missä ongelma on nii se on tuo "Open "C:\Listatut\Lista.txt" For Append As #1" käsky koska se sanoo jo että tiedosto on jo auki. onko ratkaisuja miten voisin listata loputtomia kertoja yhdellä ohjelman avauksella?

Blaze [14.11.2004 02:27:25]

#

Tottakai se tiedosto on auki, kun et sulje sitä missään välissä.

Close #1

Cc [14.11.2004 02:28:30]

#

oho :D


Sivun alkuun

Vastaus

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

Tietoa sivustosta