Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.04.12;
Скачать: CL | DM;

Вниз

Баг при выходе из функции   Найти похожие ветки 

 
жора   (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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.013 c
6-1202034089
sAshA20
2008-02-03 13:21
2009.04.12
Фильтрация пакетов


15-1234272793
dreamse
2009-02-10 16:33
2009.04.12
Проблема показа Hint на windows Vista


15-1234132776
Германн
2009-02-09 01:39
2009.04.12
Кодирование в mp3 аудио сигнала со входа микрофона.


15-1234352958
Правильный$Вася
2009-02-11 14:49
2009.04.12
как перенастроить APPDATA на другой диск?


2-1235489040
cosinus
2009-02-24 18:24
2009.04.12
Как получить handle контрола в чужом приложении?