لا يمكن الوصول إلى مجموعة ASP FileSystemObject عن طريق الفهرس

StackOverflow https://stackoverflow.com/questions/848851

سؤال

هل أنا مجنون؟ لا يمكنني العثور على طريقة للحصول على الملف الأول في مجلد باستخدام FileSystemObject (ASP الكلاسيكي).مع معظم المجموعات، قد تعتقد أن الفهرس 0 أو 1 قد يعمل، ولكن IIS يقول "استدعاء إجراء أو وسيطة غير صالحة".

لا يعمل أي من هذين السطرين الأخيرين:

Set oFileScripting = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFileScripting.GetFolder(sFolder)
Set oFiles = oFolder.Files
If oFiles.Count = 0 Then Response.Write "no files"
Response.Write oFiles(0).Name
Response.Write oFiles.Item(1).Name

هل أنا غبي جدًا، أم أنه لا توجد طريقة لاستخدام فهرس للوصول إلى هذه المجموعة بالذات؟

هل كانت مفيدة؟

المحلول

مجموعة الملفات ليست مصفوفة، ولا تحتوي على وظيفة الوصول العشوائي.إذا كنت في حاجة ماسة إلى هذه الوظيفة، فإن أقرب شيء لتقليدها هو التكرار عبر المجلد وإنشاء مصفوفة جديدة تحتوي على أسماء الملفات التي تم العثور عليها، واستخدام هذه المصفوفة الجديدة كمصدر للوصول العشوائي، وإنشاء كائنات ملف من قيم المصفوفة.

ReDim FileArray(oFiles.Count)

i = 0
For Each oFile In oFiles
   FileArray(i) = oFile.Name
   i = i + 1
Next

Set oFile = oFileScripting.GetFile(sFolder + "\" + FileArray(0))

أنا بالتأكيد لا أوصي بهذا إذا كان من الممكن تجنبه على الإطلاق.

نصائح أخرى

لا، ولكن يمكنك تعدادها وتتبع الفهرس بنفسك:

Set oFileScripting = CreateObject("Scripting.FileSystemObject")
Set oFolder = oFileScripting.GetFolder(sFolder)
Set oFiles = oFolder.Files
If oFiles.Count = 0 Then Response.Write "no files"

i = 0
For Each oFile In oFiles
   Response.Write i & " = " & oFile.Name
   i = i + 1
Next
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top