Article View: pl.comp.lang.delphi.bazy-danych
Article #556Problem z UDF na InterBase
From: Tomasz Kustra
Date: Wed, 12 May 1999 13:43
Date: Wed, 12 May 1999 13:43
61 lines
2750 bytes
2750 bytes
Napisałem w Delphi małego Dll'a z jedną funkcją, którą następnie
rejstruję jako EXTERNAL FUNCTION w bazie na InterBase.
Funkcja działa bez zarzutu w przypadku gdy wywołują ją po otwarciu bazy
danych i jeszcze kilka razy(....).
Po pewnym czasie wywala błąd i jedynym sposobem na dalszą pracę jest
zakończenie pracy z bazą i ponowne rozpoczęcie.
Cżęstotliwość występowania błędu jest stała tzn.:
- dla deklaracji:
DECLARE EXTERNAL FUNCTION ELGETNEXTSGN
CSTRING(80), CSTRING(80), INTEGER
RETURNS CSTRING(80) FREE_IT
ENTRY_POINT "ElUGetNextSgn" MODULE_NAME "eludf.dll"
błąd generowany jest przez serwer co 216 wywołań funkcji
- dla deklaracji:
DECLARE EXTERNAL FUNCTION ELGETNEXTSGN
CSTRING(256), CSTRING(256), INTEGER
RETURNS CSTRING(256) -1
ENTRY_POINT "ElUGetNextSgn" MODULE_NAME "eludf.dll"
błąd generowany co 213 wywołąń funkcji.
Sam kod funkcji ELGetNextSgn jest bardzo prosty:
function ElUGetNextSgn(OldSgn,SgnConst:PChar;var SgnLen:
integer):PChar;cdecl;export;
.......
function ElUGetNextSgn(OldSgn,SgnConst:PChar;var SgnLen: integer):PChar;
var
NewN,j: integer;
NewS: string;
begin
j:=Length(string(SgnConst));
if Length(string(OldSgn))=0 then
NewN:=1
else NewN:=StrToIntDef(Copy(string(OldSgn),j+1,SgnLen),0)+1;
NewS:=IntToStr(NewN);
j:=SgnLen-j;
while Length(NewS)<j do NewS:='0'+NewS;
NewS:=string(SgnConst)+NewS;
Result:=MakeOutStr(NewS);
end;
Funkcja MakeOutStr:
function MakeOutStr(Value: string):PChar;
var
j: integer;
begin
j:=Length(Value)+1;
Mem
Result:=AllocMem(j);
Move(PChar(Value)^,Result^,j);
end;
Czy ktoś spotkał się z podobnym problemem a jeżeli tak to czy można z niego
wybrnąć?
ps.
Poza tym zadziwiająca jest rególarnoiść występowania błędu (test
przeprowadzany kilkadziesiąt razy).
Tomasz Kustra
tom_kust@friko5.onet.pl
Technical Details
Message-ID:
<Zzf_2.12276$I1.235188@news.tpnet.pl>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!uw.edu.pl!lublin.pl!news.onet.pl!orion.cst.tpsa.pl!news.tpnet.pl!not-for-mailShow Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!mat.uni.torun.pl!uw.edu.pl!lublin.pl!news.onet.pl!orion.cst.tpsa.pl!news.tpnet.pl!not-for-mail From: "Tomasz Kustra" <tom_kust@friko5.onet.pl> Newsgroups: pl.comp.lang.delphi.bazy-danych Subject: Problem z UDF na InterBase Lines: 65 X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 5.00.2014.211 X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2014.211 Message-ID: <Zzf_2.12276$I1.235188@news.tpnet.pl> Date: Wed, 12 May 1999 15:43:17 +0200 NNTP-Posting-Host: 212.160.34.99 X-Complaints-To: abuse@tpsa.pl X-Trace: news.tpnet.pl 926516601 212.160.34.99 (Wed, 12 May 1999 15:43:21 MET DST) NNTP-Posting-Date: Wed, 12 May 1999 15:43:21 MET DST MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit