Hej, bl.a. Sven Pon har svarat på nedanastående och ref. till ett liknade problem som uppstod för bla ett år sedan. Hej Hej Sven Hej Jo Sven. Rättelse: Jag slår inte ihop exe-filen och .gro och .fag filerna utan de läggs gemensamt i samma mapp. Hej Känns fan så krångligt... :) Hej Sven Får erkanna att jag lite håller med Sven. Du använder för många kodrader. Varför inte kapsla i en subrutin?Problem med Win 98 ,2000 etc
Det är ett jätteproblem. Det kan funka på 5 datorer och helt plötligt listas inte filerna alls på den 6:e datorn, dessutom finns i det fallet inte heller ngt felmeddelande.
Jag hade tänkt om ngn kan ge en förenklad kodning utan Microsoft scripting... på nedanstående så att funktionen fungerar oavsett operativsystem.
Helst då att filerna listas i direkt anslutning till samma mapp som exe.filen ligger i. Då bör det garanterat funka oavsett om det är en enkel Win98 eller second edition etc...
Alltså mitt önskemål:
En Command en listBox och sedan listas alla txt.filer i listboxen.
Tack på förhand...fortfarande energisk nybörjare....
Private Sub Command1_Click()
List1.Clear
'Referens till Microsoft Scripting Runtime krävs för FSO
Dim objFso As Scripting.FileSystemObject
Dim objFolder As Scripting.Folder
Dim objFile As Scripting.File
Set objFso = New Scripting.FileSystemObject
Set objFolder = objFso.GetFolder("C:\Databas\Sakfiler")
' Loopa igenom alla filer i foldern
For Each objFile In objFolder.Files
If objFile.Type = "Text Document" Then
List1.AddItem objFile.Name
End If
Next
Set objFso = Nothing
Set objFolder = Nothing
End SubSv: Problem med Win 98 ,2000 etc
Tycker att du skall byta ut ListBox mot
FileListBox och sätta filter till *.txt
Sedan kan du behandla FileListBox på samma sätt som
vilken listbox som helst.
mvh
SvenSv: Problem med Win 98 ,2000 etc
Men fortfarande ha kvar Microsoft scripting ... eller ???Sv: Problem med Win 98 ,2000 etc
Jag vet inte om jag missförstått något men !
Om du har de eftersökta textfilerna i samma mapp
som din applikation och i den en FileListBox som
har Pattern satt till *.txt så kommer ju denna ListBox
med automatik innehålla alla TextDokument.
DSSv: Problem med Win 98 ,2000 etc
Så här...inte Ditt fel, jag oklar.
Jag vill lista samtliga fil med ex filändelsen .gro
i samma mapp som exe.filen ligger och allrahelst i en Listbox därför att man bl.a slipper se filändelsens namn.
Ett antal andra filer heter .fag som filändelse.
I basen är dessa filer .gro och .fag textfiler, men för att kunna söka på olika filer i mappen där exe.filen också placerats, vill jag kunna differentiera dessa.
Så, anledningen till att jag slår ihop exe.filen och samtliga filer är för att slippa alla problem när filerna läggs i undermappar från exe.filen och användningen av Microsoft scripting runtime.....
Har Du en bra kodningsförslag.
mvh
KennethSv: Problem med Win 98 ,2000 etc
Sv: Problem med Win 98 ,2000 etc
Mmmmmmmmmmmm. ! Tror fortfarande att det är bra
med en FileListBox. Du sätter Pattern till *.fag;*.gro
FileListBoxen kan du göra som en dummy dvs Visible=False
Nu har du ju dem i en typ ListBox .Om det är viktigt att dom
sedan har likadan ändelse ,kan du ju loopa genom FileListBoxen
och läsa in i en vanlig ListBox
Dim i As Long,tmpStr As String
For i = 0 To File1.ListCount -1
tmpStr = Left$(File1.List(i),Len(File1.List(i) -3)
List1.AddItem tmpStr & "txt"
Next 'i
DSSv: Problem med Win 98 ,2000 etc
Använd Dir istället!
Private Sub Form_Load()
Dim sFil As String
sFil = Dir(App.Path & "\*.gro")
Do While sFil<>""
lstFiler.Add sFil
sFil = Dir
Loop
sFil = Dir(App.Path & "\*.fag")
Do While sFil<>""
lstFiler.Add sFil
sFil = Dir
Loop
End Sub
Om programmet kan tänkas ligga direkt på roten ("C:\" eller "H:\") i en enhet så måste du kolla det och i så fall skippa det första "\".
/Niklas JanssonSv: Problem med Win 98 ,2000 etc
Vilket ser krångligast ut, ditt förslag eller mitt ?
Du tillhör tydligen dom som tror att ju fler programrader
man skriver ju bättre blir det . Suck
DSSv: Problem med Win 98 ,2000 etc
Jag körde Ditt första förslag och lät ändelsen ligga kvar som en ren FileListBox. Jag kör på det. Funkade som det skulle ..tack för det.
Nog med krångel med Microsft scripting runtime eländet.
Ska även kolla sista "långa kodningen" för framtida bruk. Vi lite äldre (åldern), måste till viss del "respektera ungdomarnas kunnande" om det nu ligger till på det viset i det här aktuella fallet.Sv: Problem med Win 98 ,2000 etc
<code>
Sub ListFiles(ListBox As ListBox, PathName As String)
Dim FileNamn As String
FileNamn = Dir$(PathName)
Do While Len(FileNamn)
ListBox.Add FileNamn
FileNamn = Dir$()
Loop
End Sub
Private Sub Form_Load()
ListFiles lstFiler, App.Path & "\*.gro"
ListFiles lstFiler, App.Path & "\*.fag"
End Sub
</code>
Inte så mycket skillnad i antal rader kanske. Men lite snygare och desutom en funktion du kan återanvända.