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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.07.2010, 12:19   #1
nXs
Форумчанин
 
Регистрация: 26.02.2010
Сообщений: 126
По умолчанию Dll - проблема

Ребята, нужна помощь... Написал dll с функцией которая возвращает список процессов. Но если ее подключить(статически), при повторном обновлении списка, или закрытии формы вылазит EInvalidPointer. Подключаю ShareMem, ошибка при обновлении не вылазит... НО! При закрытии главной формы начала вылазить Invalid pointer operation! С чего бы? Модуль ShareMem подключал в dll и в форме которая ее использует(пробывал и в главной, не конает). Без вызова этой dll все пашет на ура...
Код:
function GetProcList(L:TListItems):integer;  stdcall;
var
  I: Integer;
  PC: WORD;
  ProcArr:TLpModuleInfoArray;
begin
  ProcArr := TLpModuleInfoArray(GetAllProcessesInfo);
  PC := 0;
  for i := Low(ProcArr) to High(ProcArr) do
  begin
  L.Add;
 L[L.Count-1].Caption:= ProcArr[i].ModuleName;
  L[L.Count-1].SubItems.Add(IntToStr(ProcArr[i].ModulePID));
  L[L.Count-1].SubItems.Add(IntToStr(ProcArr[i].ModuleInfo.SizeOfImage));
  Inc(PC);
  end;
Result:=PC;
ProcArr:=nil;
end;
функция вызова процедуры получения процессов(тоже в dll).

UPD:Что то у меня подозрения что это гребаный ShareMem(при запуске проги не из под среды, а просто из .ехе, вылазит runtime error 216, 217, один раз даже 204)...

Последний раз редактировалось nXs; 14.07.2010 в 12:28.
nXs вне форума Ответить с цитированием
Старый 14.07.2010, 14:44   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

function GetProcList(L:TListItems):integer; stdcall;

класс в основной программе и в DLL это ДВА РАЗНЫХ класса.

С передачей классов как и со строками очень много проблем но вот sharemem для их решения НЕТ. Вернее оно есть называется BPL (DLL специального вида для Delhi) + Duild with runtime package
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 16.07.2010, 14:53   #3
nXs
Форумчанин
 
Регистрация: 26.02.2010
Сообщений: 126
По умолчанию

Значит, отказался от sharemem. Главное окно теперь закрывается нормально, но окно процессов с TListView закрывается с EInvalidpointer, при первой загрузке данных в TListView полет нормальный, при их обновлении(см.. добавлении) все ок, но при его очистке или уничтожении EInvalidpointer.... Может кто чем помочь? Третий день бьюсь с этой проблемой...
nXs вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с DLL _-Re@l-_ Паскаль, Turbo Pascal, PascalABC.NET 3 09.06.2010 14:28
Проблема с DLL в borland c++ gon21 Общие вопросы C/C++ 3 28.07.2009 22:18
Проблема с DLL. profi Помощь студентам 5 06.01.2009 23:48
Проблема с dll( DM_bite Помощь студентам 10 31.07.2008 16:05
Проблема с путями к БД и *.dll honor БД в Delphi 5 25.01.2008 08:54