![]() |
Модераторы: Akina |
![]() ![]() ![]() |
|
Эд |
|
|||
Unregistered |
Всем добрый день!
Вот написал я программку на VB6 под WIN98. Скомпилировал в .exe - всё OK. Теперь несу екзешник на другую машину, запускаю там - фиг вам!- показывает Run time Error 713: -"на этой машине не зарегистрирован класс, требуется файл msstdfmt.dll" Нахожу на своей машине этот файл, несу туда же, сую, - никакого эффекта! :((((( Все равно та же ошибка. Как побороть такую ситуацию? В общем-то, проблемы переносимости у меня были и раньше: то Msvbvm60 не хватает, то какого-нибудь .ocx, но они, в общем, легко решались добавлением требуемого файла, а теперь вот капитально споткнулся :(((( И вообще, есть ли способ заранее узнать, какие именно внешние файлы требует скомпилированный экзешник, чтоб не таскать его по куче хе~овых машин, проверяя переносимость. Хочется же, чтоб люди не пеняли на меня, мол, твоя прога у меня не запускается. |
|||
|
||||
bom |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 329 Регистрация: 22.2.2004 Где: Казахстан, Алматы Репутация: 4 Всего: 6 |
"Пуск"->"Выполнить", в окошке вводишь: regsvr32.exe путь_к_dll\msstdfmt.dll Вообще, правильно было бы использовать Package & Deployment Wizard для создания дистрибутива, в котором будут присутствовать все необходимые для работы проги компоненты и при установке они будут автоматически регистрироваться в системе.
На счет Msvbvm60 ты уже в курсе, посмотреть же остальные компоненты, которые ты сам подключил в проект можно кликнув менюшки "Проект"->"Ссылки"; "Проект"->"Компоненты". Это сообщение отредактировал(а) bom - 13.8.2004, 20:27 |
||||
|
|||||
Эд |
|
|||
Unregistered |
Спасибо, bom!
![]() ------------------------ Вот про regsvr я не знал! А про создание дистрибутива мне говорили, только не люблю я их, - виндовых инсталляшек. Назаменяют кучу файлов, а потом начинает глючить система... Так что не хотелось бы пользователя грузить тем же. Лучче я громоздкий исходник сделаю, но пусть, за то, экзешник просто работает, ничего не изменяя на машине пользователя, не вписывая в системный реестр мусора и прочее подобное... (Идеал, конечно,- а идеалов нету на свете))))) == Вот при таком подходе: этот самый "класс" он от чего возникает, не скажешь ли? Одну прогу писал - такой ошибки не было. Вторую - на той же машине, тем же VB, одними стандартными(!) контролами, теми же приемами программирования - и этот "класс" почему-то появился... Я конечно, методом исключения, найду, что именно в исходнике за него ответственно, тока много времени понадобится: VB дома, а проверяю - несу на работу (на самой слабой машине), т.е. сутки - на каждый "цикл". А про .ocx, мне тут сказали про Fusion, которая их в экзешник может запихнуть. Но я не попробовал еще. Всем спасибо, Эд |
|||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Fusion то в ехе'шник их засунит, но потом точно так же вывалит тебе .ocx'ы в системную папку...
Читай тут: http://forum.vingrad.ru/index.php?showtopic=21194 -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
Эд |
|
|||
Unregistered |
Сенк ю вери мачч!!!!!
Спасибо что предупредил! Значительно лучше запаковать в зип вместе с .ocx, и пользователь просто распаковывает всё в один (свой!) каталог. А то сделали из \SYSTEM свалку. ЗЫ Прежний твой пост внимательно прочитал. Спасибо за информацию ![]() |
|||
|
||||
boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 12 Всего: 35 |
Эд, про регистрацию ActiveX-ов не забывай.
Или сделай регистрацию из кода. -------------------- Никогда не говори никогда |
|||
|
||||
Эд |
|
|||
Unregistered |
Пока действую методом тыка
![]() Вообще теперь стараюсь все делать из стандартных элементов, кроме случаев, когда уж никак обойтись нельзя. А вот к слову: есть dllка, которая управляет устройством. Но без описания (просто от одной проги). Как узнать, какие у нее имена параметров, свойств? Чего она хочет при запуске в VB? Там внутри у нее нет имен, чтоб выцарапать их? Эд |
|||
|
||||
boevik |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1452 Регистрация: 31.5.2004 Где: Израиль Репутация: 12 Всего: 35 |
а dllка это ActiveX или простая?
-------------------- Никогда не говори никогда |
|||
|
||||
Эд |
|
|||
Unregistered |
Простая. Она только к устройству обращается. А прога была на VB5 писана. Мне не нравится. (Думаю свою попробовать.)
Эд |
|||
|
||||
bom |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 329 Регистрация: 22.2.2004 Где: Казахстан, Алматы Репутация: 4 Всего: 6 |
Тогда надо самому позаботиться что бы прога работала на других машинах, как альтернативу инсталлятору можно попробовать использовать самораспаковывающийся архив со всеми необходимыми компонентами, которые будут извлечены в папку с прогой. Заметил одну особенность, если не прав, поправьте, - "родные" компоненты при старте программы ищутся сначала в ее папке, потом в системной, когда находятся, то если не зарегистрированны, регистрируются автоматически. "Не родные" - требуется зарегистрировать самому, можно прописать процедуру регистрации в процедуре обработки ошибки, т. е. если при запуске проги инициируется ошибка 713, то в обработке этой ошибки, как советует boevik, сделать регистрацию "не родной" dll и возвратиться обратно. На всякий случай чтоб прога не зациклилась, если регистрация не произойдет, можно добавить счетчик, ограничивающий количество попыток скажем 2 и выгружающим прогу с сообщением о невозможности регистрации компонента.
На эту dll где то есть ссылка в проекте. Найди ее и удали если она не нужна и попала в туда случайно методом copy - paste ![]() |
||||
|
|||||
bom |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 329 Регистрация: 22.2.2004 Где: Казахстан, Алматы Репутация: 4 Всего: 6 |
Предлагаю уменьшить цикл, разрегистрировав msstdfmt.dll на домашней машине командой regsvr32.exe /u путь_к_dll\msstdfmt.dll ![]() |
|||
|
||||
Эд |
|
|||
Unregistered |
Всем спасибо, друзья!
![]() "Цикл" я действительно уменьшил, просто временно перенося msstdfmt в другое место, и обнаружил вот что. Сперва я думал, что причина в примененном новом (для меня ![]() ![]() И - ничего подобного! Дело оказалось не в этом, а в том, то для одного текстового поля было установлено свойство DataFormat (по умолчанию оно пустое). А я ставил ему number, вот и возникал этот "класс". Всё уже исправил, так что на этот раз соблюсти свои принципы мне удалось: прога без всякой инсталляции, одним файлом (не считая msvbvm60, это же VB все-таки, что поделаешь).
Ага! Вот я и забочусь... Да, компоненты ищутся сначало около экзешника., на этом я и основываюсь; всё действительно можно распаковать из архива в один каталог. А касательно специальной регистрации - это уже плохо, чем меньше прога меняет, тем лучше, так что от этого пытаюсь уходить. Вот в этой, например, удалось совсем не использовать дополнительных .ocx, все сделал вручную, хотя должен признать, что они все-таки значительно облегчали жизнь. Пока; всем удачи и СПАСИБО!!! Эд |
|||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: 19 Всего: 99 |
Я думаю, что ты просто до потолка будешь прыгать когда начнешь программировать на Си. Там можно все статически залинковать и будет у тебя один (распухший правда
![]() -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
Эд |
|
|||
Unregistered |
Си - хороший язык... Но я к Бейсику привык, вот беда
![]() Рожденный ползать, летать не може ![]() Твоя "стеганография" мне понравилась (хотя сам метод, как полагают, изобретен Френсисом Бэконом, 16 век). А кстати, не в курсе,- правда ли что PGP конкретно сломали? Эд |
|||
|
||||
ReSeT |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 17.8.2004 Репутация: нет Всего: нет |
Очень даже может!!!
Я тоже долгое время не мог с бейсика на другой язык перейти, но потом поюзал масм32... понравилось...начал разбираться, маленькие программы на асме писать(большие и серьезные пока еще на бейсике...), а через некоторое время понял в чем сила реальных классов(дело в том что в ВБ классы до седьмой версии - как в си структуры) начал на Сях прогать...теперь на бейсике (даже .Net) не могу нормально прогать(точнее могу, но привык уже к Си) PS: Конечно же все поняли,что когда я говорил про С то имел ввиду С++ PPS:А то подумают, что идиот какой-то(в С классов нет). ![]() ![]() ![]() Так что юзай Си++! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "VB6" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | VB6 | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |