![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Hamster |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 17.4.2003 Репутация: нет Всего: нет |
Доброго вам времени суток господа. У меня возникла проблема с вот этой структурой данных. Есть откомпилиная библиотека к которой забыли прикрипить сырцы(так их так всех на той конторе). Но есть интерфейс описанный выше! Данные из TEST_JOURNAL ( session, cal, oper_count ) получаю без проблем. Но вот с массивом operations возникла проблема! Не могу я получить от туда данные и всё! Вот код которым я пользовал эту библиотеку!
Так вот не работает. Помогите плз кто чем сможет. Заранее благодарен. |
||||
|
|||||
acp |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 4.2.2003 Где: Владимир Репутация: нет Всего: 2 |
Попробуй доступаться к массиву с 0-го элемента. |
|||
|
||||
Guest_Hamster |
|
|||
Unregistered |
К сожалению это не помогает!
Скорее всего здесь, у меня что то с синтаксисом! ;( Help! |
|||
|
||||
acp |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 4.2.2003 Где: Владимир Репутация: нет Всего: 2 |
Тогда может функции в dll подразумевают, что тот, кто их вызывает, должен сам создавать массив? |
|||
|
||||
Fantasist |
|
|||
![]() Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: нет Всего: 41 |
зачем взятие адреса стоит? -------------------- Волны гасят ветер... |
|||
|
||||
Hamster |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 17.4.2003 Репутация: нет Всего: нет |
Затем, что если без этого, то выдаёт ошибку чтения адреса памяти.
|
|||
|
||||
acp |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 4.2.2003 Где: Владимир Репутация: нет Всего: 2 |
Fantasist правильно всё сказал, это я что-то... ![]() А ошибку выдаёт потому, что массива не существует, когды вы пытаетесь к нему доступиться. |
|||
|
||||
Fantasist |
|
|||
![]() Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: нет Всего: 41 |
Мда... Более удачное объяснение редко приходится слышать. ![]() -------------------- Волны гасят ветер... |
|||
|
||||
Hamster |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 17.4.2003 Репутация: нет Всего: нет |
Да! Метод научного тыка всегда выручал
![]() |
|||
|
||||
Fantasist |
|
|||
![]() Лентяй ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1517 Регистрация: 24.3.2002 Репутация: нет Всего: 41 |
Книги книгами, но есть же help и есть соображаловка. ![]() Без исходников dll тут наверняка сказать ничего нельзя. Попробуй изменить: function test_read(p_type, port: Integer; var test: TEST_JOURNAL): Integer; cdecl; external 'test.dll'; и сделать: procedure TForm1.Button2Click(Sender: TObject); begin SetLength(data.operations,3); test_read(2,2,data); ... end; -------------------- Волны гасят ветер... |
|||
|
||||
KAS |
|
|||
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 26.6.2003 Репутация: нет Всего: нет |
Похоже, Hamster, мы пали невинными жертвами на одной войне. У меня тут рядом висит вопрос, называется "Интеграция Delphi и Fortran".
Вообще попробуй с другими директивами stdcall, safecall, хотя последняя делалась специально для стандартных Windows API DLL-ов, но чем черт не шутит.(Это , конечно, не поможет но попробовать надо) И еще, не в курсе ли ты на каком СИ писана твоя програма (MS Visual C++, Visual Studio или еще какой)? Я страдаю с фортраном 6.0 от Visual Studio. Кстати для Fantasist-а: метод научного тыка действительно не лучший, но, к сожалению, в реалиях Советской России один из наиболее эффективных для целого ряда задач про которые у нас никто ничего не знает. В частности я перерыл и библиотеки и интернет, но толком про передачу данных в DLL между паскалеподобными языками и всеми остальными ничего нет, хотя мысль заманчивая. Вообще, братцы, кто-нибудь может прислать рабочий кусок исходника на Delphi, который пользуя через DLL процедуру СИ или Фортрана (исходник тоже шлите) скажем читает ссылку на описанный в Delphi массив, увеличивает его элементы на 1 (например) и возвращает ссылку на изменеммый массив. Кто пришлет, того я буду гением считать до конца жизни и в ножки поклонюсь. Ну, удачи всем, KAS. |
|||
|
||||
Hamster |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 74 Регистрация: 17.4.2003 Репутация: нет Всего: нет |
Этот вариант пробовали с самого начала! |
||||
|
|||||
acp |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 389 Регистрация: 4.2.2003 Где: Владимир Репутация: нет Всего: 2 |
Мне можно уже гнуть пальцы? ![]() Смотрим исходник. http://port33.ru/users/acp/DLL_test.zip Приложение с вызовом функции - Delphi + KOL. DLL - asm (люблю я асм!). PS: ах, да. Если вы посмотрите, то увидите, что я ещё люблю... компилить из командной строки ![]() Это сообщение отредактировал(а) acp - 27.6.2003, 04:34 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |