Показать сообщение отдельно
  #4  
Старый 10.12.2008, 12:20
LoDS LoDS вне форума
Прохожий
 
Регистрация: 09.12.2008
Сообщения: 10
Репутация: 10
По умолчанию

можно закрывать топик, проблема решена
в строке "Convertor.Init(FileName,TAPI.Create);" может быть неявная переменная, которая освобождается после FreeLibrary. это и вызывало ошибку, ну еще поменял тип string на WideString, теперь окончательный вариант выглядит следующим образом:
Код:
procedure TForm1.LoadData(FileName: String);
var
  PluginName        : String;
  hPlugIn             : THandle;
  CreateConvertor : TCreateConvertor;
  Convertor          : IConvertor;
  PAPI                 : TAPI;
begin
PlugInName:=Edit1.Text;
hPlugIn := LoadLibrary(PChar(PluginName));
CreateConvertor := GetProcAddress(hPlugIn, 'CreateConvert');
if Assigned(CreateConvertor) then
 begin
  if CreateConvertor(Convertor) then
 begin
   try
    PAPI:=TAPI.Create;
    Convertor.Init(FileName,PAPI);
    Convertor.Convert;
   finally
    Convertor:=nil;
    PAPI:=nil;
   end;
 end;
 end;
FreeLibrary(hPlugIn);
end;
Ответить с цитированием