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)

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, время: 23:10.

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