forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Delphi (http://forum.boolean.name/forumdisplay.php?f=66)
-   -   DLL на Delphi для Blitz (http://forum.boolean.name/showthread.php?t=3336)

WaReZ_MEN 10.05.2007 05:40

DLL на Delphi для Blitz
 
Кто нибудь делал? Может поделитись опытом?

Platon 10.05.2007 06:59

Re: DLL на Delphi для Blitz
 
Вот так:
Код:

Library Имя_Библиотеки;

Uses SysUtils, Classes;

Function Имя_Функции1(Параметр1:Тип1, Параметр2:Тип2, ... ):Тип; StdCall;
Begin
        Result := Возвращаемый_Результат;
End;

Function Имя_Функции2(Параметр1:Тип1, Параметр2:Тип2, ... ); StdCall;
Begin

End;

Exports
        Имя_Функции1, Имя_Функции2, ...;

Begin
End.

И вместо типа String юзай тип PChar.

pipns 13.05.2007 12:42

Re: DLL на Delphi для Blitz
 
У меня другой вопрос, но по этой теме! Например я хочу экспортировать процедуру FlashWindow ( Handle, True ), что надо написать вместо Handel. Помогите!

HolyDel 14.05.2007 01:34

Re: DLL на Delphi для Blitz
 
integer
или longint (експерементируй)
(хз кто из них 32-битный)

WaReZ_MEN 14.05.2007 02:12

Re: DLL на Delphi для Blitz
 
integer 32-битный
longint 64-битный

__________________

avel 15.10.2007 12:54

Re: DLL на Delphi для Blitz
 
а у меня такой вопрос:
как мне в длл форму засунуть или др. ресурс? вернее как засунуть я в принципе примерно представляю, но как сделать, чтобы их потом можно было из другой проги вызывать (например из блица)?
заранее всем благодарен.

dimanche13 15.10.2007 13:13

Re: DLL на Delphi для Blitz
 
avel, ответ на твой вопрос в журнале из твоей подписи ;) статья МэдМедика

avel 16.10.2007 01:20

Re: DLL на Delphi для Blitz
 
может, я тупой, но прочитав статью все равно не нашел ответа на свой вопрос! :(
тем более, что там про пуре бэйсик, а я про делфи спрашивал, хотя все равно спасибо.
вопрос остается в силе.

WaReZ_MEN 16.10.2007 04:54

Re: DLL на Delphi для Blitz
 
Ты погугли. Внете полны инфы про то как запихать форму в длл. А вот как ее вытощит в блитце это другой вопрос... вообще назрена это тебе нужно? этож все геморно.

avel 17.10.2007 01:17

Re: DLL на Delphi для Blitz
 
Цитата:

А вот как ее вытощит в блитце это другой вопрос...
вот в этом мой основной вопрос и состоит!

WaReZ_MEN 17.10.2007 02:07

Re: DLL на Delphi для Blitz
 
ты скажи для чего??? В блитце есть ведь ГУИ....

dimanche13 17.10.2007 12:49

Re: DLL на Delphi для Blitz
 
Да, Авел, скажи зачем тебе Дельфийская форма? Ведь у Б3Д стока ГУИ(где-то ветка была) что другие ЯП краснеют и отходят в сторонку...

avel 22.10.2007 02:14

Re: DLL на Delphi для Blitz
 
да, дело не только в форме. просто в самом алгоритме. например картинки в длл запихнуть или еще там чего... короче надо! в нете глянул, но ничего конкретного не нашел, только про длл вообще и общие рекомендации. так че, знает кто?

avel 28.10.2007 01:55

Re: DLL на Delphi для Blitz
 
ну, блин! :(
никто и не знает.

jimon 28.10.2007 10:21

Re: DLL на Delphi для Blitz
 
если есть описание структуры картинки\текстуры внутри блица то

вариант A)
создать в блице картинку нужного размера (узнать в DLL)
передать указатель в DLL
в DLL использовав структуру картинки записать нужную инфу
усе

вариант Б)
создать в блице картинку нужного размера
брать по значению из DLL и записывать в картинку

avel 30.10.2007 16:23

Re: DLL на Delphi для Blitz
 
2jimonэто я понимаю, не тупой. можно слегка поподробнее. какой там код прописать надо для передачи из длл?

IGR 30.10.2007 18:29

Re: DLL на Delphi для Blitz
 
слух, avel, я так понял тебе просто спрятать надо ??
необезательно в dll правда ??

проще простого перевести сам файл картинки в data и читать оттуда инфо, а потом написать всего две строчки что бы сохранить дату в имейджбуфер(или в чё другое) !! мой Visual Blitz IDE делает это все сам !! :)

jimon 30.10.2007 20:27

Re: DLL на Delphi для Blitz
 
avel
ну, в dll делаешь функцию типа ReadImagePixel(img_id,x,y)
и ReadImageWidth(img_id) , ReadImageHeight(img_id)
с нее собсно передаешь пиксель в виде ARGB (int)
как прочитать пиксель из картинки в делфи - хз

в блице потом пишеш типа
Код:

width = ReadImageWidth(1)
height = ReadImageHeight(1)
img = CreateImage(width,height) ;вроде так :/

for x = 1 to width
for y = 1 to height
pixel = readimagepixel(1,x,y)
writepixel x,y,pixel ;вроде тоже так
next
next

вот и все

reskator 05.11.2007 20:44

Re: DLL на Delphi для Blitz
 
Цитата:

Сообщение от Cyan
Вот так:
Код:

Library Имя_Библиотеки;
 
Uses SysUtils, Classes;
 
Function Имя_Функции1(Параметр1:Тип1, Параметр2:Тип2, ... ):Тип; StdCall;
Begin
    Result := Возвращаемый_Результат;
End;
 
Function Имя_Функции2(Параметр1:Тип1, Параметр2:Тип2, ... ); StdCall;
Begin
 
End;
 
Exports
    Имя_Функции1, Имя_Функции2, ...;
 
Begin
End.

И вместо типа String юзай тип PChar.



В Delphi 7 пишу
library DLL3;
uses
SysUtils,
Classes;
{$R *.res}
Function probe(a:integer; b:integer ):integer; StdCall;
Begin
Result := a+b;
End;
Function probe2(a:real; b:real ):real; StdCall;
Begin
Result := a+b;
End;
Exports
probe,probe2;
Begin
End.

перезапускаю Блиц - пишу :
Print Dll3probe (5,2)
Print Dll3probe2 (3.2,2.1)
WaitKey

ожидаю получить : 7 и 5.3
получаю : 7 и 3.6
С целым типом все ок.
А с вещественным не ок. понимаю что дело в предсавлении чисел - а что делать не понимаю!!!

GomZik 18.04.2008 17:00

Ответ: DLL на Delphi для Blitz
 
А как например запихать в DLL полное упровление сокетклиентом из вкладки в Internet для блица? А то уж очень меня не устраивает стандартная работа блицевской сети... DLL я никогда не писал, поэтому не ругайте если я чё не так сделал:
Создал проэкт DLL, впихнул форму, на форме компанент клиентсокет, и функция его запуска через Form1.ClientSocket1.... блиц яростно на меня выругался и я понял что это неправильно... А как правильно, если такое вобще возможно???

-=SCiP=- 19.04.2008 01:10

Ответ: DLL на Delphi для Blitz
 
GomZik Конечно не чего не получится так.
Придется все создовать через алгоритм.
Типа мини пример.

procedure TForm1.Button1Click(Sender: TObject);
var
OPDi:TOpenDialog;
begin
OPDi:=TOpenDialog.Create(nil);
if OPDi.Execute then
begin
//Твой код
end;
end;

Потобие такого попробуй!
Тока Обьяви Сокет компонента
TOpenDialog; << в место этого.
А так через форму новрятли что то получится!
Кстати в Функции обьявляй не String а PChar

GomZik 21.04.2008 03:09

Ответ: DLL на Delphi для Blitz
 
Крехтя пыхтя разобрался... Но тем не мение остались вопросы...
Пишу в делфи:
Код:

function OpenClient(ip:pchar;port:integer):pchar; stdcall;
begin
TCS:=TClientSocket.Create(nil);
TCS.Address:=ip;
TCS.Port:=port;
TCS.Active:=true;
result:=ip;
end;
function CloseClient():integer; stdcall;
begin
TCS.Active:=false;
result:=1;
end;

ну и всё прилагающее само собой...
Потом это всё в блиц, там пишу
Код:

OpenClient("192.168.141.13",32592)
WaitKey
CloseClient()

Сокет успешно открывается и конектица (с лога сервера) но после нажатия любой кнопки он выходит но как-то не правильно, и соответственно в логе пишется ошибка... Что не так?


Часовой пояс GMT +4, время: 00:38.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot