|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
30.01.2009, 00:19 | #1 |
Регистрация: 29.01.2009
Сообщений: 6
|
Помогите Delphi TBrush в DLL
Вызываю функцию из DLL, которая использует TBrush для вывода картинки в TPaintBox. При перерисовке TPaintBox-а выскакивает ошибка: "ExceptionViolaion in module Project2.exe at 0001B92F. Access violation at address 0041B92F in module 'Project2.exe'. Read of address 00000000."
Что-то вроде этого у меня было и с TPen, но подключение к DLL модуля Controls это исправило. А с TBrush проблема осталась.
Чайник среди чайников
|
30.01.2009, 00:27 | #2 |
Старожил
Регистрация: 06.08.2007
Сообщений: 2,183
|
телепаты в отпуске, бессрочном.
код покажите, без него никак. |
30.01.2009, 00:41 | #3 |
Регистрация: 29.01.2009
Сообщений: 6
|
Код программы:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; procedure tp(t1:TCanvas)StdCall; type TForm1 = class(TForm) Button1: TButton; PaintBox1: TPaintBox; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; procedure tp;external '2.dll' name 'tp'; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin tp(PaintBox1.Canvas); end; end. Код DLL: library 2; uses SysUtils, Controls, Graphics, Classes; procedure tp(t1:TCanvas);StdCall; begin t1.Brush.Color:=$808080; t1.Pen.Color:=$000000; t1.Rectangle(0,0,9,39); t1.Rectangle(30,0,39,39); end; exports tp; {$R *.res} begin end.
Чайник среди чайников
Последний раз редактировалось Владимиp; 30.01.2009 в 00:45. Причина: небольшая неточность |
30.01.2009, 01:09 | #4 |
Регистрация: 29.01.2009
Сообщений: 6
|
Очень нужно! ПОЖАЛУЙСТА ПОМОГИТЕ!
Чайник среди чайников
|
30.01.2009, 14:24 | #5 |
Delphi forever
Форумчанин
Регистрация: 13.01.2009
Сообщений: 113
|
Во первых нет необходимости указывать дерективу Name здесь
var Form1: TForm1; procedure tp;external '2.dll' name 'tp'; implementation т.к из длл эта процедура экспортируеся без указания имени во вторых попробуй динамический импорт.
Программы на заказ Delphi, Pascal.
ася: 415 253 529. Мыло: wowan141750@gmail.com. |
30.01.2009, 15:18 | #6 |
Регистрация: 29.01.2009
Сообщений: 6
|
Динамический импорт не помогает. Кто-то может еще что-нибуть предложить?
Чайник среди чайников
|
30.01.2009, 15:20 | #7 |
Регистрация: 29.01.2009
Сообщений: 6
|
Не помогло. Кто-то может еще что-нибудь предложить???
Чайник среди чайников
|
30.01.2009, 16:04 | #8 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Не передавайте в dll объект TCanvas, созданный в приложении. Можно передать handle:
Код:
|
31.01.2009, 09:28 | #9 |
Регистрация: 29.01.2009
Сообщений: 6
|
alexBlack, ОГРОМЕННОЕ СПАСИБИЩЕ тебе!!!!
Чайник среди чайников
|
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
DLL в DELPHI | Шульц | Общие вопросы Delphi | 6 | 11.01.2009 08:28 |
Создать DLL на C# и вызвать её в Delphi (Delphi) | RIO | Общие вопросы Delphi | 2 | 25.03.2008 15:33 |
Создать DLL на C# и вызвать её в Delphi | RIO | Общие вопросы .NET | 2 | 22.03.2008 22:17 |
Передача данных из VC++ DLL в Delphi App | Kosoglaz | Общие вопросы C/C++ | 2 | 05.02.2008 10:53 |
Delphi + dll= Invalid Pointer Operator | LEKA | Общие вопросы Delphi | 4 | 01.05.2007 23:38 |