Форум: "Начинающим";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];
Вниз
Загвостка с DLL Найти похожие ветки
← →
atomAltera © (2008-04-27 19:07) [0]Приет всем!
Вот имееться приложение(exe), к нему подключина библиотека(dll)...
В exe находиться image1: tImage;
Как мне из dll загрузить в image1 картинку, имея указатель на image1 (@image1), который передаёться из exe в dll в качестве пораметра...
← →
Сергей М, (2008-04-27 19:11) [1]
> имея указатель на image1 (@image1)
Эт кто ж тебя научил этому ?
И гвоздь, кстати, пишется через д.
← →
atomAltera © (2008-04-27 19:52) [2]Вот и научи меня....
← →
Восхищенный (2008-04-27 20:19) [3]> atomAltera © (27.04.08 19:07)
1. Image1 - уже и так адрес, поэтому @ не нужна.
2. Долго объяснять, почему этот так, поэтому объяснять не буду, а просто скажу, как будет лучше и проще. Передавай в DLL не только адрес Image, а еще и адрес процедуры, которая находится в EXE и загружает картинку. Вызываешь эту процедуру из DLL, передаешь ей Image - она в этот Image грузит картинку.
← →
atomAltera © (2008-04-28 07:27) [4]Приведите плиз действующий пример...
← →
Восхищенный (2008-04-28 11:24) [5]В DLL:
type
TLoadImageProc = procedure(Image: Pointer);
var
_Proc: TLoadImageProc;
procedure SetProc(Proc: TLoadImageProc); // exports
begin
_Proc := Proc;
end;
procedure LoadImage(Image: Pointer); // exports
begin
_Proc(Image);
end;
В EXE:
procedure Proc(Image: TImage);
begin
// Загрузка картинки в Image;
end;
procedure LoadImage(Image: TImage);
begin
// Вызывем LoadImage из DLL, передаем Image
end;
initialization
// Грузим DLL, вызываем SetProc, передаем @Proc
← →
Leonid Troyanovsky © (2008-04-28 11:40) [6]
> atomAltera © (28.04.08 07:27) [4]
> Приведите плиз действующий пример...
Для приведенной в [0] схемы можно смело положить,
что действующего примера нет.
Да и нах TImage в длл? Чтоб рисовать потом в экзе? :)
Если уж очень хочется картинку, можешь, например,
загрузить bitmap из ресурсов экзешника.
--
Regards, LVT.
← →
Leonid Troyanovsky © (2008-04-28 11:46) [7]
> Leonid Troyanovsky © (28.04.08 11:40) [6]
> Да и нах TImage в длл? Чтоб рисовать потом в экзе? :)
А.., пропустил симптом, sorry.
Но, все равно, лучше огласить всю задачу,
желательно на русском.
--
Regards, LVT.
← →
Сергей М. © (2008-04-28 12:02) [8]
> Восхищенный (28.04.08 11:24) [5]
А где сотня-другая страниц текста с сопроводительным ликбезом на тему при каких условиях этот код будет работоспособным ?)
← →
ZENsan © (2008-04-28 12:29) [9]Есть два решения:
1) Используй PACKAGES (тоесть компилируй прогу с Run-time packages и используй LoadPackage - тогда сможешъ подавать хоть напрямую TImage). В ДЛЛ просто отдельные копии модулей, тоесть и классов. Поэтому ничего работать не будет.
2) Используй memory mapped files.
Может конечно ещё что-то есть, но самый елегантный для этого способа, помоему run-time packages. Создай вместо ДЛЛ package.
← →
Leonid Troyanovsky © (2008-04-28 13:55) [10]
> ZENsan © (28.04.08 12:29) [9]
> Может конечно ещё что-то есть
Можно предcтавить и третье.
Экзешник загружает в TImage bitmap из ресурсов dll.
Идеологически оно будет самым выдержанным,
но ТЗ следует пересмотреть (идеологически :)
--
Regards, LVT.
← →
Восхищенный (2008-04-28 13:56) [11]> Сергей М. © (28.04.08 12:02) [8]
Честно говоря, я тоже не понимаю, на кой здесь нужна DLL. Для задачи, описанной в сабже - точно не нужна. Значит, или описана не вся задача, или беда в консерватории.
Но это уже проблемы автора. Хотел он DLL - получил схему для DLL. Схема рабочая, это вне сомнений. А уж как она будет реализована - это на совести автора. Хотя и в этой схеме никакой надобности в DLL я тоже не вижу.
Почему нет описания нюансов - см. [3]. Слишком долго рассказывать про раздельно компилируемые проекты, про дублирование классов, про экземпляры Application - ну и прочее. Даже на модели вызова - и то не стал останавливаться, тоже долго. Дефолтная - и точка.
Рассказывать про все это сейчас бесполезно. Пока не понабивает шишек, все равно не поймет.
← →
ZENsan © (2008-04-28 14:14) [12]Ну человек спрашивал... :)
Мало ли что он там придумал, просто ход мыслей у него такой..
Самое красивое, конечно Resource DLL, но ведь из вопроса там неясно для чего, поэтому и сказать что-то определённо тоже не так просто.
← →
ZENsan © (2008-04-28 14:15) [13]Кстати, Восхищённый. Я уже половину книги прочитал той.. Я конечно многое знал, но были моменты, которых я и не знал. Книга полезная и класная! Спасибо за рекомендацию.
← →
Восхищенный (2008-04-28 14:30) [14]Sry за оффтоп.
> ZENsan © (28.04.08 14:15) [13]
O! Молодец, что не обиделся, а принял совет к действию. Я ж говорил - сто раз потом спасибо скажешь - вот и первый.
:о)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.05.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c