Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.06.16;
Скачать: [xml.tar.bz2];

Вниз

DLL   Найти похожие ветки 

 
TButton   (2003-05-31 11:33) [0]

Помогите плз. разобраться с DLLами, а то умене чо-т не срастается нифига.
Делаю я значит прогу, прога должна обрабатывать байтовые массивы, чтобы
у юзера (у меня) был больший выбор я решил вытащить процедуры для обработки
(рендеринга) в DLL и грузить их по нажатию кнопки Render(ToolButton10). Вобщем
получился у меня такой код.

procedure TForm1.ToolButton10Click(Sender: TObject);
var
h:word;
p:PChar;
s:string;
r:TRenderProc;
begin
s:=DLLList.Text;
p:=PChar(ExtractFilePath(ParamStr(0))+s);
if s="" then Exit;
h:=LoadLibrary(p);
if h=0 then
begin
MessageDLG("Cant load "+s,mtWarning,[mbOk],0);
Exit;
end;
r:=GetProcAddress(h,"Render");
r(map,mapH,mapW);
FreeLibrary(h);
end;


Не трудно догадаться что по нажатии на кнопку, прога выдает мне месагу "не могу загрузить файл default.dll". Вот... на всякий случай привожу тут код самой DLLы, пока она мне нужна постольку по скольку... т.е. чтоб просто было что грузить...


library default;

uses
ShareMem
SysUtils,
Classes;

{$R *.RES}

procedure Render(var map: array of byte; mapH, mapW: integer);Export;
var
i,j:integer;
begin
if high(map)=-1 then Exit;
if High(map)<>(mapH*mapW-1) then exit;
for i:=0 to mapW-1 do
for j:=0 to mapH-1 do
map[i*mapH+j]:=0;
end;

exports
Render name "RENDER" resident;

begin
end.


 
Юрий Зотов   (2003-05-31 12:02) [1]

Под PChar не выделена память. Уберите P совсем, компилятор сам все преобразует, как надо. Кроме того, word для хэндла может оказаться недостаточно.

procedure TForm1.ToolButton10Click(Sender: TObject);
var
h: DWORD;
s: string;
r: TRenderProc;
begin
s := DLLList.Text;
if s = "" then Exit;
h := LoadLibrary(PChar(ExtractFilePath(ParamStr(0)) + s));
...
end;


 
TButton   (2003-06-04 13:09) [2]

спасибо. помогло.
Вопрос "в кассу", а можно в DLLах декларировать типы? и если можно, то как.


 
Skier   (2003-06-04 13:14) [3]

>TButton © (04.06.03 13:09)
Можно. Как обычно...


 
TButton   (2003-06-04 13:18) [4]

а если я в DLLе пишу object со всяко-разными методами их надо в експорте писать?


 
Skier   (2003-06-04 13:24) [5]

1) Не object, а class
2)
> их надо в експорте писать?

Нет


 
TButton   (2003-06-04 13:28) [6]

почему не object? чем он хуже class"а?


 
Calm   (2003-06-04 13:32) [7]


> почему не object? чем он хуже class"а?

Главное, что может не поддерживаться в следующих версиях.
Хотя некоторые им широко пользуются (см. KOL)


 
Skier   (2003-06-04 13:33) [8]

хуже тем что под object-ом здесь понимается экземпляр класса, а не класс. А в экземпляре класса ты никаких методов,
полей или свойств уже не добавишь (да и вообще не напишешь).
Так понятней ?


 
Calm   (2003-06-04 13:36) [9]

2 Skier © (04.06.03 13:33)
В Delphi под словом object понимается не только экземпляр класса.


 
TButton   (2003-06-04 13:37) [10]

мммм... не понял... я извиняюсь за свою глупость, но что такое экземпляр класса?


 
Calm   (2003-06-04 13:38) [11]


> TButton © (04.06.03 13:37)

см. любую книгу по основам Delphi


 
Skier   (2003-06-04 13:39) [12]

>Calm © (04.06.03 13:36)
Не только.
>TButton © (04.06.03 13:37)
Книги почитай.


 
TButton   (2003-06-04 13:43) [13]

я как бы сказать, основы дельфы знаю. я не знаю что такое экземпляр класса. серьезно. для меня ООП - object из Паскаля.


 
Skier   (2003-06-04 13:46) [14]

>TButton © (04.06.03 13:43)

> я как бы сказать, основы дельфы знаю. я не знаю что такое
> экземпляр класса.

Два взаимо-исключающих утверждения !


 
Calm   (2003-06-04 13:51) [15]


> > я как бы сказать, основы дельфы знаю. я не знаю что такое
>
> > экземпляр класса.
>
> Два взаимо-исключающих утверждения !


:-)


 
TButton   (2003-06-04 14:09) [16]

проехали. а как мне потом этот класс объявить в проге?



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.06.16;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.005 c
3-50209
Niki
2003-05-23 14:01
2003.06.16
TADOConnection.Attributes


14-50478
Holy
2003-05-30 13:15
2003.06.16
Литература


6-50418
Beerlover
2003-04-13 20:37
2003.06.16
UDP socket


1-50341
Maniacosaur
2003-05-29 10:11
2003.06.16
Делфи и 1с через OLE


1-50298
dataMaster
2003-06-04 16:30
2003.06.16
Национальные названия





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