لا يمكن الوصول إلى مجموعة ASP FileSystemObject عن طريق الفهرس
-
21-08-2019 - |
سؤال
هل أنا مجنون؟ لا يمكنني العثور على طريقة للحصول على الملف الأول في مجلد باستخدام 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