Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 4664
Рейтинг: 420
#1: 2009-06-09 09:54:23 ЛС | профиль | цитата
Никак не могу понять, что нужно использовать для того, чтобы DLL работала ВСЕГДА! Бьюсь уже несколько дней, хотя и раньше эта бяка преследовала меня, как только я написал DLL и вставил ее в прогу, в прищепке есть прога, что нужно сделать:
Скомпилируйте все(сначала DLL, потом прогу). Создайте инсталляционный пакет с минимумом файлов(последовательность действий: зайдите во вкладку "Файлы инсталляции" добавьте папку, зайдите в "данные об инсталляторе" нажмите "создать пакет" внизу). Затем удалите созданный инсталляционный пакет, и заново нажмите "создать пакет". В данном случае у меня вылетает runtimeerror204 и ничего не хочет работать, а если вместо DLL использовать мультик, то все в порядке. Перекомпиллировал все, теперь не работает очистка списка, еще раз -- не работает смена состояния кнопки. Что я делаю не так?
------------ Дoбавленo в 09.58:
Прилепил еще exe, если такого не случится, то буду смотреть у себя
карма: 10
0
файлы: 1exe.rar [246.4KB] [1988]
vip
#1.1контекстная реклама от партнеров
Администрация
Ответов: 15271
Рейтинг: 1498
#2: 2009-06-09 12:10:10 ЛС | профиль | цитата
а ExampleSystemDLL*.sha надо полагать работает?
карма: 21
0
Разработчик
Ответов: 4664
Рейтинг: 420
#3: 2009-06-09 12:54:01 ЛС | профиль | цитата
Работает, но тоже зависит от количества компилляций, можно сказать 25% шанс, что будет "облом" после компилляции Чаще всего эта бяка вылазит на больших проектах с большими DLL, таких как выше
карма: 10
0
Ответов: 373
Рейтинг: 108
#4: 2009-06-09 22:42:11 ЛС | профиль | цитата
У меня такая же ошибка c третьего раза.
По моему тут что-то с потоками не то.
карма: 0

0
Разработчик
Ответов: 4664
Рейтинг: 420
#5: 2009-06-11 11:20:14 ЛС | профиль | цитата
А проблема, что с потоками чем вызвана? Присутствием DLL или чем-то в схеме, компилляции, компиллятора, компонента useHiDLL?
карма: 10
0
Ответов: 373
Рейтинг: 108
#6: 2009-06-12 02:12:54 ЛС | профиль | цитата
Если в Install.sha оставить только MemoryStream то ошибки нет.
Возможно из-за EventFromData (непроверял).
карма: 0

0
Администрация
Ответов: 15271
Рейтинг: 1498
#7: 2009-06-12 14:05:02 ЛС | профиль | цитата
проблема тут в чем угодно может - скорей всего в какой-то момент память, выделенная в DLL освобождается в основной программе(или наоборот) из-за чего и возникает ошибка. Определить точное место в такой схеме невозможно.
карма: 21
0
Разработчик
Ответов: 4664
Рейтинг: 420
#8: 2009-06-12 15:33:02 ЛС | профиль | цитата
Мне вот что интересно: runtimeerror происходит только после того как выполнится действие eventfromdata(или таймера, если вместо него). То есть проблема в том, что в DLL нет модуля(я так понял) сохранения данных(т.е как в программе можно memory вставить и не будет runtime, а в DLL будет, если обращаться к памяти комонента у которого есть что либо в ней, или по другому память не пуста)

У меня вообще есть такая мысль, Dilma, это скорее к вам, можно ли сделать другой метод редактирования DLL, компонент, который создавал новую sha-схему(или заменял старую) в папке с проектом(при сохранении проекта), по имени из свойства sha-name, и, не создавая лишних вкладок, брал и добавлял бы все данные по схеме из этого файла, а при компилляции создавал бы DLL по количеству компонентов с именами из свойств, так же вместо компонента DLL можно поставить EditMulti(Ex) , но старые методы обращения к DLL(useHiDLL, CallDLL) оставить для совместимости, и DLL из вкладки Файл-новый-windows-DLL. Конечно процедура очень сложная, но, возможно, кому-то будет удобнее именно так работать. Вот такое предложение
карма: 10
0
Ответов: 373
Рейтинг: 108
#9: 2009-06-13 01:09:18 ЛС | профиль | цитата
Dilma писал(а):
Dilma, проблема тут в чем угодно может - скорей всего в какой-то момент память, выделенная в DLL освобождается в основной программе(или наоборот) из-за чего и возникает ошибка. Определить точное место в такой схеме невозможно.

А в такой
exe

Add(UseHiDLL,9478247,420,231)
{
DLLName="dll1"
link(1,6821671:doText,[])
link(3,16685968:doText,[(468,244)(468,279)])
}
Add(Button,2646649,364,231)
{
Left=100
Top=75
Data=String(zxc)
link(onClick,9478247:2,[])
}
Add(Edit,6821671,483,231)
{
Left=170
Top=75
Width=90
}
Add(Button,8815152,364,273)
{
Left=100
Top=105
link(onClick,9478247:4,[(408,279)(408,244)])
}
Add(Edit,16685968,483,273)
{
Left=170
Top=105
Width=90
}



dll

Add(DLL,2953706,483,224)
{
WorkPoints=#1:1|1:3|
EventPoints=#1:2|1:4|
link(2,2953706:1,[(527,230)(527,218)(471,218)(471,230)])
link(4,7992695:doData,[])
}
Add(DoData,7992695,539,231)
{
Data=String(zxc)
link(onEventData,2953706:3,[(585,237)(585,270)(471,270)(471,237)])
}


что это, неправилное построение схем или ошибка(баг)?
карма: 0

0
файлы: 2code_13695.txt [471B] [128], code_13696.txt [293B] [124]
Разработчик
Ответов: 4664
Рейтинг: 420
#10: 2009-06-13 11:16:31 ЛС | профиль | цитата
По идее dll+exe=code_13699.txt, а она работает. Раньше я считал, что DLL=multiElement только в отдельном файле и с дополнительным способом обмена данными, а теперь считаю, что DLL=Отдельный Компонент Приложения, который работает только в определенных случаях(в отличие от мультика)
карма: 10
0
файлы: 1code_13699.txt [675B] [145]
Разработчик
Ответов: 4664
Рейтинг: 420
#11: 2009-07-05 09:08:27 ЛС | профиль | цитата
Почему не получается сделать эту dll нормальной как sqlite3.dll
Я просто засунул мультик в dll, а он работать не хочет с usehidll, а с calldll работает но слегка некорректно

------------ Дoбавленo в 09.11:
И еще, можно спросить
Когда проблемой dll займутся? Если ее исправят я буду прыгать до потолка и поставлю 10 + тому кто исправит
карма: 10
0
файлы: 1idbcom.rar [57KB] [138]
Ответов: 777
Рейтинг: 34
#12: 2010-06-17 03:03:12 ЛС | профиль | цитата
Привет всем! А есть ли возможность 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..
карма: 0
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 3627
Рейтинг: 618
#13: 2010-06-17 12:12:45 ЛС | профиль | цитата
Aziz писал(а):
Получается, Хиасм пишет dll только под свои программы?

Да
Aziz писал(а):
Также не смог использовать в Хиасме простейшую dll созданную в билдере.

Можно вызывать функции сторонней dll из программы на HiAsm только из кода, то-есть, использовать компонент InlineCode или писать собственный компонент для этой dll.

карма: 15

0
Разработчик
Ответов: 4664
Рейтинг: 420
#14: 2010-06-17 12:40:24 ЛС | профиль | цитата
Netspirit писал(а):
Да

Не обязательно, нужно просто долго разбираться и заимствовать структуру TData, в теории к сторонней программе можно подключить HiAsm DLL (однако испытывать на практике у меня времени, необходимости и желания нету )
карма: 10
0
Гость
Ответов: 17029
Рейтинг: 0
#15: 2010-06-17 13:22:16 правка | ЛС | профиль | цитата


Редактировалось 4 раз(а), последний 2017-06-21 00:39:13
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)