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

Вниз

Загвостка с 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.025 c
2-1209395086
Kolan
2008-04-28 19:04
2008.05.25
Как узнать вызоту заголовка окна?


2-1209029240
vinni2000
2008-04-24 13:27
2008.05.25
Преобразование даты в число


15-1207398011
Nic
2008-04-05 16:20
2008.05.25
Ваше мнение: Acer Asphyre


2-1209126052
dumka
2008-04-25 16:20
2008.05.25
Кнопка


15-1207895948
DimA
2008-04-11 10:39
2008.05.25
Проблема с кодировкой Quick Report