procedure THiAsmClass.doCreate; является методом класса, поэтому обращаться к своим полям можно.
function ProgressCallback просто глобальная процедура и не знает о существовании THiAsmClass. Для таких случаев в callback-функцию предусматривается передача пользовательского параметра. Таким параметром можно передать указатель на экземпляр класса THiAsmClass, через который можно будет получить доступ к его полям. Смотри API. В частности, что значит параметр
ProgressCallback(sender: Pointer; total: boolean; value: int64): HRESULT; stdcall;
sashaoli писал(а):
Кроме того, для правильной работы 7zip API пришлось прикрутить к HiAsm Delphi 7sashaoli писал(а):
Как правильно считать данные с точки?------------ Дoбавленo в 18.06:
#pas
function ProgressCallback(sender: Pointer; total: boolean; value: int64): HRESULT; stdcall;
begin
if total then
_hi_onEvent(THiAsmClass(sender).onProgressMax, value) else
_hi_onEvent(THiAsmClass(sender).onProgress, value);
Result := S_OK;
end;
procedure THiAsmClass.doCreate;
var
...
begin
...
Arch.SetProgressCallback(Self, ProgressCallback);
...
end;