<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<META content="MSHTML 5.50.4916.2300" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV><FONT face=Arial size=2>hi, I want to make a delphi API Conversion 
for&nbsp; proj.dll( I have&nbsp;compile it by VC6)</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>
<DIV><FONT face=Arial size=2>I wrote&nbsp;pas&nbsp;&nbsp;in this 
way</FONT></DIV>
<DIV><FONT face=Arial size=2>unit proj_dll;</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>interface<BR>uses<BR>&nbsp; 
windows;<BR>const<BR>&nbsp; ProjDll='proj.dll';<BR>type<BR>&nbsp; 
projPJ=Pointer;<BR>&nbsp; XY=record<BR>&nbsp;&nbsp;&nbsp; 
X:Double;<BR>&nbsp;&nbsp;&nbsp; Y:Double;<BR>&nbsp; end;<BR>&nbsp; 
UV=XY;<BR>&nbsp; LP=XY;</FONT></DIV>
<DIV><FONT face=Arial size=2>&nbsp; function 
pj_init(argc:DWord;argv:PLPSTR):projPJ;stdcall;<BR>&nbsp; function 
pj_init_plus(definition:PChar):projPJ;stdcall;<BR>&nbsp; procedure pj_free(var 
P:projPJ);stdcall;</FONT></DIV>
<DIV><FONT face=Arial size=2>&nbsp; procedure 
pj_deallocate_grids();stdcall;<BR>&nbsp; function 
pj_errno():DWORD;stdcall;</FONT></DIV>
<DIV><FONT face=Arial size=2>&nbsp; function 
pj_fwd(aLP:LP;P:projPJ):XY;stdcall;<BR>&nbsp; function 
pj_inv(aXY:LP;P:projPJ):LP;stdcall;<BR>&nbsp; function 
pj_is_latlong(P:projPJ):DWORD;stdcall;<BR>implementation<BR>&nbsp; function 
pj_init;external ProjDll Name 'pj_init';<BR>&nbsp; function 
pj_init_plus;external ProjDll Name 'pj_init_plus';<BR>&nbsp; procedure 
pj_free;external ProjDll Name 'pj_free';<BR>&nbsp; procedure 
pj_deallocate_grids();external ProjDll Name 'pj_deallocate_grids';<BR>&nbsp; 
function pj_errno;external ProjDll Name 'pj_errno';<BR>&nbsp; function 
pj_fwd;external ProjDll Name 'pj_fwd';<BR>&nbsp; function pj_inv;external 
ProjDll Name 'pj_inv';<BR>&nbsp; function pj_is_latlong ;external ProjDll Name 
'pj_is_latlong';</FONT></DIV>
<DIV><FONT face=Arial size=2>&nbsp;</DIV></FONT></FONT></DIV>
<DIV><FONT face=Arial size=2>But&nbsp;I meet some trouble</FONT>&nbsp;<FONT 
face=Arial size=2>:</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>1:pj_errno&nbsp;make an exception "Access 
Violation" in any case;</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>2:I can not find the excatly definition of PJ*,so i 
can not use pj_free(),that will cause a memory leak .</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>3:pj_fwd will raise stack overflow in the case of 
the code below:</FONT></DIV>
<DIV><FONT face=Arial size=2>procedure TForm2.Button1Click(Sender: 
TObject);<BR>var<BR>&nbsp; P:projPJ;<BR>&nbsp; errorno:Integer;<BR>&nbsp; 
temp:XY;<BR>&nbsp; temp1:XY;<BR>&nbsp; nu:Cardinal;<BR>&nbsp; 
i:Integer;<BR>begin<BR>&nbsp; P:=pj_init_plus(PChar(' +proj=utm +zone=11 
+ellps=WGS84));</FONT></DIV>
<DIV><FONT face=Arial size=2>&nbsp; i:=pj_errno;<BR>&nbsp; 
temp.X:=0;temp.Y:=0;<BR>&nbsp; nu:=GetTickCount;<BR>&nbsp; for i:=0 
to&nbsp;50000 do<BR>&nbsp;&nbsp;&nbsp; temp1:=pj_inv(temp,P);<BR>&nbsp; 
ShowMessage(IntToStr(GetTickCount-nu));</FONT></DIV>
<DIV><FONT face=Arial size=2>end;</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2>if i&lt;40000&nbsp;there is no problem</FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<DIV><FONT face=Arial size=2><A 
href="mailto:Bornkilled@21cn.com">Bornkilled@21cn.com</A></FONT></DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV></BODY></HTML>