[OSRS-PROJ] delphi API Conversion for proj.dll

bornkilled bornkilled at 21cn.com
Thu Jul 11 04:23:09 EDT 2002


hi, I want to make a delphi API Conversion for  proj.dll( I have compile it by VC6)

I wrote pas  in this way
unit proj_dll;

interface
uses
  windows;
const
  ProjDll='proj.dll';
type
  projPJ=Pointer;
  XY=record
    X:Double;
    Y:Double;
  end;
  UV=XY;
  LP=XY;
  function pj_init(argc:DWord;argv:PLPSTR):projPJ;stdcall;
  function pj_init_plus(definition:PChar):projPJ;stdcall;
  procedure pj_free(var P:projPJ);stdcall;
  procedure pj_deallocate_grids();stdcall;
  function pj_errno():DWORD;stdcall;
  function pj_fwd(aLP:LP;P:projPJ):XY;stdcall;
  function pj_inv(aXY:LP;P:projPJ):LP;stdcall;
  function pj_is_latlong(P:projPJ):DWORD;stdcall;
implementation
  function pj_init;external ProjDll Name 'pj_init';
  function pj_init_plus;external ProjDll Name 'pj_init_plus';
  procedure pj_free;external ProjDll Name 'pj_free';
  procedure pj_deallocate_grids();external ProjDll Name 'pj_deallocate_grids';
  function pj_errno;external ProjDll Name 'pj_errno';
  function pj_fwd;external ProjDll Name 'pj_fwd';
  function pj_inv;external ProjDll Name 'pj_inv';
  function pj_is_latlong ;external ProjDll Name 'pj_is_latlong';

But I meet some trouble :

1:pj_errno make an exception "Access Violation" in any case;
 
2:I can not find the excatly definition of PJ*,so i can not use pj_free(),that will cause a memory leak .

3:pj_fwd will raise stack overflow in the case of the code below:
procedure TForm2.Button1Click(Sender: TObject);
var
  P:projPJ;
  errorno:Integer;
  temp:XY;
  temp1:XY;
  nu:Cardinal;
  i:Integer;
begin
  P:=pj_init_plus(PChar(' +proj=utm +zone=11 +ellps=WGS84));
  i:=pj_errno;
  temp.X:=0;temp.Y:=0;
  nu:=GetTickCount;
  for i:=0 to 50000 do
    temp1:=pj_inv(temp,P);
  ShowMessage(IntToStr(GetTickCount-nu));
end;


if i<40000 there is no problem


Bornkilled at 21cn.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.maptools.org/pipermail/proj/attachments/20020711/73542942/attachment.html


More information about the Proj mailing list