<html>
<br>
I use proj from both VC++ and VB. I don't know Delphi very well, but I
have a few suggestions:<br><br>
1. pj_errno is a variable, not a function. Calling it as a function will
cause you to crash with an access violation. <br><br>
2. There is no need to know the contents of PJ*, you should use it simply
as an opaque pointer. Then there is no problem calling PJ_free. 
<br><br>
3. I can't really comment on the stack overflow in the situation you
show. All I can say is that I have not seen this problem myself.
<br><br>
BTW, You don't need definitions of UV and LP for anything.<br><br>
At 04:23 PM 11/07/2002 +0800, bornkilled wrote:<br>
<blockquote type=cite class=cite cite><font face="arial" size=2>hi, I
want to make a delphi API Conversion for  proj.dll( I have compile
it by VC6)</font><br>
 <br>
<font face="arial" size=2>I wrote pas  in this way<br>
unit proj_dll;<br>
 <br>
interface<br>
uses<br>
  windows;<br>
const<br>
  ProjDll='proj.dll';<br>
type<br>
  projPJ=Pointer;<br>
  XY=record<br>
    X:Double;<br>
    Y:Double;<br>
  end;<br>
  UV=XY;<br>
  LP=XY;<br>
  function pj_init(argc:DWord;argv:PLPSTR):projPJ;stdcall;<br>
  function pj_init_plus(definition:PChar):projPJ;stdcall;<br>
  procedure pj_free(var P:projPJ);stdcall;<br>
  procedure pj_deallocate_grids();stdcall;<br>
  function pj_errno():DWORD;stdcall;<br>
  function pj_fwd(aLP:LP;P:projPJ):XY;stdcall;<br>
  function pj_inv(aXY:LP;P:projPJ):LP;stdcall;<br>
  function pj_is_latlong(P:projPJ):DWORD;stdcall;<br>
implementation<br>
  function pj_init;external ProjDll Name 'pj_init';<br>
  function pj_init_plus;external ProjDll Name 'pj_init_plus';<br>
  procedure pj_free;external ProjDll Name 'pj_free';<br>
  procedure pj_deallocate_grids();external ProjDll Name
'pj_deallocate_grids';<br>
  function pj_errno;external ProjDll Name 'pj_errno';<br>
  function pj_fwd;external ProjDll Name 'pj_fwd';<br>
  function pj_inv;external ProjDll Name 'pj_inv';<br>
  function pj_is_latlong ;external ProjDll Name
'pj_is_latlong';<br>
 <br>
But I meet some trouble</font> <font face="arial" size=2>:</font><br>
 <br>
<font face="arial" size=2>1:pj_errno make an exception "Access
Violation" in any case;</font><br>
 <br>
<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><br>
 <br>
<font face="arial" size=2>3:pj_fwd will raise stack overflow in the case
of the code below:</font><br>
<font face="arial" size=2>procedure TForm2.Button1Click(Sender:
TObject);<br>
var<br>
  P:projPJ;<br>
  errorno:Integer;<br>
  temp:XY;<br>
  temp1:XY;<br>
  nu:Cardinal;<br>
  i:Integer;<br>
begin<br>
  P:=pj_init_plus(PChar(' +proj=utm +zone=11
+ellps=WGS84));</font><br>
<font face="arial" size=2>  i:=pj_errno;<br>
  temp.X:=0;temp.Y:=0;<br>
  nu:=GetTickCount;<br>
  for i:=0 to 50000 do<br>
    temp1:=pj_inv(temp,P);<br>
  ShowMessage(IntToStr(GetTickCount-nu));</font><br>
<font face="arial" size=2>end;</font><br>
 <br>
 <br>
<font face="arial" size=2>if i<40000 there is no problem</font><br>
 <br>
 <br>
<font face="arial" size=2><a href="mailto:Bornkilled@21cn.com">Bornkilled@21cn.com</a></font><br>
 </blockquote>
<x-sigsep><p></x-sigsep>
________________________________________________________<br>
Mike
Schmidt                       
Systèmes Scientifiques SEPIA<br>
President                             
SEPIA Scientific Systems<br>
Tel:
450-358-2266                 
100 Richelieu, suite 2000     <br>
Fax:
450-358-2267                
Saint-Jean-sur-Richelieu<br>
e-mail: mike@sepia.com        Québec,
Canada J3B 6X3<br>
<a href="http://www.sepia.com            /" eudora="autourl">http://www.sepia.com           
</a>
<a href="http://www.intello.com/" eudora="autourl">http://www.intello.com</a>
<br><br>
**************************************************************************** <br>
This email message is for the sole use of the intended recipient(s)<br>
and may contain confidential and privileged information. <br>
Any unauthorized review, use, disclosure or distribution is prohibited.<br>
If you are not the intended recipient, please contact the sender by <br>
reply email and destroy all copies of the original message.<br>
To reply to our email administrator directly, select the following <br>
<<a href="mailto:postmaster@sepia.com" eudora="autourl"><font color="#0000FF"><u>mailto:postmaster@sepia.com</a></u></font>> <br>
**************************************************************************** </html>