Вверх ↑
Этот топик читают: Гость
Ответов: 5227
Рейтинг: 585
#1: 2019-09-13 15:20:22 ЛС | профиль | цитата
Всем привет, я вернулся
Всех с праздником программиста!
Спецов хочу попросить посмотреть почему метод doFromText в fpc в runtime падает при любом чихе,
а именно к доступу интерфейсов IDispatch, там три метода и все не работают, хотя в d4 работают все.
само тут -› https://forum.hiasm.com/getfile/38738
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
vip
#1.1контекстная реклама от партнеров
Ответов: 2059
Рейтинг: 131
#2: 2019-09-13 15:46:24 ЛС | профиль | цитата
Сер Антонио, Рад тебя видеть!!!
Грешным делом, я хотел совсем завязать хотел с этим делом, c HiAsm-то!
Но если есть такие чудики - то я не один!
Велосипеды будем изобретать? - а куда деваться!

P.S.
Ведь случайно зашел...
Не то что не ловко, что писал на медне, пьяный, не ловко - подпишусь под каждым словом.
Короче Капитана...!

Редактировалось 4 раз(а), последний 2019-09-13 15:55:08
карма: 6

0
Ответов: 4612
Рейтинг: 746
#3: 2019-09-13 16:15:08 ЛС | профиль | цитата
После выходных только смогу посмотреть...
карма: 26

0
Ответов: 537
Рейтинг: 14
#4: 2019-09-13 21:20:56 ЛС | профиль | цитата
andrestudio как заставить такой InlineCode с компилятором Delphi работать с вашим браузером? В стандартном браузере работает, а с вашим ошибку выдает
Add(MainForm,2953706,77,238)
{
Width=654
Height=549
Caption="WebBrowserFPC test"
WindowsState=2
Point(PHandle)
}
Add(WebBrowserFPC,115378,322,161)
{
Left=95
Top=50
Width=535
Height=420
Align=5
URL=""
Silent=0
Point(doFromText)
Point(onProgressMax)
Point(PHandle)
link(onNavigate,13820449:doValue,[(376,167)(376,90)])
link(onTitle,13799248:doText,[(415,174)(415,48)])
link(onStatus,11683041:doString,[(442,181)(442,146)])
link(onProgress,1263917:doPosition,[])
link(onProgressMax,1263917:doMax,[])
}
Add(ProgressBar,1263917,469,182)
{
Top=489
Width=646
Align=4
Smooth=1
ProgressColor=8388608
Point(doMax)
}
Add(Edit,13799248,476,42)
{
Left=10
Top=15
Width=625
Text=""
}
Add(StatusBar,13613721,532,140)
{
}
Add(Memory,13820449,476,84)
{
}
Add(FormatStr,11683041,469,140)
{
Mask="%1 - %2 "
link(onFString,13613721:doText,[])
link(Str2,13820449:Value,[])
}
Add(Button,10535757,77,161)
{
Left=10
Top=50
Width=70
Caption="Url"
Data=String(https://forum.hiasm.com/topic/67438)
link(onClick,115378:doNavigate,[])
AddHint(-56,-37,188,26,Data)
}
Add(Button,3508721,287,224)
{
Left=10
Top=75
Width=70
Caption="Text"
Data=String(javascript:var articles=document.getElementsByClassName("resize-observer")[0].scrollTop="250";void(0);)
link(onClick,795822:Parsel,[])
}
Add(Clipboard,6433678,385,224)
{
}
Add(InlineCode,795822,336,224)
{
WorkPoints=#6:Parsel|
EventPoints=#7:CurText|
DataPoints=#2:ph|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|40:uses kol,Share,Debug,ActiveX,KOLSHDocVw;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|0:|9: public|17: ph:THI_Event;|22: CurText:THI_Event;|0:|47: procedure Parsel(var dt:TData; index:word);|0:|5: end;|0:|14:implementation|0:|4:type|31: TKOLWebBrowser = PWebBrowser;|31: PKOLWebBrowser = PWebBrowser;|0:|29:procedure THiAsmClass.Parsel;|16:var pc:PControl;|15: txt:string;|5:begin|36: pc := PControl(ToIntegerEvent(ph));|81: txt := PKOLWebBrowser(pc).OleObject.Document.all.tags('body').Item(0).outerHTML;|26: _hi_OnEvent(CurText,txt);|4:end;|0:|4:end.|
link(CurText,6433678:doPutText,[])
link(ph,115378:PHandle,[])
}


Редактировалось 1 раз(а), последний 2019-09-13 21:29:43
карма: 4

0
Ответов: 5227
Рейтинг: 585
#5: 2019-09-13 21:34:55 ЛС | профиль | цитата
Sersey, пока не знаю, вероятно не получить доступ по PControl но указатель на интерфейс получить можно (тупо добавить нижнюю точку), после всего этого можно и на VBJScript делать что хочешь из вне...

--- Добавлено в 2019-09-13 21:39:14

Netspirit, хорошо, буду ждать. Я собственно и затеивал эту байду для fpc только из за этого метода, и надо же как обломался на ровном месте. Так что в долгу не останусь, верну любой свой труд на твой выбор.

Редактировалось 1 раз(а), последний 2019-09-13 21:39:14
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Ответов: 4612
Рейтинг: 746
#6: 2019-09-16 13:44:29 ЛС | профиль | цитата
Посмотрел. Падает на любом обращении к WebBrowser, например:
_debug(string(WebBrowser.Get_LocationURL));

Предполагаю: падает по той же причине, по которой в штатном FPC не работает вообще ничего, связанного с COM-интерфейсами. Начинать разбираться следует с файла compiler\fpc\KOLComObj.pas, в котором есть попытка реализации низкоуровневой работы с интерфейсами Windows в виде функций DispCallByID(), VarDispInvoke() (да и всё остальное с ассемблерными вставками). Кладов этот файл делал для Delphi. А кто его портировал на FPC? И оно работало?
Как минимум, можно сравнить с оригинальной реализацией comobj.pp из исходников FPC 1.9.6, если нужен именно старый. Но лучше разбираться с новым FPC - там хотя бы работающие activex.pp/comobj.pp.
Для нового FPC я пробовал править KOLComObj.pas, выдирая куски кода из родного comobj.pp, но мало что получилось.

Редактировалось 3 раз(а), последний 2019-09-16 13:47:58
карма: 26

0
Ответов: 5227
Рейтинг: 585
#7: 2019-09-16 17:41:59 ЛС | профиль | цитата
Netspirit, понятно. Ладно, поковыряем ещё.
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
7
Сообщение
...
Прикрепленные файлы
(файлы не залиты)