IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

 
 Ответить  Открыть новую тему 
> Динамическая загрузка Dll, Ошибка при вызове FreeLibrary
hiv
сообщение 2.11.2005 15:29
Сообщение #1


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Возникает постоянная ошибка при вызове функции динамической выгрузки DLL - FreeLibrary.
Прикрепленное изображение
И еще интересный факт - при прописывании в uses модуля ShareMem, при выходе из программы тоже ругается... (правда не так) Может у меня несовместимость Delphi6 и Windows XP SP1?

Вот код DLL-ки:
library mvts218;
uses
SysUtils,
Classes,
JclStrings;

{$R *.res}

function Identificator:shortstring;
begin
Result:='MERA VoIP Transit Softswitch';
end;

procedure GetNames(var RNames :AnsiString);
var Names:TStrings;
begin
Names := TStringList.Create;
try
Names.Add('DATE');
Names.Add('HOST');
Names.Add('SRC-NUMBER-IN');
Names.Add('DST-NUMBER-IN');
Names.Add('SRC-NUMBER-OUT');
Names.Add('DST-NUMBER-OUT');
Names.Add('SRC-NUMBER-BILL');
Names.Add('DST-NUMBER-BILL');
Names.Add('SRC-IP');
Names.Add('DST-IP');
Names.Add('SRC-USER');
Names.Add('DST-USER');
Names.Add('ELAPSED-TIME');
Names.Add('SETUP-TIME');
Names.Add('CONNECT-TIME');
Names.Add('DISCONNECT-TIME');
Names.Add('DISCONNECT-CODE-LOCAL');
Names.Add('DISCONNECT-CODE-Q931');
Names.Add('SRC-BYTES-IN');
Names.Add('DST-BYTES-IN');
Names.Add('SRC-BYTES-OUT');
Names.Add('DST-BYTES-OUT');
Names.Add('QOS');
Names.Add('SRC-CODEC');
Names.Add('DST-CODEC');
Names.Add('CALLID');
Names.Add('CONFID');
Names.Add('LAR-FAULT-REASON');
Names.Add('PROXY-MODE');
Names.Add('ROUTE-RETRIES');
RNames:=Names.Text;
finally
Names.Free;
end;
end;

function ConvertMeraDate(sd:shortstring):shortstring;
var s,d,m,y,t :string;
i :integer;
begin
s:=Trim(sd);
i:=pos(' ',s);
m:=copy(s,1,i-1);
delete(s,1,i);
if m='Jan' then m:='01'
else if m='Feb' then m:='02'
else if m='Mar' then m:='03'
else if m='Apr' then m:='04'
else if m='May' then m:='05'
else if m='Jun' then m:='06'
else if m='Jul' then m:='07'
else if m='Aug' then m:='08'
else if m='Sep' then m:='09'
else if m='Oct' then m:='10'
else if m='Nov' then m:='11'
else if m='Dec' then m:='12'
else m:='00';

i:=pos(' ',s);
d:=copy(s,1,i-1);
delete(s,1,i);

i:=pos(' ',s);
t:=copy(s,1,i-1);
delete(s,1,i);

y:=s;
Result:=y+'-'+m+'-'+d+' '+t;
end;

function GetRecord(p:pointer; var Data :AnsiString):pointer;
var s :string;
c,ce,pe,cr :PChar;
Buff,value :string;
i,jd,ju :integer;
D :TstringList;
begin
Result:=nil;
if p=nil then exit;

c:=p;
pe:=StrEnd(p); // конец буфера
Result:=pe;
D := TStringList.Create;
try
// ищем начало записи
while (c[0] in [#0, #10, #13]) and (c<pe) do inc©;
if c>=pe then exit;
// ищем коней записи
ce:=c;
while not(ce[0] in [#0, #10, #13]) and (ce<pe) do inc(ce);
cr:=ce;
// ищем начало следующей
while (cr[0] in [#0, #10, #13]) and (cr<pe) do inc(cr);
Result:=cr;
// Buff - содержит одну запись
SetString(Buff,c,ce-c);

// чтение даты
jd:=pos(' ',Buff)+1;
ju:=pos(',',Buff);
value:=copy(Buff,jd,ju-jd);
s:=ConvertMeraDate(value); // конвертация формата даты
SetString(Buff,c+ju,ce-c-ju); // то же, только без даты в начале

// разбиваем на строки остальные данные
StrToStrings(Buff,',',D,false);
D.Add('DATE='+s); // добавляем дату

for i:=0 to D.Count-1 do
D.Strings[i]:=UPPERCASE(trim(D.Strings[i]));

Data:=D.Text; // выдача результата

finally
D.Free;
end;
end;

exports Identificator, GetNames, GetRecord;

begin

end.

DRKB читал... все вроде в рамках правил... sad.gif


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
hiv
сообщение 7.11.2005 12:09
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 660
Пол: Мужской
Реальное имя: Михаил

Репутация: -  11  +


Перешел на Delphi7 build 4.453 - и добавил вновь (раньше тоже добавлял) uses ShareMem в код DLL-ки и вызывающей программы - и все заработало smile.gif

ЗЫ: Нужно прописывать uses ShareMem также и в файл проекта и везде первым!!!

Сообщение отредактировано: hiv - 8.11.2005 12:45


--------------------
Никогда не жадничай. Свои проблемы с любовью дари людям!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.06.2025 17:12
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"