Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2017, 16:03   #1
Masam
Пользователь
 
Регистрация: 19.11.2009
Сообщений: 19
По умолчанию Не выгружается DLL (C#) из делфи.

Добрый день.
Не могу понять почему не могу выгрузить библиотеку.
Есть библиотека классов написанная на C# (регистрируется через RegAsm), её код:
Код:
using System;
using System.Runtime.InteropServices;

namespace ololo
{
    [ComVisible(true)]
    public class Test //: IDisposable
    {
        public bool GetYesNo(String str)
        {
            if (str.Equals("yes"))
                return true;
            else
                return false;
        }
    }
}
Есть вызов библиотеки через OLE на делфи:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  sValue: WideString;
  dllCom: OleVariant;
  sPath,error : BOOL;
begin
  sPath := false;
  error := false;
  sValue := Edit2.Text;
  try
    dllCom:= CreateOleObject('ololo.test');
    try
      sPath := dllCom.GetYesNo(sValue);
    except
      sPath := false;
      error := true;
    end;
  finally
    Finalize(dllCom);
  end;
  if error = false then
  begin
    if sPath then Label1.Caption:='yes' else Label1.Caption:='no';
  end else Label1.Caption:='Ошибка!';
end;
Вызов метода "GetYesNo" происходит корректно, получаю результат, но после "Finalize(dllCom) или dllCom:=Unassigned;" библиотека остается висеть в оперативной памяти, так как не удается удалить файл библиотеки (самое забавное что его можно вырезать и вставить в другую папку). Пробовал так же без вызова "GetYesNo", результат тоже, везде пишут, что если нет указателей на объект он должен автоматически разрушиться, но почему то этого не происходит. Подскажите пожалуйста, что я делаю не так?
О_о
Masam вне форума Ответить с цитированием
Старый 22.12.2017, 17:43   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

сомневаюсь что код выгружается. это считается не безопасной операцией как бы
Цитата:
что если нет указателей на объект он должен автоматически разрушиться
DLL != Com-объект.
первая врятли будет выгружена как я сказал.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 22.12.2017, 17:57   #3
Masam
Пользователь
 
Регистрация: 19.11.2009
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
сомневаюсь что код выгружается. это считается не безопасной операцией как бы

DLL != Com-объект.
первая врятли будет выгружена как я сказал.
Тогда я совсем не понимаю, как происходит в подобных случаях обновления, как мне тогда выгрузить код DLL?
И почему я могу переместить файл библиотеки (через MoveFile или через ctrl+X)?
О_о

Последний раз редактировалось Masam; 22.12.2017 в 18:00.
Masam вне форума Ответить с цитированием
Старый 23.12.2017, 02:19   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

Цитата:
Сообщение от Masam Посмотреть сообщение
Тогда я совсем не понимаю, как происходит в подобных случаях обновления, как мне тогда выгрузить код DLL?
не видел ни одного обновления чтоб не требовало перезапуска, либо происходило прям в рантайме.

Цитата:
Сообщение от Masam Посмотреть сообщение
И почему я могу переместить файл библиотеки (через MoveFile или через ctrl+X)?
вы можете переместить только в пределах раздела.
перемещение не срывает дескрипторы открытого файла(они работают не через путь)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 25.12.2017, 14:20   #5
Masam
Пользователь
 
Регистрация: 19.11.2009
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Пепел Феникса Посмотреть сообщение
вы можете переместить только в пределах раздела.
перемещение не срывает дескрипторы открытого файла(они работают не через путь)
Благодарю, за внесение ясности!
О_о
Masam вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Excel не выгружается из памяти Raikhman Microsoft Office Excel 2 01.06.2016 13:12
DLL в делфи demigod82 Помощь студентам 4 17.02.2012 18:00
dll и делфи Pein95 Общие вопросы Delphi 5 26.12.2010 08:28
Выгружается FAR после досовских программ alexcoder Софт 4 18.08.2010 19:02