|
|
|
При переводе с VBScript на JavaScript цикл не работает(
|
|||
|---|---|---|---|
|
#18+
Есть у меня программа на VBS, которую я хотел перевести на JavaScript. Вот она: sFileName = "C:\TLBINF32.DLL" Set oTypeLib = CreateObject("TLI.TypeLibInfo") If IsObject(oTypeLib) Then oTypeLib.ContainingFile = sFileName WScript.Echo "TLB Name:" & vbTab & oTypeLib.Name WScript.Echo "TLB GUID:" & vbTab & oTypeLib.GUID WScript.Echo "TLB LCID:" & vbTab & oTypeLib.LCID WScript.Echo "TLB Ver.:" & vbTab & oTypeLib.MajorVersion & "." & oTypeLib.MinorVersion WScript.Echo vbCRLF & "CoClasses of Library:" WScript.Echo "---------" For Each oTypeLibInfo In oTypeLib.CoClasses WScript.Echo oTypeLibInfo.GUID & " : " & oTypeLibInfo.Name Next End If Перевел я ее и цикл for each..next заменил на for in object: sFileName="C:\TLBINF32.DLL"; var oTypeLib=new ActiveXObject("TLI.TypeLibInfo"); oTypeLib.ContainingFile=sFileName; etxt= "TLB Name:"+"\t"+oTypeLib.Name+"\n"; etxt+="TLB GUID:"+"\t"+oTypeLib.GUID+"\n"; etxt+="TLB LCID:"+"\t"+oTypeLib.LCID+"\n"; etxt+="TLB Ver.:"+"\t"+oTypeLib.MajorVersion+"."+oTypeLib.MinorVersion+"\n"; etxt+="\nCoClasses of Library:\n---------\n"; for(var otli in oTypeLib.CoClasses){etxt+=otli.GUID+" : "+otli.Name+"\n"}; WScript.Echo(etxt); Но теперь он не работает, помогите исправить! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2012, 17:57 |
|
||
|
При переводе с VBScript на JavaScript цикл не работает(
|
|||
|---|---|---|---|
|
#18+
Поясню, в TLBINF32.DLL функции для работы с dll файлами: может tbl извлекать и работать с ними. Эта программа должна выдать список всех функций в C:\\TLBINF32.DLL; объект TLI.TypeLibInfo находится в этой же dll, которая предварительно зарегистрирована. Вот еще архив с этой dll. В первом случае выдавала 3 функции, во втором, который я делал, ни одной... Я подозреваю, что что-то неверно у меня с циклом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.08.2012, 18:49 |
|
||
|
При переводе с VBScript на JavaScript цикл не работает(
|
|||
|---|---|---|---|
|
#18+
maksim32Есть у меня программа на VBS, которую я хотел перевести на JavaScript. Вот она: sFileName = "C:\TLBINF32.DLL" Set oTypeLib = CreateObject("TLI.TypeLibInfo") If IsObject(oTypeLib) Then oTypeLib.ContainingFile = sFileName WScript.Echo "TLB Name:" & vbTab & oTypeLib.Name WScript.Echo "TLB GUID:" & vbTab & oTypeLib.GUID WScript.Echo "TLB LCID:" & vbTab & oTypeLib.LCID WScript.Echo "TLB Ver.:" & vbTab & oTypeLib.MajorVersion & "." & oTypeLib.MinorVersion WScript.Echo vbCRLF & "CoClasses of Library:" WScript.Echo "---------" For Each oTypeLibInfo In oTypeLib.CoClasses WScript.Echo oTypeLibInfo.GUID & " : " & oTypeLibInfo.Name Next End If Перевел я ее и цикл for each..next заменил на for in object: sFileName="C:\TLBINF32.DLL"; var oTypeLib=new ActiveXObject("TLI.TypeLibInfo"); oTypeLib.ContainingFile=sFileName; etxt= "TLB Name:"+"\t"+oTypeLib.Name+"\n"; etxt+="TLB GUID:"+"\t"+oTypeLib.GUID+"\n"; etxt+="TLB LCID:"+"\t"+oTypeLib.LCID+"\n"; etxt+="TLB Ver.:"+"\t"+oTypeLib.MajorVersion+"."+oTypeLib.MinorVersion+"\n"; etxt+="\nCoClasses of Library:\n---------\n"; for(var otli in oTypeLib.CoClasses){etxt+=otli.GUID+" : "+otli.Name+"\n"}; WScript.Echo(etxt); Но теперь он не работает, помогите исправить! исли правильно понимаю, For Each в VBScript работаит аналогично foreach в пхп... то есть в перемнной oTypeLibInfo Вы получаете объект (ну то есть значение), так вот, а в for(var otli in oTypeLib.CoClasses) в javascript otli - это ключ массива, то есть надо писать Код: javascript 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2012, 09:48 |
|
||
|
При переводе с VBScript на JavaScript цикл не работает(
|
|||
|---|---|---|---|
|
#18+
Как помнится, ещё раньше вместо цикла For Each - в JS использовали перечислитель, типо псевдокода: Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2012, 10:15 |
|
||
|
При переводе с VBScript на JavaScript цикл не работает(
|
|||
|---|---|---|---|
|
#18+
Почитайте тут для старта: JScript: Функция, имитирующая цикл For Each в VBScript По коллекциям JScript использует энумератор, а по обычным массивам справляется через for each свой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2012, 10:18 |
|
||
|
При переводе с VBScript на JavaScript цикл не работает(
|
|||
|---|---|---|---|
|
#18+
VSVLAD, спасибо большое, но только в коде появляется вот это: "new Enumerator(oTypeLib.CoClasses)" в любом виде сразу получается системная ошибка приложения как в mshta.exe, и как в WScript.exe: Инструкция по адресу "0x247fca44" обратилась к памяти по адресу "0x0000001c". Память не может быть "written". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2012, 14:55 |
|
||
|
При переводе с VBScript на JavaScript цикл не работает(
|
|||
|---|---|---|---|
|
#18+
Програмёр, Ваш способ не подходит, к тому же цикл все равно ни разу не запускается. С критическими системными ошибками из-за кода, который я когда-либо писал, никогда не встречался, обычно обработчик ошибок указывает на ошибку.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2012, 15:00 |
|
||
|
При переводе с VBScript на JavaScript цикл не работает(
|
|||
|---|---|---|---|
|
#18+
В vbs версии программа мне выдает 3 функции SearchHelper, TypeLibInfo, TLIApplication: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. А вот в моей ни одной.. Значит она не находит в oTypeLib.CoClasses ни одного значения для otli. Надо как-то поиск этих значений сделать, чтоли.. Способом VSVLSD 'a у меня получилось: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2012, 15:29 |
|
||
|
При переводе с VBScript на JavaScript цикл не работает(
|
|||
|---|---|---|---|
|
#18+
maksim32, А не так разве? Код: javascript 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2012, 16:38 |
|
||
|
При переводе с VBScript на JavaScript цикл не работает(
|
|||
|---|---|---|---|
|
#18+
VSVLAD, даже если так, ошибка в "new Enumerator(oTypeLib.CoClasses);", до второй строчки не доходит( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.08.2012, 17:04 |
|
||
|
При переводе с VBScript на JavaScript цикл не работает(
|
|||
|---|---|---|---|
|
#18+
Хотел воспользоваться справкой к TLBINF32.DLL, но нигде ее не нашел. Если есть у кого или ссылку знаете, дайте кто-нибудь TLBINF32.chm! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2012, 09:39 |
|
||
|
При переводе с VBScript на JavaScript цикл не работает(
|
|||
|---|---|---|---|
|
#18+
Плохо ищете...Нашлось в первой двадцатке выдачи гугла: http://www.xlam.ch/download/docs/TlbInf32.chm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2012, 16:51 |
|
||
|
При переводе с VBScript на JavaScript цикл не работает(
|
|||
|---|---|---|---|
|
#18+
Вообщем не удалось подружить JS с библиотекой. Но например в отладчике смотрю и вижу: oTypeLib.CoClasses.Count - верное число объектов в коллекции, но не могу получить к ним доступ. А Enumerator падает как уже смотрели... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2012, 17:28 |
|
||
|
При переводе с VBScript на JavaScript цикл не работает(
|
|||
|---|---|---|---|
|
#18+
AndreTM, Спасибо большое! Я искал в Яндексе - ни одной ссылки и всего 25 ответов... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2012, 21:51 |
|
||
|
При переводе с VBScript на JavaScript цикл не работает(
|
|||
|---|---|---|---|
|
#18+
VSVLAD, большое спасибо что уделили внимание и помогли! Я разобрался с циклом: object.item(i) и перечислить все объекты. sFileName="C:\\TLBINF32.DLL"; var oTypeLib=new ActiveXObject("TLI.TypeLibInfo"); oTypeLib.ContainingFile=sFileName; var etxt= "TLB Name:"+"\t"+oTypeLib.Name+"\n"; etxt+="TLB GUID:"+"\t"+oTypeLib.GUID+"\n"; etxt+="TLB LCID:"+"\t"+oTypeLib.LCID+"\n"; etxt+="TLB Ver.:"+"\t"+oTypeLib.MajorVersion+"."+oTypeLib.MinorVersion+"\n"; etxt+="\nCoClasses of Library:\n---------\n"; for(i=1;i<=oTypeLib.CoClasses.Count;i++){ otli=oTypeLib.CoClasses.Item(i); etxt+=otli.Guid+" : "+otli.Name+"\n"}; WScript.Echo(etxt); Это лучший форум! Хоть где-то помогали.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2012, 21:56 |
|
||
|
При переводе с VBScript на JavaScript цикл не работает(
|
|||
|---|---|---|---|
|
#18+
" http://www.fpublisher.ru/documentation/javascript_doc/js14.docs%22%5Dhttp://www.fpublisher.ru/documentation/javascript_doc/js14.docs]http://www.fpublisher.ru/documentation/javascript_doc/js14.docs"]http://www.fpublisher.ru/documentation/javascript_doc/js14.docs ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.09.2012, 22:04 |
|
||
|
При переводе с VBScript на JavaScript цикл не работает(
|
|||
|---|---|---|---|
|
#18+
maksim32 Програмёр, Ваш способ не подходит, к тому же цикл все равно ни разу не запускается. С критическими системными ошибками из-за кода, который я когда-либо писал, никогда не встречался, обычно обработчик ошибок указывает на ошибку.. maksim32 VSVLAD, большое спасибо что уделили внимание и помогли! Я разобрался с циклом: object.item(i) и перечислить все объекты. sFileName="C:\\TLBINF32.DLL"; var oTypeLib=new ActiveXObject("TLI.TypeLibInfo"); oTypeLib.ContainingFile=sFileName; var etxt= "TLB Name:"+"\t"+oTypeLib.Name+"\n"; etxt+="TLB GUID:"+"\t"+oTypeLib.GUID+"\n"; etxt+="TLB LCID:"+"\t"+oTypeLib.LCID+"\n"; etxt+="TLB Ver.:"+"\t"+oTypeLib.MajorVersion+"."+oTypeLib.MinorVersion+"\n"; etxt+="\nCoClasses of Library:\n---------\n"; for(i=1;i<=oTypeLib.CoClasses.Count;i++){ otli=oTypeLib.CoClasses.Item(i); etxt+=otli.Guid+" : "+otli.Name+"\n"}; WScript.Echo(etxt); в js массив но не объект? Предложеный мной вариант правда не сработал? Если кто знает почему он мог не сработать, напишите пожалуйста. просто впервые с тактм сталкиваюсь. Заранее благодарен. P.s. Как предположение, могло ли это быть вызвано упущенным hasOwnProperty? Может всё намного проще, и оно просто обращалось к свойствам null или undefined? Вообщем догадок много, кто знает, подскажите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2012, 10:34 |
|
||
|
При переводе с VBScript на JavaScript цикл не работает(
|
|||
|---|---|---|---|
|
#18+
maksim32oTypeLib.CoClasses.Item(i); Я предполагаю (JS синтаксис плохо знаю) что это будет вызов свойство/метод Item с параметром "i" - возвратится объект, напротив я же полагал что надо делать так oTypeLib.CoClasses.Item[i] - но это не массив оказывается, также как и oTypeLib.CoClasses[i]. Возможно у JS нет свойств по-умолчанию. В VB вызов функции или обращение к элементу массива используются операнды - скобки. Поэтому и не замечал такого, что "не работало" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.09.2012, 12:06 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37940472&tid=1342144]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
159ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 479ms |

| 0 / 0 |
