Форум: "Начинающим";
Текущий архив: 2009.04.12;
Скачать: [xml.tar.bz2];
ВнизБаг при выходе из функции Найти похожие ветки
← →
жора (2009-02-25 22:46) [0]При выходе из функции EBP принимает черт-знает-какое значение и прога падает естественно...
вот оно
function TPluginEngine.EditDnc(const OldDncData: PDnc): PDnc;
var
ptr: pointer;
size: dword;
idx: integer;
EditProc: TProcEditData;
begin
TRY
result := NIL;
if OldDncData=NIL
then raise exception.CreateCustom(160988,"parameter = NULL");
EditProc := NIL;
case OldDncData.DncType of
dfnDnc :begin
idx := DfnIDList.IndexOf( pointer(OldDncData.dncSubType) );
if idx<>-1 then EditProc := DfnProcList.Items[idx];
end;
objDnc :begin
idx := ObjIDList.IndexOf( pointer(OldDncData.dncSubType) );
if idx<>-1 then EditProc := ObjProcList.Items[idx];
end;
InitScDnc :begin
EditProc := fEditInitScript;
end;
VisEffDnc :begin
EditProc := fEditVisEffects;
end;
else begin
raise exception.CreateCustom(160988,"ХЗ ПОЧИМУ.. НО РЕДАКТИРУЕМ НЕИЗВЕСТНЫЙ DNC");
end;
end;
if @EditProc=NIL then begin
{$IFDEF PLUG_DEBUG} writeln("PluginEngine.EditDnc(dnc Type=",ord(OldDncData.DncType),"; subType=",OldDncData.dncSubType," - NO PLUGIN"); {$ENDIF}
exit;
end;
result := NewDnc;
Stream2Ptr( OldDncData, ptr, size );
EditProc( ptr, size ); // это находится в длл
if (ptr=NIL) or (size=0)
then raise exception.CreateCustom(160988,"Incorrect DLL; EditProc result = NULL");
Ptr2Stream( ptr, size, result );
result.UpdType;
result.UpdSubType;
result.UpdName;
EXCEPT
On E: exception do begin {$IFDEF PLUG_DEBUG}writeln("PluginEngine.EditDnc: ",E.message);
{$ELSE} MsgBox("PluginEngine.EditDnc: "+E.message, mb_iconerror);
{$ENDIF}
result.Free;
result := NIL
end;
END;
end;
//0040CF6E 5D POP EBP - тут что-то не то в ЕБП суётся
//0040CF6F C3 RETN
вот так она вызываетсяnewDNC := plug.EditDnc(dnc);
в чём может быть причина??
спасибо
← →
Германн © (2009-02-26 00:10) [1]
> в чём может быть причина??
Видя слово "Plugin" предполагаю, что проблема в соглашении о вызовах.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.04.12;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c