-
Inovet © (04.12.16 11:28) [20]> [19] Inovet © (04.12.16 11:27)
Ну там точки с запятой я не поставил.
TFWDebugerCore *dc = new TFWDebugerCore(параметры коструктора, или одного из них, если их несколько);
try {
...
dc->AttachToProcess(параметры);
...
}
__finally {
delete dc; // здесь будет вызван деструктор.
} -
Rouse_ © (04.12.16 11:34) [21]Ага, уже сам расставил - фурычит, спасибо :)
-
Inovet © (04.12.16 11:40) [22]Ну т.е. как это можно было бы сделать с чиcто Си++ классами, делать нельзя, поскольку Делфи классы на стеке нельзя размещать.
{ // какой-то блок кода
TFWDebugerCore dc(параметры коструктора, или одного из них, если их несколько);
...
dc.AttachToProcess(параметры);
...
} // здесь будет вызван деструктор. -
Rouse_ © (04.12.16 11:48) [23]Последнее - извнии что достаю:void __fastcall TForm1::FormCreate(TObject *Sender)
{
TFWDebugerCore *debuger = new TFWDebugerCore(0xFFFFFFFF);
try {
// debuger->OnBreakPoint = OnBreakPoint; // <<< как правильно задекларировать?
debuger->DebugNewProcess("C:\\Program Files (x86)\\Subway Surfers\\Subway_Surfers.exe", True);
debuger->RunMainLoop();
}
__finally {
delete debuger;
};
}
У меня обработчик обьявлен вот так:typedef void __fastcall (__closure *TBreakPointEvent)(System::TObject* Sender, int ThreadIndex, const _EXCEPTION_RECORD &ExceptionRecord, int BreakPointIndex, bool &ReleaseBreakpoint);
если это задекларировать в H файле то с директивой (__closure *TBreakPointEvent) рукается, обьявил вот так:class TForm1 : public TForm
{
__published: // IDE-managed Components
void __fastcall FormCreate(TObject *Sender);
private:
public: // User declarations
__fastcall TForm1(TComponent* Owner);
__fastcall OnBreakPoint(System::TObject* Sender, int ThreadIndex, const _EXCEPTION_RECORD &ExceptionRecord, int BreakPointIndex, bool &ReleaseBreakpoint);
};
Ну и в CPP оть такая декларация:__fastcall OnBreakPoint(System::TObject* Sender, int ThreadIndex, const _EXCEPTION_RECORD &ExceptionRecord, int BreakPointIndex, bool &ReleaseBreakpoint)
{
// ...
}
Пишет:
[bcc32 Error] Unit1.cpp(23): E2034 Cannot convert 'int (_fastcall * (_closure )(TObject *,int,const _EXCEPTION_RECORD &,int,bool &))(TObject *,int,const _EXCEPTION_RECORD &,int,bool &)' to 'TBreakPointEvent'
Куда еще руки поправить? -
Inovet © (04.12.16 12:06) [24]> [23] Rouse_ © (04.12.16 11:48)
> Последнее - извнии что достаю:
Та ладно уж, доставай.:)
Это мозговыносная часть Си++. Тут должно быть что-то вот такое
OnBreakPoint = &OnBreakPoint;
Это вот OnBreakPoint имя функции-обработчика. -
Rouse_ © (04.12.16 12:08) [25]Так, тыж у меня в скайпе есть, щас тогда с домашнего к тебе стукнусь
-
Inovet © (04.12.16 12:11) [26]> [24] Inovet © (04.12.16 12:06)
> OnBreakPoint = &OnBreakPoint;
В смысле - вот так объявлена переменная для хранения указателя на функцию обработчика
TBreakPointEvent OnBreakPoint;
а так присваиваем ей обработчик
OnBreakPoint = &OnBreakPoint;