Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];

Вниз

Помогите решить проблему с 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.038 c
1-1109783918
oleg_SYS
2005-03-02 20:18
2005.03.20
Как присвоить типу OleVariant адресс процедуры?


3-1108493039
mefisto
2005-02-15 21:43
2005.03.20
Правильная инсталяция Oracle 8i (2)


6-1106130307
Ivolg
2005-01-19 13:25
2005.03.20
Быстрая скачка данных


1-1109775906
Anatoliy T.
2005-03-02 18:05
2005.03.20
Word - форматирование абзаца


14-1109666383
Ozone
2005-03-01 11:39
2005.03.20
Новосибирск. Съем жилья.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский