Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.20;
Скачать: CL | DM;

Вниз

Помогите решить проблему с Dll   Найти похожие ветки 

 
delphi-code ©   (2005-03-06 21:36) [0]

Помогите решить проблему, дайте дельный совет.

Есть файл "prog.exe", который обращается к библиотеке "test.dll".

Необходимо:

1. В библиотеке есть функция(процедура) "test_zapros", но неизвестно, какой ей необходимо передать параметр из файла "prog.exe". В смысле Integer, String или что-то другое.

2. Как определить, что возвращает "test.dll" в файл "prog.exe", какой параметр(какая информация) и какого типа.

3. Подскажите, как происходит обмен данными между программой и используемой библиотекой. Желательно объяснять подробно, по возможности. У меня представление, что обмен выглядит как работа клиент-сервер. Так ли это.

Если кто знает решение прошу мне помочь.


 
Leeechhhh   (2005-03-06 21:41) [1]

прога --запрос--> DLL
                  |
    прога<--ответ--


 
Palladin ©   (2005-03-06 21:44) [2]

1 Что необходимо то? Струтктура ожидаемых в стеке данные зависит только от реализации библиотеки, то есть, создатель должен афишировать что требует та или иная функция.
2 Что необходимо то? См п1.
3 Как закажешь так и выглядит. Подробности: Calling convention - F1.
то базис. Что там еще можно придумать (запуск потоков, обмен через FM, через FS, черз WM) на сколько фантазия разгуляется.
3А.
У меня представление, что обмен выглядит как работа клиент-сервер. Так ли это.
Любой запрос/получение данных есть клиент/сервер. Клиент/сервер - это абстакция.


> Если кто знает решение прошу мне помочь.

А чего решение то? Как с закрытыми глазами определить скольки этажный перед тобой дом:


 
Defunct ©   (2005-03-06 22:08) [3]

> 2. Как определить, что возвращает "test.dll" в файл "prog.exe", какой параметр(какая информация) и какого типа.

Это нельзя определить без доки к dll или исходника dll.


 
delphi-code ©   (2005-03-07 01:09) [4]

До меня в организации был программер, который написал прогу по расчету химпроцессов. У его проги есть dll называется "xim_p.dll" в ней происходит мат. расчет(обоснование) количественной базы элементов.
Программер уже два года как ушел из организации, но его программа живет, ее продолжают использовать. В данный момент мне поставили задачу создать программу схожую с его, но с дополнительными расчетами в отдельную ветвь данной области.

Мне хочется взять за основу его dll, чтобы не писать все заново.

1. Необходимо узнать, какие функции(процедуры) внутри "xim_p.dll". Их список. И с какими параметрами они выполняются.

Одну я знаю: xim_p_stat(a : integer) : integer; где "a" может принимать значения: 1 - старт, 2 - пауза, 0 - стоп.

2. Как определить, что возвращает "xim_p.dll" в прогу. Как осуществляется получение программой результата из ДЛЛ. В смысле, какой обработчик получает результат. Это какой то буфер?
Я представляю это так:  ДЛЛ ===> буфер --> обработчик(сообщение что есть ответ от Длл) ===> прога. Так это?

3. Еще один вопрос: например я загрузил функцию "xim_p_stat(1)" как мне узнать, что результат этой функции должен быть integer? если я не знаю тип возвращаемого результата.

Буду рад вашим размышлениям по данным вопросам. Мне необходимо разобратся в них, прог очень много и из каждой необходимо выдрать тот или иной расчет.


 
DrPass ©   (2005-03-07 01:23) [5]

1. Список функций можно узнать чем угодно. tdump из Delphi, специальный плагин к FAR и т.д. Параметры функций в DLL не хранятся. Они вообще нигде не хранятся, кроме написанной программистом документации. Можно сделать предположение о типе и количестве параметров, если просмотреть код DLL с помощью отладчика, в частности, выборки из стека и регистров при вызове функций. Но это будут лишь предположения.

2. Точно так же. Результат тоже нигде не хранится.
>  В смысле, какой обработчик получает результат. Это какой
> то буфер?

... бегом читаем теорию. Такие вещи говорить - значит, вообще понятия не иметь, что такое DLL.


> Я представляю это так:

Неправильно представляешь. Процедуры/функции из DLL компонуются с твоей программой, и их вызовы ничем не отличаются от вызовов других процедур/функций в твоей программе. Никаких буферов/обработчиков, все напрямую.

3. Если ты написал function xim_p_stat(a : integer) : integer, то ты уже указал, что результат будет integer, не так ли? Если же на самом деле эта функция в DLL возвращает что-то другое, ты
а) получишь Access Violation или
б) даже не заметишь. Просто результат функции будет неверным


 
jack128 ©   (2005-03-07 01:31) [6]

Интересно программист работал. Что, исчез и исходников не оставил??


 
GanibalLector ©   (2005-03-07 02:57) [7]

2 jack128 ©   (07.03.05 01:31) [6]
А че,вполне нормально.Я вот тоже когда уйду из своей конторы исходников не оставлю! Почему? Да потому,что кидают с ЗП.Нет,не подумай,платят,но МАЛО!


 
Германн ©   (2005-03-07 04:23) [8]

Я тоже ухожу из фирмы(конторы).
Но исходники оставлю.
Я им не враг.
Другой вопрос, а смогут ли они использовать мои исходники? Это уже их проблема!

Тут еще один интересный вопрос! За сколько килобаксов возьмется любой из программистов изучить их, осознать их и быть готовым изменить их в соответствии с новыми требованиями?
Я вел несколько проектов на Дельфи. Тут, может быть, кто-то сможет их "подхватить". Вот только захочет ли?
Но основная моя работа заключалась в разработке программ для микроконтроллеров типа MCS51. А уж там( а писАл я только на ассемблере) - разобраться новому человеку :(
Себе бы я такого не пожелал бы! Даже, если бы были подробные комментарии.


 
Defunct ©   (2005-03-07 09:44) [9]

Германн ©   (07.03.05 04:23) [8]
> Но основная моя работа заключалась в разработке программ для микроконтроллеров типа MCS51.

Германн!  будет время take a look:
http://www.dca.narod.ru/simulation/mk51.htm

может пригодится, а нет так буду рад критике.


 
KSergey ©   (2005-03-07 09:56) [10]

ОФФ

> [7] GanibalLector ©   (07.03.05 02:57)

Убивал бы таких "работничков".
Не нравится сколько платят - ну так скажи это им в лицо.
Но на кой уходя подкладывать свинью??! А по-нормальному не удается свою "значимоть" показать? Только гадостями?

А если мало платят - на кой вообще работаешь?


 
GanibalLector ©   (2005-03-07 12:16) [11]

2 KSergey ©   (07.03.05 09:56) [10]
Господин,успокойтесь!
>ну так скажи это им в лицо
Говорил,один раз(год назад) подняли...сейчас не хотят.
>А по-нормальному не удается свою "значимоть" показать?
Что за бред?

Уважаемый,когда Вы трудоустраивались с Вами вероятно заключали контракт,в котором оговаривались Ваши обязанности.Со мной нет.Так скажите мне теперь,почему я должен кому-то дарить свой труд?


 
KSergey ©   (2005-03-07 12:30) [12]

> [11] GanibalLector ©   (07.03.05 12:16)
> >А по-нормальному не удается свою "значимоть" показать?
> Что за бред?

А вот оно и подтверждение непризнанной значимости:

> Так скажите мне теперь,почему я должен кому-то дарить
> свой труд?


Впрочем, если есть желание бестолково пободаться - предлагаю завести соотв. ветку на "права на исходники"


 
GanibalLector ©   (2005-03-07 12:33) [13]

2 KSergey ©   (07.03.05 12:30) [12]
>если есть желание бестолково пободаться
Нет никакого желания!
З.Ы. Своего мнения я не изменю.


 
Erik1 ©   (2005-03-07 12:45) [14]

Всякое бывает в жизни, но обычно сокрытие исходников неприносит дополнительных денег, а проблемы возникают. Значить сие бесмыслено!


 
sniknik ©   (2005-03-07 13:24) [15]

GanibalLector
все правильно, не нравится уходи. и не только зарплата имеет значение.
(мне например не нравится(оччччень) то что меня "гоняют" на затыкание дыр, причем не в моей программе, чужих... моя работает, практически не требуя поддержки, и мне вроде как делать нечего, другие постоянно заняты латанием... и вот вместо того чтобы дать мне другой проект (новый, или например чужой на переделку) приходится ездить выяснять в чем проблемы в других программах. если уволюсь то изза этого по большей части, и мне тоже плевать что никто из оставшихся в моем коде не разберется... а взять нового такого же уровня будет гораздо дороже, это будут их проблемы. если уйду конечно ;)))

KSergey
в чем вы видите "гадости"? в том что человек уходя оставляет все сделанное в открытом виде, но тот кто придет в этом не сможет разобратся?
т.е. ему надо было предусмотрительно писать на уровне "дауна", чтобы после любой переучившийся грузчик легко "подхватил" его работу? ;о)) извините но это просто смешно. (это мышление начальника. "работа должна идти, платить как можно меньше, и лучше взять десять средних чем одного профи на одно дело." пусть даже в общем будет дороже ;о))


 
Германн ©   (2005-03-08 02:19) [16]

2 Defunct ©   (07.03.05 09:44) [9]

>Германн!  будет время take a look:
>http://www.dca.narod.ru/simulation/mk51.htm

Спасибо. Взглянул. Учту при необходимости, что такое есть.

Не знаю, что там за компиллятор. Ко всем существующим компилляторам ассемблера у меня есть претензии, но существенная только одна: я не люблю те из них, которые не поддерживают "локальные метки".
Бзик у меня такой :(


 
satay   (2005-03-08 23:25) [17]

А начиналось - то все из Длл-ки................


 
Германн ©   (2005-03-09 02:52) [18]

2 satay   (08.03.05 23:25) [17]

И закончилась вполне ес-стно в виду поста:
delphi-code ©   (07.03.05 01:09) [4]
Кто-то был, кто-то, что-то сделал.
Теперь имеем некую DLL, но не имеем по ней достаточной документации и не имеем возможности затребовать оную от автора!
И ес-стно сидим в сортире!
Поскольку, как было описано в данной (и не только в данной) ветке, пользоваться DLL можно только тогда, когда "точно" известно - какие в ней есть функции, какие у оных параметры, и какой результат они возвращают.



Страницы: 1 вся ветка

Текущий архив: 2005.03.20;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.052 c
3-1108538930
Mishenka
2005-02-16 10:28
2005.03.20
Можно ли в запросе использовать вычисляемые и LookUp поля?


6-1105989056
vic_vm
2005-01-17 22:10
2005.03.20
Определить IP по доменному имени при выходе в инетчерез proxy


6-1105772012
tester666
2005-01-15 09:53
2005.03.20
CGI приложения


1-1110145219
Narik
2005-03-07 00:40
2005.03.20
Как перекинуть картинку из одного Image в другой???


10-1086872365
Kraj
2004-06-10 16:59
2005.03.20
Чат на основе сокетов