VBScript Untuk Setiap masalah

Saya bingung bagaimana melakukan loop for-each untuk array objek. Saat ini, metode saya memberi saya kesalahan dalam salah satu dari dua cara. Entah perulangan for dijalankan, dan mengalami masalah karena menganggap variabel kelas tidak terdefinisi, atau mengalami masalah bahwa tipe objek adalah penugasan ilegal.

Inilah kelas yang saya tentukan:

Class url_Link
     Public title, link
     Public Default Function Init(newTitle, newLink)
         title = newTitle
         link = newLink
         Set Init = Me
     End Function
End Class

Sebagai referensi, kesalahan yang saya dapatkan adalah:

Kesalahan runtime Microsoft VBScript '800a01f5'
Penetapan ilegal: 'url_Link'
baris 674

menggunakan cuplikan kode ini:

<% for each x in systemSettingsArray%> 
<tr>
<td class='nograph'><A href='/id<%x.link%>'><%x.title%></a></td>
</tr>
<%next%> 

dan ketika saya mengubah url_Link menjadi x, saya mendapatkan kesalahan ini:

Panggilan prosedur atau argumen "tautan" tidak valid

Kode yang membuat objek dan mengisi array:

Dim systemSettingsArray(1)
Dim link
Dim arrayCounter
arrayCounter = 0

Set systemSettingsArray(arrayCounter) = (New url_Link)("Account Administration", "Maintenance/Account_Admin.asp")
arrayCounter = arrayCounter + 1
Set systemSettingsArray(arrayCounter) = (New url_Link)("Time Approval", "Maintenance/system_Time_Approval.asp")

person Marshall Tigerus    schedule 26.07.2013    source sumber
comment
Saya juga mendapatkan kesalahan panggilan prosedur atau argumen yang tidak valid jika saya mengubahnya menjadi for i=0 menjadi UBound(systemSettingsArray) dan mengubah panggilan ke systemSettingsArray(i).link   -  person Marshall Tigerus    schedule 26.07.2013
comment
bagaimana Anda mengisi systemSettingsArray?   -  person Ekkehard.Horner    schedule 26.07.2013
comment
kode untuk membangun objek dan mengisi array telah ditambahkan.   -  person Marshall Tigerus    schedule 26.07.2013
comment
terima kasih untuk kodenya; menurut pengujian saya, ini 'berfungsi' selama Anda menghindari kesalahan yang ditunjukkan oleh Ansgar - menggunakan nama kelas sebagai nama variabel.   -  person Ekkehard.Horner    schedule 26.07.2013
comment
Saya sudah membuatnya berfungsi, kecuali sekarang tidak menampilkan apa pun selain kode kesalahan. Ada pemikiran mengapa ia melakukan itu   -  person Marshall Tigerus    schedule 27.07.2013
comment
Beberapa catatan pengujian untuk kejelasan. Di dalam loop for saya mendapatkan kesalahan panggilan prosedur yang tidak valid, tetapi menggunakan kode yang hampir sama di luar loop for, kode tersebut akan ditampilkan dengan benar. Ini sangat membingungkan   -  person Marshall Tigerus    schedule 27.07.2013
comment
Izinkan saya mengungkapkan apa yang baru saja saya katakan sedikit lebih baik. Menempatkan panggilan variabel di luar tag html membuatnya berfungsi dengan baik (saya melakukan respon.write(systemSettingsArray(i).title) dan respon.write(systemSettingsArray(i).link) dan keduanya berfungsi dengan baik, ketika berada di html yang menjadi kacau)   -  person Marshall Tigerus    schedule 27.07.2013
comment
Ternyata masalahnya adalah saya kehilangan tanda sama dengan. Tag asp seharusnya ‹%= %› bukan ‹% %›   -  person Marshall Tigerus    schedule 27.07.2013


Jawaban (1)


Anda tidak dapat menjadikan url_link sebagai nama kelas dan sebagai nama variabel secara bersamaan. Selain itu, saya tidak melihat Anda menginisialisasi url_link objek di mana pun. Sebuah instance dari kelas khusus harus dibuat seperti ini:

Set linkobj = New url_link

atau seperti ini, ketika Anda memiliki metode yang mengembalikan referensi ke objek itu sendiri (dalam kasus Anda Init):

Set linkobj = (New url_link).Init("foo", "bar")

Menandai metode sebagai Default memungkinkan Anda menghilangkan pemanggilan metode eksplisit, sehingga Anda dapat menulis di atas sebagai

Set linkobj = (New url_link)("foo", "bar")
person Ansgar Wiechers    schedule 26.07.2013
comment
Saya hanya tidak memasukkannya ke dalam kode yang tercantum. Saya akan menambahkannya ke kode. - person Marshall Tigerus; 26.07.2013
comment
Anda masih tidak dapat menggunakan nama yang sama untuk variabel kelas dan loop bahkan setelah Anda menginisialisasi systemSetingsArray. Harap perbarui pertanyaan Anda dengan kode yang Anda ganti url_link dengan x. - person Ansgar Wiechers; 26.07.2013