sashaoli писал(а):
но ведь она объявлена в классе THiAsmClasssashaoli писал(а):
то она, увидела быНапример, если в классе есть метод
TMyClass.TestMethod(Arg1: Integer)
то вот этот вызов
MyObject.TestMethod(123)
компилятором фактически трансформируется примерно в это:
TMyClass.TestMethod(MyObject, 123)
Типа, TMyClass.TestMethod - это название обычной процедуры, описанной в секции implementation. А работать она должна с полями объекта, который мы ей передаём.
Эта методика применяется только в Delphi. В других языках это может быть реализовано по-другому. Поэтому в API не могут зашить работу только с Delphi, разрешив тебе указывать в качестве callback метод класса THiAsmClass.ProgressCallback. А вот глобальная функция, дополнительно подкрепленная ключевым словом stdcall, имеет вполне конкретную внутреннюю реализацию и будет работать с любым языком, который поддерживает соглашение stdcall.