Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Split och räkna filer problem.

Postades av 2003-07-24 09:29:02 - Benni Svensson, i forum visual basic - allmänt, Tråden har 5 Kommentarer och lästs av 422 personer

Jag har två problem.

1 Split.

Jag försöker splita en fil:
<code>
C:\Inetpub\wwwroot\Hemsidor\WHL\M_Temp\tmp_1_Index.asp
</code>
Borde inte vara några problem.
<code>
Dela = Split(g, "_",)
</code>
Som jag se det, så är ju denna filen i 4:a delar
0=C:\Inetpub\wwwroot\Hemsidor\WHL\M
1=Temp\tmp
2=1
3=Index.asp
Det är index 3 jag vill ha tag i, men så fort som jag skriver Del = Dela(3) så får jag ett error:
Supscript out off range.
Som jag läser det, jag vill ha någonting som ligger utanför index.
Hur löser jag det??

2 Räkna

Jag behöver räkna hur många av samma fill som finns i katalogen.
Det kan se ut så här:
<code>
tmp_1_Index.asp
tmp_2_Index.asp
tmp_3_Index.asp
tmp_4_Index.asp
tmp_1_Historia.asp
tmp_2_Historia.asp
</code>
Som ni ser, så förekommer samma filnamn flera gånger(när den är splittad).
Jag försöker så här:
<code>
WebbPath = Form1.StatusBar1.Panels(1).Text & "\M_Temp\"

For Each g In fso.GetFolder(WebbPath).Files
If fso.FileExists(g) Then
Dela = Split(g, "_")
Del = Dela(3) <----------------------Här ligger första felet
If Del <> Form1.List2 Then
k = 1
Else
k = k + 1 <--------------------Här skulle jag räkna filerna, men hur?
End If
End If
Next
</code>
Några förslag till lösning?


Svara

Sv: Split och räkna filer problem.

Postades av 2003-07-24 10:36:41 - Andreas Hillqvist

Detta kanske är till någon hjälp?
<code>
Function GetName(FileName As String) As String
Dim Pos As Long
Dim Last As Long
Pos = InStr(1, FileName, "_", vbBinaryCompare)
Do While Pos
Last = Pos + 1
Pos = InStr(Last, FileName, "_", vbBinaryCompare)
Loop
If Last Then
GetName = Mid(FileName, Last)
Else
GetName = FileName
End If
End Function

Sub FSOTest()
Dim fso As Scripting.FileSystemObject
Dim File As Scripting.File
Dim Folder As Scripting.Folder

Dim Dictionary As Scripting.Dictionary
Dim vTemp As Variant
Dim Name As String
Dim WebbPath As String

WebbPath = "c:\" 'Form1.StatusBar1.Panels(1).Text & "\M_Temp\"

Set fso = New FileSystemObject
Set Folder = fso.GetFolder(WebbPath)
Set Dictionary = New Dictionary

For Each File In Folder.Files
Name = GetName(File.Name)
If Dictionary.Exists(Name) Then
Dictionary.Item(Name) = Dictionary.Item(Name) + 1
Else
Dictionary.Add Name, 1
End If
Next

For Each vTemp In Dictionary.Keys
Debug.Print vTemp & ": " & Dictionary.Item(vTemp)
Next
End Sub
</code>


Svara

Sv: Split och räkna filer problem.

Postades av 2003-07-24 11:18:10 - Sven Åke Persson

Fråga 1
>Dela = Split(g, "_",)

Vad gör det sista kommatecknet i Split(g,"_" detta ,) ???


Svara

Sv: Split och räkna filer problem.

Postades av 2003-07-24 11:45:01 - Benni Svensson

>SvenPon Ett misstag, när jag skulle föklara,sorry.
>Andreas Det såg väldigt intresant ut. Skall titta på det.
Det skall ju användas så här, i List2 så finns de filnamn som jag skall bearbeta. De hetter t ex
index.asp, historia.asp osv.
När de är bearbetade, så görs en kopia i ;_temp ock då blir namnen
tmp_1_Index.asp tmp_1_Historia.asp
För varje operation som jag gör så skall filnamnets nummer uppdateras.
tmp_1_Index.asp,tmp_2_Index.asp,tmp_3_Index.asp
Jag har aldrig använt mig av dictionary, är det rätt väg för detta?


Svara

Sv: Split och räkna filer problem.

Postades av 2003-07-24 12:14:43 - Andreas Hillqvist

Har du funderat på det här med information? Vist är det fantastisk vad man kan gör när man har tillräckligt.

Om du vill begränsa det till list2 så kan du skriva så här:
<code>
Function GetName(FileName As String) As String
Dim Pos As Long
Dim Last As Long
Pos = InStr(1, FileName, "_", vbBinaryCompare)
Do While Pos
Last = Pos + 1
Pos = InStr(Last, FileName, "_", vbBinaryCompare)
Loop
If Last Then
GetName = Mid(FileName, Last)
Else
GetName = FileName
End If
End Function

Sub FSOTest()
Dim fso As Scripting.FileSystemObject
Dim File As Scripting.File
Dim Folder As Scripting.Folder

Dim Dictionary As Scripting.Dictionary
Dim vTemp As Variant
Dim Index as Long
Dim Name As String
Dim WebbPath As String

WebbPath = "c:\" 'Form1.StatusBar1.Panels(1).Text & "\M_Temp\"


Set fso = New FileSystemObject
Set Folder = fso.GetFolder(WebbPath)
Set Dictionary = New Dictionary

For Index = 0 To Form1.List2.ListCount - 1
Dictionary.Add Form1.List2.List(Index), 0
Next

For Each File In Folder.Files
Name = GetName(File.Name)
If Dictionary.Exists(Name) Then
Dictionary.Item(Name) = Dictionary.Item(Name) + 1
End If
Next

For Each vTemp In Dictionary.Keys
Debug.Print vTemp & ": " & Dictionary.Item(vTemp)
Next
End Sub
</code>
Du har inte berättat hur du tänkt presentera resultatet. Jag listar därför resultatet i debug-fönstret.

Dictionary är något mycket användbart. Du bör lära dig använda det.


Svara

Sv: Split och räkna filer problem.

Postades av 2003-07-24 15:50:11 - Benni Svensson

Tack för all hjälp.
Jo Andreas information är skoj, men ibland så är det svårt att se träna för skogens
skull. Det är för mycket olika varianter som man kan göra, och det är inte alltid som man ser den smidigaste eller enklaste lösningen.
Nej jag har inte riktigt sagt vad jag skall ha detta till, men tanken är att det skall bli ett verktyg för att underlätta för flerspråkiga webbplatser.


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 165
27 952
271 704
657
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies