Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [Delphi] Использование dll, Вопрос по програмированию.... 
:(
    Опции темы
Volf
Дата 13.2.2007, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 26.1.2007

Репутация: нет
Всего: нет



Уж звеняйте, если немного не в тему или подобная тема была уже!

Вопрос в следующем: Создаю dll фсё нормально компелится и, естественно, ругается, что не может быть запущено....
Потом в проекте пробую подцепить свою dll, которая лежит в тойже директории, что и exe... Мож я что не понимаю... Хотяб сцылку на ман прикольный дайте.... Особо времени нет в инете лазить.... 

Помогите, заранее спосибки....
PM   Вверх
Alexeis
Дата 13.2.2007, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 23
Всего: 459



В параметрах запуска, можно указать приложение, которое будет ее загружать, тем самым можно производить ее отладку. Если приложение и библиотека находятся в одной папке и все имена указаны правильно, то загрузка пройдет без проблем. Проверьте все названия функций имя библиотеки.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Ptica_Oz
Дата 13.3.2007, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 1.3.2007

Репутация: нет
Всего: нет



написала я длл на VC++ для автоматизации автокада с использованием win api. в правильности работы ф-ций, описаных в длл я уверена. подключила ее к делфи (пишу плагин) и тут такое начилось!!! а именно: ф-ции win api работают не корректно. автоматизация, по крайней мери та, которая описана до проблемной ф-ции работает нормально, но что будет дальше... мысли об этом меня пугают.
в делфях длл ф-цию описываю так:
Код

function ACADPrint (Path : string;
                Color : string;
                Printer : string;
                Text : string;
                Scale : Integer) : Boolean ;stdcall; external 'D:\TextStyle.dll';

люди добрые!!! помогите кто чем может!!!  smile 
PM MAIL   Вверх
Alexeis
Дата 13.3.2007, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 23
Всего: 459



Ptica_Oz, в VC++ функции Dll объявлены как stdcall или по умалчанию? 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Ptica_Oz
Дата 13.3.2007, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 1.3.2007

Репутация: нет
Всего: нет



да, как stdcall
PM MAIL   Вверх
Alexeis
Дата 13.3.2007, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 23
Всего: 459



а слона то я и не подметил   smile . Вот оно "Text : string;" 
Делфийский стринг != Сишный стринг. В делфи стринг это длинная строка с со сложной структурой, фактически неявный объект, для использования которого нужен общий с Dll менеджер памяти. Вероятно в VC передавался PChar. Именно его и нужно указывать в качестве параметра прототипа функции в делфи. Вообще параметры string могут передваться только от приложения написанного в делфи к dll написанной также на делфи или наоборот.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Ptica_Oz
Дата 13.3.2007, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 1.3.2007

Репутация: нет
Всего: нет



попробую... но мне кажется дело тут не в этом... длл получает параметры (в длл они char *) проблема возникла конкретно при выполнении этой ф-ции:
Код

DocumentProperties( 0,    // hWnd
        hPrinter,
        const_cast<TCHAR *>(pname),
        0,            // DEVMODE output
        0,            // DEVMODE input
        0 );            // mode

до этого полученные параметры использовались успешно, хотя только в ф-циях автоматизации а не в win api ф-циях

З.Ы. hPrinter = 0, pname = имя принтера, то самое, которое передаётся из делфей

З.З.Ы. а самое забавное, что по началу эта ф-ция срабатывала (правда не знаю корректно ли) а вылетала на другой win api-шной ф-ции, которая вызывалась соответственно позже...
PM MAIL   Вверх
Alexeis
Дата 13.3.2007, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 23
Всего: 459



Цитата(Ptica_Oz @  13.3.2007,  15:14 Найти цитируемый пост)
проблема возникла конкретно при выполнении этой ф-ции:

что это за функция? да и вообще при неправельной передаче параметров глюки могут появиться в любом месте


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Ptica_Oz
Дата 14.3.2007, 09:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 1.3.2007

Репутация: нет
Всего: нет



кажись стало получаться, но возникли проблемы с преобразованием String в PChar. Об этом в другой теме
PM MAIL   Вверх
Ptica_Oz
Дата 14.3.2007, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 1.3.2007

Репутация: нет
Всего: нет



сделала как вы советывали: передаю PChar. толку ноль. в том же самом месте спотыкается. думаю тут уже в VC++ проблема попробую в другом подразделе вопрос задать... спасибо за помощь.
PM MAIL   Вверх
Alexeis
Дата 14.3.2007, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 23
Всего: 459



Ptica_Oz, попробуйте сделать пустую Dll, которая экспортирует функцию с теми же параметрами. и выводит на экран содержимое переданных параметров. Я поробую написать прогу на делфи, которая заполнит их и вызовет функцию.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Ptica_Oz
Дата 14.3.2007, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 1.3.2007

Репутация: нет
Всего: нет



в длл я натыкала MessageBox для контроля происходящего, все параметры передаются нормально. прихожу к выводу что именно с DocumentProperties проблемы...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0497 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.