Текущий архив: 2005.02.06;
Скачать: CL | DM;
Вниз
Ошибка при вызове функции из DLL Найти похожие ветки
← →
Sphinxx (2005-01-24 01:08) [0]Вот не могу понять, почему при повторном вызове функции, находящейся в DLL, из основной программы вылетает ошибка "access violation..."?
Вот что у меня в DLL"ке (функция FindIt абсолютно отлажена, так что ошибка не там):
function GetProps(base,srch_text:string): ansistring;stdcall;
var db:string;
i:integer;
begin
result:="";
db := lowercase(".\"+base+".xml");
if fileexists(db) then
begin
if inited then begin
with DataSet do
begin
Active := false;
FileName := db;
active := true;
if FindIt(DataSet,[DataSet.FieldByName("Name").Index],false,true,srch_text) then
for i:=0 to dataset.FieldCount-1 do
result := result + dataset.Fields[i].AsString + "^";
close;
end;
end
else showmessage("База не инициализирована!")
end
else result:="-1";
end;
← →
palva © (2005-01-24 01:20) [1]Строка result создается в dll (одним менеджером памяти), а освобождатеся в основной программе при вторичном присваивании другой строки (в основной программе другой менеджер памяти). Если основная программа написана на Delphi той же версии, то, говорят, помогает uses ShareMem. Но по-моему это тоже извращение.
← →
Sphinxx (2005-01-24 01:26) [2]вот кстати единственная строчка, которая эту функцию использует в основной программе (написана она на той же самой дельфе):
showmessage(getprops("Dell",editbox1.Text));
← →
Sphinxx (2005-01-24 01:29) [3]Так что в данном случае сделать-то можно?
← →
Sphinxx (2005-01-24 01:57) [4]ок, я разобрался, спасибо...
вот что скажу вдогонку тем, у кого возникает подобная проблема:
Есть такой модуль FastShareMem, он в отличие от ShareMem не требует библиотеки borlndmm.dll, т.е. ее не придется таскать вместе с исполняемым файлом, работает быстрее (как заверяет автор).
← →
Digitman © (2005-01-24 09:05) [5]
> Sphinxx
просто собери оба проекта с опцией Build With Run-Time Packages, и не нужны будут никакие "шаромемы" .. правда, "таскать" придется bpl-модули
Страницы: 1 вся ветка
Текущий архив: 2005.02.06;
Скачать: CL | DM;
Память: 0.48 MB
Время: 0.057 c