Вверх ↑
Этот топик читают: Гость
Этот топик был перемещен из раздела "Помощь по среде"
Ответов: 11
Рейтинг: 0
#1: 2020-08-07 19:21:29 ЛС | профиль | цитата
Имея смутные представления о программирование с кубиками справляться научился более или менее.
Не понимая внутренней кухни HaiAsm пытаюсь разобраться со вставками IC кода.На просторах интернета нашёл код с интересующим меня функционалом (хеширование SHA512 и т.д), который без особых трудов запустил на Lazarus-е, и вот тут мне не понятно, можно ли подцепить компоненты из блок USES Делфи в USES IC кода и куда рассовывать компоненты в HaiAsm-е, что бы компелятор всё это увидел.
 unit Unit1;
{$mode objfpc}{$H+}

interface

uses
Classes, SysUtils, Forms, Graphics, httpsend,ssl_openssl,DateUtils,cHash,StdCtrls;

type

{ TForm1 }

TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Memo1Change(Sender: TObject);
private
......................
Банально пробовал
    unit HiAsmUnit;

interface

uses kol,Share,Debug,DateUtils;
... не канает. Забрасывал DateUtils во все каталоги HaiAsm-a без результата, так и не натянул саву на глобус. Просвятите пожалуйста.

Редактировалось 2 раз(а), последний 2020-08-07 20:22:26
карма: 0

0
vip
#1.1контекстная реклама от партнеров
Ответов: 5227
Рейтинг: 586
#2: 2020-08-07 22:16:02 ЛС | профиль | цитата
Базовый пакет Delphi & FPC использует библиотеку KOL а не VCL. Так что придётся искать юниты для KOL.
Но есть вероятно возможность сделать это через VBJScript, не понятно правда что Ваш функционал должен делать...
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 11
Рейтинг: 0
#3: 2020-08-07 22:55:55 ЛС | профиль | цитата
Хотелось бы это переработать в виде IC , ну или просто функцию шифрование на основе cHash остальное можно кубиками реализовать.


unit Unit1;

{$mode objfpc}{$H+}

interface

uses
Classes, SysUtils, Forms, Graphics, httpsend,ssl_openssl,DateUtils,cHash,StdCtrls;

type

{ TForm1 }

TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Memo1Change(Sender: TObject);
private

public

end;

var
Form1: TForm1;

HTTPSend1:THTTPSend;
key, secret:string;
url,sign:string;
HTTP:THttpSend;
list:TStringList;
nonce:string;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.Button1Click(Sender: TObject);
begin
key:='';
secret:='';
nonce:=inttostr(DateTimeToUnix(now));

url:='https://bittrex.com/api/v1.1/account/getbalance?apikey='+key+'&nonce='+nonce+'&currency=USD';
//url:='https://bittrex.com/api/v1.1/market/selllimit?apikey='+key+'&nonce='+nonce+'&market=BTC-TUBE&quantity=100&rate=0.00000109';
//url:='https://api.bittrex.com/api/v1.1/account/getbalance?apikey=API_KEY&currency=BTC
sign:=SHA512DigestToHex(CalcHMAC_SHA512(secret, url));

HTTP:=THttpSend.Create;
HTTP.Headers.Add('apisign:'+sign);
HTTP.HTTPMethod('GET',url);
list:=TStringList.Create;
list.LoadFromStream(HTTP.Document);
memo1.Lines.Add(inttostr(HTTP.ResultCode)+#13#10+list.Text);
list.Free;
HTTP.Free;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin

end;

procedure TForm1.Memo1Change(Sender: TObject);
begin

end;

end.

--- Добавлено в 2020-08-07 23:21:35

Попробовал так:

unit HiAsmUnit;

interface

uses kol,Share,Debug,DateUtils;

type
THiAsmClass = class(TDebug)
private

public
Event:THI_Event;

procedure doConvert(var Data:TData; index:word);
end;

implementation
procedure THiAsmClass.doConvert;
var
s:string;
begin
s:=Int2Str(DateTimeToUnix(now));
//s:=inttostr(DateTimeToUnix(now));
//s:='ww';
_hi_OnEvent(Event,s);

End;

end.
Компилятор выдал:
...
...
C:\Program Files (x86)\HiAsm2\Elements\delphi\code\DateUtils.pas(1)
C:\Program Files (x86)\HiAsm2\Elements\delphi\code\DateUtils.pas(63) Fatal: Cannot use reserved unit name 'System'
Сборка завершена.

Когда я смотрю на код Делфи, хотя бы в общих чертах понимаю что вижу.А VBJScript тёмный лес.

Редактировалось 1 раз(а), последний 2020-08-07 23:21:35
карма: 0

0
Ответов: 5227
Рейтинг: 586
#4: 2020-08-08 00:17:42 ЛС | профиль | цитата
Olegam, Ну и что там понимать то
без гарантий но попробуй
Add(MainForm,2953706,70,84)
{
Width=528
Height=340
}
Add(VBJScript,8805743,126,168)
{
WorkPoints=#6:doWork|
EventPoints=#5:onRes|
DataPoints=#3:Txt|9:SecretKey|
Script=#15:Option Explicit|0:|37:Dim asc, enc, bytes, outstr, pos, Key|0:|19:Sub doWork(dt, idx)|52: Set asc = CreateObject("System.Text.UTF8Encoding")|67: Set enc = CreateObject("System.Security.Cryptography.HMACSHA512")|0:|33: bytes = asc.GetBytes_4(sys.Txt)|37: Key = asc.GetBytes_4(sys.SecretKey)|15: enc.Key = Key|36: bytes = enc.ComputeHash_2((bytes))|0:|13: outstr = ""|28: For pos = 1 To Lenb(bytes)|74: outstr = outstr & LCase(Right("0" & Hex(Ascb(Midb(bytes, pos, 1))), 2))|6: Next|2: |18: sys.onRes outstr|7:End Sub|
link(onRes,424989:doText,[])
link(Txt,12016934:Text,[])
link(SecretKey,9696385:Text,[(139,133)(181,133)])
}
Add(Edit,12016934,126,84)
{
Left=20
Top=15
Width=140
}
Add(Memo,424989,196,147)
{
Left=175
Top=15
Width=325
Height=265
}
Add(Button,2640099,67,168)
{
Left=20
Top=85
Width=140
Height=35
Caption="Test"
link(onClick,8805743:doWork,[])
}
Add(Edit,9696385,175,84)
{
Left=20
Top=55
Width=140
Text="SecretKey"
}


там же и отправку можно сделать в несколько сток

Редактировалось 1 раз(а), последний 2020-08-08 00:20:34
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 2059
Рейтинг: 131
#5: 2020-08-08 02:13:42 ЛС | профиль | цитата
Человек пишет:
Хотелось бы это переработать в виде IC

Ich will dies und das

А ответ Барсике ?

Редактировалось 1 раз(а), последний 2020-08-08 02:20:00
карма: 6

0
Ответов: 5227
Рейтинг: 586
#6: 2020-08-08 07:07:54 ЛС | профиль | цитата
Да блин что там делать то

Add(InlineCode,2906007,133,287)
{
WorkPoints=#9:doConvert|
EventPoints=#5:Event|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses kol,windows,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|22: Event: THI_Event;|53: procedure doConvert(var Data:TData; index:word);|5: end;|0:|14:implementation|0:|5:const|24: UnixDateDelta = 25569;|0:|0:|56:function DateTimeToUnix(const AValue: TDateTime): Int64;|5:begin|57: Result := Round((AValue - UnixDateDelta) * SecsPerDay);|4:end;|0:|32:procedure THiAsmClass.doConvert;|4:var |12: s: string;|5:begin|34: s:=Int2Str(DateTimeToUnix(now));|24: _hi_OnEvent(Event,s); |4:end;|0:|4:end.|
}

карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 16884
Рейтинг: 1239
#7: 2020-08-08 08:10:20 ЛС | профиль | цитата
andrestudio писал(а):
Да блин что там делать то

Add(MainForm,2953706,21,105)
{
link(onCreate,16735417:doConvert,[])
}
Add(DateConvertor,16735417,84,119)
{
Mode=19
Point(Data)
link(onResult,2953706:doCaption,[(128,125)(128,118)(9,118)(9,111)])
link(Data,12465396:DateTime,[])
}
Add(Time,12465396,77,63)
{
Point(DateTime)
}



Редактировалось 1 раз(а), последний 2020-08-08 08:10:45
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 5227
Рейтинг: 586
#8: 2020-08-08 08:22:17 ЛС | профиль | цитата
Tad, ну ты хоть сравнение бы сделал для начала а то получается "Аттело промахнулся!"
Что думаешь я даун что-ли В конвертере эта константа VCLDATE0 отличает код от оригинальной функции. А зачем она там, сиё великая тайна
Add(MainForm,16206858,217,161)
{
link(onCreate,3121164:doEvent1,[])
}
Add(DateConvertor,16735417,315,175)
{
Mode=19
Point(Data)
link(onResult,16206858:doCaption,[(352,181)(352,174)(205,174)(205,167)])
link(Data,12465396:DateTime,[])
}
Add(Time,12465396,308,119)
{
Point(DateTime)
}
Add(InlineCode,2906007,315,238)
{
WorkPoints=#9:doConvert|
EventPoints=#5:Event|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses kol,windows,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|22: Event: THI_Event;|53: procedure doConvert(var Data:TData; index:word);|5: end;|0:|14:implementation|0:|5:const|24: UnixDateDelta = 25569;|0:|0:|56:function DateTimeToUnix(const AValue: TDateTime): Int64;|5:begin|57: Result := Round((AValue - UnixDateDelta) * SecsPerDay);|4:end;|0:|32:procedure THiAsmClass.doConvert;|4:var |12: s: string;|5:begin|34: s:=Int2Str(DateTimeToUnix(now));|24: _hi_OnEvent(Event,s); |4:end;|0:|4:end.|
link(Event,16067906:doText,[])
}
Add(Label,16067906,371,238)
{
Left=185
Top=40
}
Add(Hub,3121164,273,175)
{
link(onEvent1,16735417:doConvert,[])
link(onEvent2,2906007:doConvert,[(301,188)(301,244)])
}


--- Добавлено в 2020-08-08 08:37:18

Кстати я мог бы и на васике предложить но там видать в Now смещение с учётом этой константы
Add(MainForm,16206858,217,161)
{
link(onCreate,3121164:doEvent1,[])
}
Add(DateConvertor,16735417,315,175)
{
Mode=19
Point(Data)
link(onResult,16206858:doCaption,[(352,181)(352,174)(205,174)(205,167)])
link(Data,12465396:DateTime,[])
}
Add(Time,12465396,308,119)
{
Point(DateTime)
}
Add(InlineCode,2906007,315,238)
{
WorkPoints=#9:doConvert|
EventPoints=#5:Event|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses kol,windows,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|22: Event: THI_Event;|53: procedure doConvert(var Data:TData; index:word);|5: end;|0:|14:implementation|0:|5:const|24: UnixDateDelta = 25569;|0:|0:|56:function DateTimeToUnix(const AValue: TDateTime): Int64;|5:begin|57: Result := Round((AValue - UnixDateDelta) * SecsPerDay);|4:end;|0:|32:procedure THiAsmClass.doConvert;|4:var |12: s: string;|5:begin|34: s:=Int2Str(DateTimeToUnix(now));|24: _hi_OnEvent(Event,s); |4:end;|0:|4:end.|
link(Event,16067906:doText,[])
}
Add(Label,16067906,371,238)
{
Left=185
Top=40
}
Add(Hub,3121164,273,175)
{
OutCount=3
link(onEvent1,16735417:doConvert,[])
link(onEvent2,2906007:doConvert,[(301,188)(301,244)])
link(onEvent3,15442685:doWork,[(295,195)(295,300)])
}
Add(VBJScript,15442685,315,294)
{
WorkPoints=#6:doWork|
EventPoints=#5:onRes|
Script=#27:const UnixDateDelta = 25569|24:const SecsPerDay = 86400|0:|31:Function DateTimeToUnix(AValue)|59: DateTimeToUnix = Round((AValue-UnixDateDelta)*SecsPerDay)|13:End Function|0:|19:Sub doWork(dt, idx)|31: sys.onRes DateTimeToUnix(Now)|7:End Sub|0:|
link(onRes,14282112:doText,[])
}
Add(Label,14282112,371,294)
{
Left=185
Top=80
}


Редактировалось 2 раз(а), последний 2020-08-08 08:38:06
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 4621
Рейтинг: 746
#9: 2020-08-08 08:48:58 ЛС | профиль | цитата
Olegam писал(а):
uses Classes, SysUtils, Forms, Graphics, httpsend,ssl_openssl,DateUtils,cHash,StdCtrls;
Модули Classes, SysUtils, Forms, Graphics, DateUtils, StdCtrls в HiAsm отсутствуют. Из стандартных доступен только модуль Windows. Добавление требует больших усилий. Поэтому надо добавить в папку Elements\Delphi\code только нестандартные модули httpsend, ssl_openssl, cHash, а в них убрать зависимости от стандартных модулей, но это не всегда просто. Бывает проще вытащить из них только необходимые функции прямо в IC.

В случае с хешированием и шифрованием - можно взять код из компонентов Hashsum и других из вкладки "Инструменты".
карма: 26

0
Ответов: 5227
Рейтинг: 586
#10: 2020-08-08 09:22:08 ЛС | профиль | цитата
Netspirit, ну может я что то не сделал так это сам транспорт пакета, (а ведь сказал что на васике 10 строк)
сам алгоритм шифрования проверен vbs здесь https://hash.online-convert.com/ru/sha512-generator
Тут принципиальный вопрос, чем VBSJScript компонент не устраивает пользователя
А принципиален он тем что я просто напросто зря трачу время для невежд, которым прежде чем задать вопрос просто погулить в ломы (не к топик стартеру а в общем)
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 11
Рейтинг: 0
#11: 2020-08-08 09:57:11 ЛС | профиль | цитата
Хорошо. Наверное засяду с самоучителем VBSJScript , но даже у знатоков выше по теме результат не однозначный. А что уж говорить о самоучке, которому понадобится не один год что бы достичь результата.
Суть вопроса была не в том как реализовать функцию на том или ином языке программирования, а как заставить функционировать функции Делфи пакета (DateUtils с функцией DateTimeToUnix(now) был приведён просто как пример) в IC HaiAsm. Понял что для меня это не выпонимая задача. Всем спасибо.

Редактировалось 1 раз(а), последний 2020-08-08 10:02:25
карма: 0

0
Главный модератор
Ответов: 2997
Рейтинг: 395
#12: 2020-08-08 10:15:05 ЛС | профиль | цитата
Olegam писал(а):
Суть вопроса была не в том как реализовать функцию на том или ином языке программирования, а как заставить функционировать функции...

Demo: quick use of C# code from the internet


Как видно на видео пакет Core программы HiAsm.NET более продвинут в этом направлении. И если Вас не смущает, что это C#, то можете попробовать себя в этом проекте.
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Ответов: 5227
Рейтинг: 586
#13: 2020-08-08 10:23:44 ЛС | профиль | цитата
Olegam, VBS много времени не займёт (2 недели максимум) Просто вспоминаются тяжёлые времена когда любое ЯВУ было табу (даже на кресте за это были готовы распять) единственный язык программирования это был HiAsm (и это было на самом деле так) Ну а так как я пошёл в "Зазеркалье" то есть ЯВУ изучать, кидали в меня тапками и праведники и безбожники. Ну и что, я ведь заранее знал что авторитет это переменная а не константа (как они себе её причислили) сейчас как от чумы от меня открещиваются Да мне похрен, кто знает что я смогу и сделаю а не буду кубаторить по 2-3-4 страницы вокруг до около тот поймёт
Удачи тебе, не оглядывайся на кубики, болото непроходимое, засасывает!

Nic, там 30 строк кода в VBSJScript(твои же функции дёркать в NET v1.0 которая уже по умолчанию присутствует), пускай попробуют твой пакет
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 11
Рейтинг: 0
#14: 2020-08-08 11:04:38 ЛС | профиль | цитата
Полистал документацию по VBS, действительно сложностей не вижу в освоении, но мне всё это интересно с практической точки зрения. Скажите , я правильно понял что из VBS можно жать на кнопки, считывать и заполнять данные полей веб документа.
Есть расширение в Яндекс браузере, которое при работе открывает форму с полями и кнопкой. Можно ли будет реализовать заполнение этих полей и нажатие кнопки скриптом или вообще было бы замечательно что бы всё проделать в фоне.Сейчас я всё это делаю через эмуляцию мыши и клавиатуры внутри браузерного окна.
----------
Интернет говорит что можно. Ок. будим осваивать.

Редактировалось 1 раз(а), последний 2020-08-08 11:24:19
карма: 0

0
14
Сообщение
...
Прикрепленные файлы
(файлы не залиты)