Вверх ↑
Этот топик читают: Гость
Ответов: 33
Рейтинг: 2
#1: 2010-07-01 00:04:37 ЛС | профиль | цитата
Я хотел вставить в IC (в uses) библиотеку Synapse:
http://synapse.ararat.cz/ (httpsend.pas, ssl_openssl.pas)
но она просит:
- файл SysUtils.dcu
- файл SysUtils.pas
а там пошло, поехало, компилятор начал просить всякие файлы из Delphi...

Я создал библиотеку DLL в Delphi, вставил туда функцию, подключил модули Synapse, написал инморт функции в InlineCode.
Но компилятор начал требовать поставление класа из Hiasm, и так...
карма: 1

0
Ответов: 1161
Рейтинг: 160
#2: 2010-07-01 00:07:55 ЛС | профиль | цитата
В этой библиотеке используется VST, а не KOL. Переписывание этой библиотеки под KOL будет огромнейшим баттхертом...
карма: 0

1
Голосовали:milan_bomb
Администрация
Ответов: 15295
Рейтинг: 1519
#3: 2010-07-01 00:13:02 ЛС | профиль | цитата
milan_bomb писал(а):
написал инморт функции в InlineCode.

где код?

milan_bomb писал(а):
Но компилятор начал требовать поставление класа из Hiasm

где текст?

LainX писал(а):
Переписывание этой библиотеки под KOL будет огромнейшим баттхертом...

LainX, вниметельнее топик читаем - портирование заменено выносом ф-ла в dll
карма: 26
1
Голосовали:milan_bomb
Ответов: 33
Рейтинг: 2
#4: 2010-07-01 12:01:37 ЛС | профиль | цитата
Код в IC:
code_19159.txt

В mlmaster.dpr:
code_19160.txt

карма: 1

0
файлы: 2code_19159.txt [1.1KB] [173], code_19160.txt [514B] [122]
Ответов: 4673
Рейтинг: 768
#5: 2010-07-01 12:08:58 ЛС | профиль | цитата
в code_19159.txt
function THiAsmClass.libLogin(Login:String; Pass:String; Admin:String; AdminsPass:String):String; external 'mlmaster';

Это что, метод класса можно объявить как внешний? Что-то я такого не припомню.

code_19160.txt тебе не удастся скомпилировать. В mlmaster.dpr убери все упоминания о THiAsmClass. Запиши функцию libLogin в экспорт библиотеки.
Затем объяви функцию libLogin вне класса в code_19159.txt. Напиши метод в THiAsmClass и в нем уже вызывай функцию из библиотеки.


карма: 26

1
Голосовали:milan_bomb
Ответов: 33
Рейтинг: 2
#6: 2010-07-01 12:10:50 ЛС | профиль | цитата
'#pas' убрать - его причепил тег "code";

В mlmaster.dpr я добавил в uses:
"... ,kol, Share, Debug;"
для того, чтоб обьявить клас THiAsmClass типа TDebug, что и требует компилятор Delphi в Hiasm (по поводу DLL),

и получаю:
[Error] Windows.pas(19): Invalid compiler directive: 'SMARTLINK'
[Fatal Error] SysUtils.pas(19): Could not compile used unit 'Windows.pas'

а при компиляции в Hiasm:

Генерация кода целевого языка
Компоновка проекта...
Command line: dcc32.exe "D:\Programs\HiAsm\Elements\delphi\code\xhttp.dpr" "-UD:\ch\Project Kuzm\GetMoney\." -Q
Borland Delphi Version 12.0 Copyright (c) 1983,98 Inprise Corporation

D:\Programs\HiAsm\Elements\delphi\code\hiInlineCode_4C872B0.pas(46) Error: Not enough actual parameters

D:\Programs\HiAsm\Elements\delphi\code\hiDLL_4C8AC1C.pas(8) Fatal: Could not compile used unit 'hiInlineCode_4C872B0.pas'
Сборка завершена.

карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#7: 2010-07-01 12:12:21 ЛС | профиль | цитата
библиотека должна выглядеть так

mlmaster.dpr

#pas
library mlmaster;
uses SysUtils, Classes;
{{$R *.res}

function libLogin(Login, Pass, Admin, AdminsPass:PChar):PChar;
begin
// ....
end;

exports
libLogin;

begin
end.

использование в hiasm
InlineCode

#pas
...
function libLogin(Login, Pass, Admin, AdminsPass:PChar):PChar; external 'mlmaster.dll';

procedure THiAsmClass.ActionResult(var Data:TData; index:word);
begin
data.data_type := data_str;
data.sdata := libLogin(...);
end;
...
карма: 26
1
Голосовали:milan_bomb
Ответов: 33
Рейтинг: 2
#8: 2010-07-01 12:30:31 ЛС | профиль | цитата
А что такое "Runtime error 204 at 00003035"?
Я в справке Hiasm такого не нашел...

Это возникает после использования точки ActionResult комп. Message.
Сам Message возникает, после него - Message с заголовком "Error" и текстом "Runtime error 204 at 00003035".
карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#9: 2010-07-01 12:41:32 ЛС | профиль | цитата
ошибка во время исполнения программы номер 204 по адресу 00003035
карма: 26
1
Голосовали:milan_bomb
Ответов: 33
Рейтинг: 2
#10: 2010-07-01 13:49:08 ЛС | профиль | цитата
Так то все работает...
Хотя я использую
_hi_OnEvent(onResult,Result);
для Message, он вызывается только один раз. В следующие разы вылазит Message с ошибкой и программа закрывается.
Вообще то, IC будет в цикле, я не знаю, как этого избежать...
карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#11: 2010-07-01 14:08:51 ЛС | профиль | цитата
этим и отличается программирование в тексте от программирования схемой - наличием проблем с выделением или освобождением памяти.

milan_bomb писал(а):
я не знаю, как этого избежать...

и никто не узнает пока не изучит ваши коды в IC и в DLL ф-ции
карма: 26
0
Ответов: 33
Рейтинг: 2
#12: 2010-07-01 14:12:51 ЛС | профиль | цитата
Так, значит, оно импортирует функцию при каждом doInit?
карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#13: 2010-07-01 14:14:18 ЛС | профиль | цитата
нет, не значит
карма: 26
0
Ответов: 33
Рейтинг: 2
#14: 2010-07-01 14:45:10 ЛС | профиль | цитата
Есть ли способ как-то обновить все это?
карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#15: 2010-07-01 15:12:19 ЛС | профиль | цитата
обновить что до чего?
карма: 26
0
15
Сообщение
...
Прикрепленные файлы
(файлы не залиты)