Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2008, 16:40   #11
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Код:
procedure proc(p: pointer); stdCall;
begin
   tImage(p^).Picture.LoadFromFile('d:\documents\atom.bmp');
end;
Картинка загружаеться норм. Но после завершения работы проги появляеться ошибка...
Altera вне форума Ответить с цитированием
Старый 27.04.2008, 16:45   #12
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

У меня отрабатывает нормально.
Вот мой проект. Может у Вас в другом месте ошибка ?
Вложения
Тип файла: rar test_dll.rar (189.3 Кб, 4 просмотров)

Последний раз редактировалось alexBlack; 27.04.2008 в 17:13.
alexBlack вне форума Ответить с цитированием
Старый 27.04.2008, 17:05   #13
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Приведите свой, exe и dll... Спасибо!
Altera вне форума Ответить с цитированием
Старый 27.04.2008, 17:28   #14
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Пашет....
По чему надо писать:
P2 := TPicture.Create;
P2.free;Разве нельзя это как то подругому сделать?

И на кой вообще нужен модулю shareMem?
Дайте кто нить нормальный пример с обяснением...
Благодапрю заранее...

Последний раз редактировалось Altera; 27.04.2008 в 17:40.
Altera вне форума Ответить с цитированием
Старый 27.04.2008, 17:38   #15
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от Altera Посмотреть сообщение
Пашет....
По чему надо писать:
P2 := TPicture.Create;
P2.free;Разве нельзя это как то подругому сделать?
Про P2 я объяснил на предыдущей странице - пост #10.

По другому:
- внести изменения и перекомпилировать Graphics.

- создавать image1:TImage в самой dll и получать указатель на нее оттуда

- м.б. есть еще варианты. Мне пока в голову ничего не приходит.

А чем не нравится P2. Оформите это красиво и все:

Код:
procedure initGraphics;
var P2:...
begin
    P2 := TImage.Create ...
    P2.free
end;

begin
    initGraphics;
end.

Последний раз редактировалось alexBlack; 27.04.2008 в 17:46.
alexBlack вне форума Ответить с цитированием
Старый 27.04.2008, 18:09   #16
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Когда твой компилю, всё OK! Но когда свой в точно сти пишу, ошибка на ошибке....

Мне не нравиться этот способ инициализации...!!!
У когото ещё получаеться тоже самое?
Altera вне форума Ответить с цитированием
Старый 28.04.2008, 07:34   #17
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Люди, я просто удивляюсь, как что-то серьёзное, так все молчат...
Что, и правдо никто не знает?

Последний раз редактировалось Altera; 28.04.2008 в 07:54.
Altera вне форума Ответить с цитированием
Старый 28.04.2008, 09:38   #18
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

разве это серьезное P.s. мои вопросы последнии не видел. А тема эта уже проезденная до ужаса. А дело в том, что VCL ( а именно передача указателя на объект в тело dll ) это и вся проблема. От нее не уйти, решение делать придеться, другими путями. http://programmersforum.ru/showthrea...4759&page=3#23
BOBAH13 вне форума Ответить с цитированием
Старый 28.04.2008, 10:47   #19
alexBlack
Участник клуба
 
Регистрация: 12.10.2007
Сообщений: 1,204
По умолчанию

Цитата:
Сообщение от Altera Посмотреть сообщение
Когда твой компилю, всё OK! Но когда свой в точно сти пишу, ошибка на ошибке....
Может все-таки покажете код ?
alexBlack вне форума Ответить с цитированием
Старый 28.04.2008, 15:36   #20
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Код:
procedure Ttest_form2.Button1Click(Sender: TObject);
begin
   proc('d:\documents\atom.bmp', @image1);
   //t.chengeText('Привет мир!!!');
end;
..........
Код:
library dll;

uses
  forms, Classes, dialogs, sysUtils, extCtrls, controls, stdCtrls;

{$R *.res}
type
   testing = class
   protected
   fComp: tImage;
   published
   constructor create;
   procedure setValue(value: pChar);
   property comp: tImage read fComp write fComp;
end;
var
t: testing;
procedure kote(text: pChar; comp: pointer); stdCall;
begin
   t := testing.create;
   t.Comp := tImage(comp^);
   t.setValue(text);
   t.Free;
end;

exports kote;

{ testing }

constructor testing.create;
begin
   fComp := tImage.create(application);
end;


procedure testing.setValue(value: pChar);
begin
   fComp.Picture.LoadFromFile(strPas(value));
end;

begin
end.
Altera вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изьять адресс эл.почты из гиперссылки M17 Microsoft Office Excel 3 30.07.2008 10:55
Посылаем адресс компонента в dll Altera Общие вопросы Delphi 0 27.04.2008 05:50
Как определить IP-адресс компьютера в локальной сети? SalasAndriy C/C++ Сетевое программирование 2 29.11.2007 02:09
IP Адресс, DNS, WINS NovaC Работа с сетью в Delphi 3 22.01.2007 09:05