|
|
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
VladConnЯ всегда считал, что CreateObject в VB6 требуется исключительно для "недоделанных" компонентов СОМ, которые не поддерживают "As New". В остальных случаях - зачем? Ого. Не ожидал. Для того, чтобы создать экземпляр класса на другом сервере. Для того, чтобы создать экземпляр класса в новом потоке. например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:50 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
VladConn запутался чуток в расуждениях.... Ведь на одном компе все есть ( и прога работает и библиотеки нашлись) зачем тада компилятор нужен? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:54 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
ОК, а что, "As New" в этом случае работать не будет? Обязательно позднее связывание? Мне никогда не требовалось использовать CreateObject, потому и спрашиваю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 17:55 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
Slice, я не запутался Бенедикт, поток - это в английской терминологии thread, также? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 18:33 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
VladConn, позднее связывание - это работа через IDispatch, а не напрямую через vtbl, для программы и отсутствие полезных фишек типа AutoCompletion для программиста. К способу создания экземпляра отношения не имеет, разве что выполняя Set NewItem = CreateObject("MyLib.MyItem"), программа тратит время на проверку типа объекта, т.к. CreateObject возвращает Object. Если NewItem описан As MyLib.MyItem (библиотека типов MyLib упомянута в References), дальнейшее обращение к свойствам/методам пойдёт через vtbl. Для указанных мною случаев: 1) у New нет синтаксиса для явного указания сервера. Ну нет на клиентской машине сервера приложений, он стоИт на серверной машине, как тогда создать экземпляр? 2) использование New не приведёт к желаемому эффекту - экземпляр MultiUse класса создастся в основном потоке (кстати, под IDE и CreateObject сделает то же самое). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 18:40 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
VladConnSlice, я не запутался Бенедикт, поток - это в английской терминологии thread, также? Да. Еще один аргумент в пользу CreateObject - чтобы не держать постоянно лишних объектов (ссылок) в памяти. Создал объект - использовал - убил. Возникла ошибка при создании - прога не отвалилась (как в случае с референсами), а просто выругалась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 18:40 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
Melkiades, угу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 18:42 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
Melkiades, Я думаю, совсем не обязательно использовать CreateObject для того, чтобы не держать лишних ссылок в памяти. Разве Set Nothing здесь не достаточен? Что касается вопроса отвалится программа или нет - так я пишу соответственно поддержку ошибок. Но может я и чего-то не знаю. В таком случае было бы здорово увидеть живой код, иллюструющий бессилие On Error и полезность CreateObject, чтобы программа не отваливалась. Бенедикт, Спасибо за информацию о серверах и потоках. Насколько я знаю, VB6 не очень приспособлен для многопоточных задач, хотя в принципе можно. VladConn ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 18:55 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
Посмотрел внимательнее на CreateObject. Да, там опция на имя сервера. Я бы не стал на нее надеяться: сервера могут меняться. Все-таки инсталляция надежнее. А что касается многопотоковости - использование VB6 не лучшая идея для этого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 20:25 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
[quot VladConn]Я бы не стал на нее надеяться: сервера могут меняться.[/qout] Строковые параметры могут меняться, это точно . Настраиваемые параметры принято где-нибудь хранить - например, в реестре. [quot VladConn]Все-таки инсталляция надежнее.[/qout] Инсталляция чего? Поставить MDAC, чтоб ADODB.Command создавать локально, можно на любую клиентскую машину, а поставить какой-нибудь DCOM-сервер можно (исходя из логики приложения, цены, настроек безопасности...) только на одну специально выделенную машину, и пользоваться им будут десятки клиентов. Или технологии клиент-сервер и DCOM стали не нужны? Насчёт многопоточности. В MSDN Library в разделе "Visual Basic Concepts" (подчёркиваю - Concepts ) есть глава "Scalability and Multithreading", есть пример "Creating a Multithreaded Test Application". Да, с точки зрения человека, привыкшего к CreateThread, EnterCriticalSection и WaitForSingleObject, это не совсем та многопоточность (хотя можно что-то подсмотреть у того же Matthew Curland-а что-то в этом роде). Это многопоточность в русле COM (да и с точки зрения ОС потоки вполне нормальные). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.09.2006, 23:24 |
|
||
|
Написал программу, а на чужом компе она требует библиотеки
|
|||
|---|---|---|---|
|
#18+
Тут кстати у меня еще всплыло соображение насчет дистрибутива. Допустим, приложение использует библиотеки Excel. Вы, я, все-равно, составляем инсталляционный пакет, включающий нужные библиотеки. А как делать деплоймент на станцию, где нет Excel? Легально как? Ведь нужен лайсенс. Получается, что нужен-таки CreateObject еще и из соображений легальности? Мол если есть библиотека, то она подхватится, а нет, так у нас нет прав на ее установку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.09.2006, 15:16 |
|
||
|
|

start [/forum/topic.php?fid=60&gotonew=1&tid=2165227]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
155ms |
get topic data: |
6ms |
get first new msg: |
3ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 437ms |

| 0 / 0 |
