Avatar billede Slettet bruger
10. april 2003 - 17:12 Der er 11 kommentarer og
1 løsning

Bestemt fil fra Files collection

Jeg sidder og roder lidt med FilsystemObject. Når jeg vil iterere filerne i en bestemt folder henter jeg objFolder.Files og laver:

Set objFiles = objFolder.Files

For Each objFile in objFiles
  ' gør noget ved hver fil - udskriv evt. navnet....
Next

MEN hvis jeg gerne vil have fil nummer 3 i "objFiles" hvad gør jeg så? Jeg har selvfølgelig sikret mig, at der er mindst 3 elementer i "objFiles" ("objFiles" er som vist et "Files" collection i et FSO Folder objekt).

Jeg har på MSDN kun kunne finde eksempler på hvorddan man itererer filerne i en bestemt folder - ikke på hvorddan jeg får fat i fil nummer X.
Avatar billede cesil Nybegynder
10. april 2003 - 20:25 #1
count = 0
For Each objFile in objFiles
count = count + 1
  if count = 3 then
    ' gør noget ved hver fil - udskriv evt. navnet....
  end if
Next
Avatar billede Slettet bruger
10. april 2003 - 20:35 #2
Ja det er også den workaround jeg ville bruge. Men man burde da kunne tilgå en collection via at index. Ellers kan man jo heller ikke iterere det.
Avatar billede grimbeast Nybegynder
11. april 2003 - 10:59 #3
Så vidt jeg kan se kan du ikke umiddelbart tilgå filerne på denne måde.
Hvis du prøver noget med:

Dim scobj As Scripting.FileSystemObject
Dim fld As Scripting.Folder
Dim fls As Scripting.Files

Set scobj = New Scripting.FileSystemObject

Set fld = scobj.GetFolder("C:\folder")
Set fls = fld.Files

debug.Print fls.Item(1).Name

Dette genererer en run-time fejl.

Du kan evt. oprette din egen collection når du alligevel ittererer filerne. Du kan f.eks. et Dictionary object. Det er lidt ligesom et Array - bortset fra at du her kan spørge direkte på f.eks. navnet på en fil - da objektet oprettes med key, values - f.eks. 1, filnavn1  2, filnavn2  3, filnavn3 - herefter kan du umiddelbart spørge på din key - og få din value ud.
Avatar billede Slettet bruger
11. april 2003 - 12:30 #4
Der ville jo ikke være en ide i at allokere yderligere hukkommelse til en ny collection og i øvrig alligevel iterere den gamle for at kopiere elementerne heroveri.

Det eneste jeg ville, var at hære, om selve Files collection havde mulighed for at tilgå sine elementer via deres index.

Jeg har brugt den workaround, som cesil har anbefalet. Dog har jeg gjort det ud fra min egen tankegang og desuden før cesil oprettede sit svar.

Dette, og det, at der kun er tale om en workaround, er min begrundelse for ikke at give points for det svar selvom jeg det åbenbart er det bedste bud.

Disse forslag til "workarounds" ser jeg som et tegn på, at FSO Files collection ikke kan gøre hvad jeg søger, så jeg vælger at lukke spm. her.
Avatar billede Slettet bruger
11. april 2003 - 12:32 #5
Kan man ikke acceptere sine egne svar mere, eller er jeg blevet blind?
Avatar billede Slettet bruger
26. august 2003 - 00:56 #6
Svar
Avatar billede Slettet bruger
26. august 2003 - 00:56 #7
Jeg kan ikke acceptere mit eget svar.... Hvis noget vil have 60 points så smid et svar her...
Avatar billede Slettet bruger
05. oktober 2003 - 12:39 #8
SVar!?!?
Avatar billede Slettet bruger
05. oktober 2003 - 12:42 #9
Jeg kan da godt lave et svar, hvis det virker så laver jeg bare et nyt til dig hvor du får dine point igen.
Avatar billede Slettet bruger
05. oktober 2003 - 18:49 #10
Det virkede.... ekperten bug?

Behold du bare de points :o)
Avatar billede Slettet bruger
05. oktober 2003 - 19:27 #11
Næ, jeg laver lige et spm. til dig, jeg har jo ikke deltaget i tråden :-)
Avatar billede Slettet bruger
05. oktober 2003 - 19:28 #12
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester