Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1209717817
holodok
2008-05-02 12:43
2008.05.25
Цикл


15-1207680695
ProgRAMmer Dimonych
2008-04-08 22:51
2008.05.25
Электронная почта


2-1209824858
Res
2008-05-03 18:27
2008.05.25
wm_quit


15-1207727738
Alkid
2008-04-09 11:55
2008.05.25
Парадокс Блаба и обучению программированию


2-1209287511
Алексей К.
2008-04-27 13:11
2008.05.25
Изменение св-ва caption у элемента TActionList





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский