Никак не могу понять, что нужно использовать для того, чтобы DLL работала ВСЕГДА! Бьюсь уже несколько дней, хотя и раньше эта бяка преследовала меня, как только я написал DLL и вставил ее в прогу, в прищепке есть прога, что нужно сделать:
Скомпилируйте все(сначала DLL, потом прогу). Создайте инсталляционный пакет с минимумом файлов(последовательность действий: зайдите во вкладку "Файлы инсталляции" добавьте папку, зайдите в "данные об инсталляторе" нажмите "создать пакет" внизу). Затем удалите созданный инсталляционный пакет, и заново нажмите "создать пакет". В данном случае у меня вылетает runtimeerror204 и ничего не хочет работать, а если вместо DLL использовать мультик, то все в порядке. Перекомпиллировал все, теперь не работает очистка списка, еще раз -- не работает смена состояния кнопки. Что я делаю не так?
------------ Дoбавленo в 09.58:
Прилепил еще exe, если такого не случится, то буду смотреть у себя
Этот топик читают: Гость
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
карма: 10 |
| ||
файлы: 1 | exe.rar [246.4KB] [3096] |
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
а ExampleSystemDLL*.sha надо полагать работает?
|
|||
карма: 27 |
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
Работает, но тоже зависит от количества компилляций, можно сказать 25% шанс, что будет "облом" после компилляции Чаще всего эта бяка вылазит на больших проектах с большими DLL, таких как выше
|
|||
карма: 10 |
|
Ответов: 373
Рейтинг: 108
|
|||
У меня такая же ошибка c третьего раза.
По моему тут что-то с потоками не то. |
|||
карма: 0 |
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
А проблема, что с потоками чем вызвана? Присутствием DLL или чем-то в схеме, компилляции, компиллятора, компонента useHiDLL?
|
|||
карма: 10 |
|
Ответов: 373
Рейтинг: 108
|
|||
Если в Install.sha оставить только MemoryStream то ошибки нет.
Возможно из-за EventFromData (непроверял). |
|||
карма: 0 |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
проблема тут в чем угодно может - скорей всего в какой-то момент память, выделенная в DLL освобождается в основной программе(или наоборот) из-за чего и возникает ошибка. Определить точное место в такой схеме невозможно.
|
|||
карма: 27 |
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
Мне вот что интересно: runtimeerror происходит только после того как выполнится действие eventfromdata(или таймера, если вместо него). То есть проблема в том, что в DLL нет модуля(я так понял) сохранения данных(т.е как в программе можно memory вставить и не будет runtime, а в DLL будет, если обращаться к памяти комонента у которого есть что либо в ней, или по другому память не пуста)
У меня вообще есть такая мысль, Dilma, это скорее к вам, можно ли сделать другой метод редактирования DLL, компонент, который создавал новую sha-схему(или заменял старую) в папке с проектом(при сохранении проекта), по имени из свойства sha-name, и, не создавая лишних вкладок, брал и добавлял бы все данные по схеме из этого файла, а при компилляции создавал бы DLL по количеству компонентов с именами из свойств, так же вместо компонента DLL можно поставить EditMulti(Ex) , но старые методы обращения к DLL(useHiDLL, CallDLL) оставить для совместимости, и DLL из вкладки Файл-новый-windows-DLL. Конечно процедура очень сложная, но, возможно, кому-то будет удобнее именно так работать. Вот такое предложение |
|||
карма: 10 |
|
Ответов: 373
Рейтинг: 108
|
|||
Dilma писал(а): Dilma, проблема тут в чем угодно может - скорей всего в какой-то момент память, выделенная в DLL освобождается в основной программе(или наоборот) из-за чего и возникает ошибка. Определить точное место в такой схеме невозможно.А в такой exe
dll
что это, неправилное построение схем или ошибка(баг)? |
|||
карма: 0 |
| ||
файлы: 2 | code_13695.txt [471B] [1047], code_13696.txt [293B] [1041] |
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
По идее dll+exe=code_13699.txt, а она работает. Раньше я считал, что DLL=multiElement только в отдельном файле и с дополнительным способом обмена данными, а теперь считаю, что DLL=Отдельный Компонент Приложения, который работает только в определенных случаях(в отличие от мультика)
|
|||
карма: 10 |
| ||
файлы: 1 | code_13699.txt [675B] [849] |
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
Почему не получается сделать эту dll нормальной как sqlite3.dll
Я просто засунул мультик в dll, а он работать не хочет с usehidll, а с calldll работает но слегка некорректно ------------ Дoбавленo в 09.11: И еще, можно спросить Когда проблемой dll займутся? Если ее исправят я буду прыгать до потолка и поставлю 10 + тому кто исправит |
|||
карма: 10 |
| ||
файлы: 1 | idbcom.rar [57KB] [678] |
Ответов: 1291
Рейтинг: 47
|
|||
Привет всем! А есть ли возможность Hiasm создавать полноценные DLL для других приложений? Чего-то я никак не могу добиться вызова функций из dll из другой программы, Metatrader4? хотя dll написанные на С++ в MS Builder 6 нормально вызываются (простой месседж бокс). Посмотрел через PE-Explorer на экспорт хиасмовской Dll, а там имена экспортируемых функций совсем другие... DoWork и др. Пытался их использовать - безрезультатно, вернее происходит креш - падение вызывающей программы. И еще неясно, как с помощью CallDll левые точки (методы) сами находят нужные функции в Dll. Короче, пока темный лес. Вот и приходится юзать всякие билдеры.. Надеюсь кто-то подскажет как чего..
------------ Дoбавленo в 03.01: Также не смог использовать в Хиасме простейшую dll созданную в билдере. ------------ Дoбавленo в 03.02: Получается, Хиасм пишет dll только под свои программы? ------------ Дoбавленo в 03.03: Простите если торможу. Замучался целый день с этими dll.. |
|||
карма: 3 |
|
Ответов: 4628
Рейтинг: 749
|
|||
Aziz писал(а): Получается, Хиасм пишет dll только под свои программы?Да Aziz писал(а): Также не смог использовать в Хиасме простейшую dll созданную в билдере.Можно вызывать функции сторонней dll из программы на HiAsm только из кода, то-есть, использовать компонент InlineCode или писать собственный компонент для этой dll. |
|||
карма: 26 |
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
Netspirit писал(а): ДаНе обязательно, нужно просто долго разбираться и заимствовать структуру TData, в теории к сторонней программе можно подключить HiAsm DLL (однако испытывать на практике у меня времени, необходимости и желания нету ) |
|||
карма: 10 |
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
Редактировалось 11 раз(а), последний 2024-03-29 00:20:24 |
|||
карма: 0 |
|