⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mitab_dyn.pas

📁 mitab,读取MapInfo的地图文件
💻 PAS
📖 第 1 页 / 共 3 页
字号:
  mitab_c_get_collection_multipoint_ref: Tmitab_c_get_collection_multipoint_ref;
  mitab_c_set_collection_region: Tmitab_c_set_collection_region;
  mitab_c_set_collection_polyline: Tmitab_c_set_collection_polyline;
  mitab_c_set_collection_multipoint: Tmitab_c_set_collection_multipoint;
  mitab_c_get_projection_info: Tmitab_c_get_projection_info;
  mitab_c_set_projection_info: Tmitab_c_set_projection_info;
  mitab_c_get_datum_info: Tmitab_c_get_datum_info;
  mitab_c_set_datum_info: Tmitab_c_set_datum_info;
  mitab_c_get_affine_params: Tmitab_c_get_affine_params;
  mitab_c_set_affine_params: Tmitab_c_set_affine_params;
  mitab_c_is_field_indexed: Tmitab_c_is_field_indexed;
  mitab_c_is_field_unique: Tmitab_c_is_field_unique;
  mitab_c_set_quick_spatial_index_mode: Tmitab_c_set_quick_spatial_index_mode;

procedure MITAB_load;
function MITAB_LibOK: boolean;


implementation

uses
  SysUtils,
  {$IFDEF MSwindows}
  Windows;
  {$ENDIF}
  {$IFDEF LINUX}
  Libc;
  {$ENDIF}

var
{$IFDEF MSwindows}
  MITABDLL_Handle: THandle;
{$ENDIF}
{$IFDEF LINUX}
  MITABDLL_Handle: Pointer;
{$ENDIF}

function GenericGetProcAddress(lpProcName: PChar; length: integer): Pointer;
begin
  {$IFDEF MSwindows}
  result:= GetProcAddress(MITABDLL_Handle,PAnsiChar('_'+lpProcName+'@'+inttostr(length)));
  {$ENDIF}
  {$IFDEF LINUX}
  result:= dlsym(MITABDLL_Handle, lpProcName);
  {$ENDIF}
end;

function MITAB_LibOK: boolean;
begin
  result:= (MITAB_LoadErr=0);
end;

// To test if a function was found in the DLL before using it, do like this:
// if @mitab_c_create<>nil then mitab_c_create(.....)

procedure MITAB_load;
begin
  {$IFDEF MSwindows}
  MITABDLL_Handle:= LoadLibrary(pchar(LibPath));
  {$ENDIF}
  {$IFDEF LINUX}
  MITABDLL_Handle:= dlopen(Pchar(LibPath), RTLD_LAZY);
  {$ENDIF}

  if Pointer(MITABDLL_Handle)<>nil then
  begin
    @mitab_c_getlibversion:= GenericGetProcAddress('mitab_c_getlibversion',0);
    if @mitab_c_getlibversion<>nil then  // does the function exist?
    begin
      if mitab_c_getlibversion=Libversion then  // does it return the correct number?
      begin
        MITAB_LoadErr:= 0;
        @mitab_c_add_field:=                     GenericGetProcAddress('mitab_c_add_field',28);
        @mitab_c_close:=                         GenericGetProcAddress('mitab_c_close',4);
        @mitab_c_create:=                        GenericGetProcAddress('mitab_c_create',44);
        @mitab_c_create_feature:=                GenericGetProcAddress('mitab_c_create_feature',8);
        @mitab_c_destroy_feature:=               GenericGetProcAddress('mitab_c_destroy_feature',4);
        @mitab_c_getlasterrormsg:=               GenericGetProcAddress('mitab_c_getlasterrormsg',0);
        @mitab_c_getlasterrormsg_vb:=            GenericGetProcAddress('mitab_c_getlasterrormsg_vb',8);
        @mitab_c_getlasterrorno:=                GenericGetProcAddress('mitab_c_getlasterrorno',0);
        @mitab_c_get_brush_bgcolor:=             GenericGetProcAddress('mitab_c_get_brush_bgcolor',4);
        @mitab_c_get_brush_fgcolor:=             GenericGetProcAddress('mitab_c_get_brush_fgcolor',4);
        @mitab_c_get_brush_pattern:=             GenericGetProcAddress('mitab_c_get_brush_pattern',4);
        @mitab_c_get_brush_transparent:=         GenericGetProcAddress('mitab_c_get_brush_transparent',4);
        @mitab_c_get_extended_mif_coordsys:=     GenericGetProcAddress('mitab_c_get_extended_mif_coordsys',4);
        @mitab_c_get_feature_count:=             GenericGetProcAddress('mitab_c_get_feature_count',4);
        @mitab_c_get_field_as_double:=           GenericGetProcAddress('mitab_c_get_field_as_double',8);
        @mitab_c_get_field_as_string:=           GenericGetProcAddress('mitab_c_get_field_as_string',8);
        @mitab_c_get_field_as_string_vb:=        GenericGetProcAddress('mitab_c_get_field_as_string_vb',16);
        @mitab_c_get_field_count:=               GenericGetProcAddress('mitab_c_get_field_count',4);
        @mitab_c_get_field_name:=                GenericGetProcAddress('mitab_c_get_field_name',8);
        @mitab_c_get_field_name_vb:=             GenericGetProcAddress('mitab_c_get_field_name_vb',16);
        @mitab_c_get_field_precision:=           GenericGetProcAddress('mitab_c_get_field_precision',8);
        @mitab_c_get_field_type:=                GenericGetProcAddress('mitab_c_get_field_type',8);
        @mitab_c_get_field_width:=               GenericGetProcAddress('mitab_c_get_field_width',8);
        @mitab_c_get_font:=                      GenericGetProcAddress('mitab_c_get_font',4);
        @mitab_c_get_font_vb:=                   GenericGetProcAddress('mitab_c_get_font_vb',12);
        @mitab_c_get_mif_coordsys:=              GenericGetProcAddress('mitab_c_get_mif_coordsys',4);
        @mitab_c_get_mif_coordsys_vb:=           GenericGetProcAddress('mitab_c_get_mif_coordsys_vb',12);
        @mitab_c_get_parts:=                     GenericGetProcAddress('mitab_c_get_parts',4);
        @mitab_c_get_pen_color:=                 GenericGetProcAddress('mitab_c_get_pen_color',4);
        @mitab_c_get_pen_pattern:=               GenericGetProcAddress('mitab_c_get_pen_pattern',4);
        @mitab_c_get_pen_width:=                 GenericGetProcAddress('mitab_c_get_pen_width',4);
        @mitab_c_get_projinfo:=                  GenericGetProcAddress('mitab_c_get_projinfo',4);
        @mitab_c_get_symbol_color:=              GenericGetProcAddress('mitab_c_get_symbol_color',4);
        @mitab_c_get_symbol_no:=                 GenericGetProcAddress('mitab_c_get_symbol_no',4);
        @mitab_c_get_symbol_size:=               GenericGetProcAddress('mitab_c_get_symbol_size',4);
        @mitab_c_get_text:=                      GenericGetProcAddress('mitab_c_get_text',4);
        @mitab_c_get_text_angle:=                GenericGetProcAddress('mitab_c_get_text_angle',4);
        @mitab_c_get_text_bgcolor:=              GenericGetProcAddress('mitab_c_get_text_bgcolor',4);
        @mitab_c_get_text_fgcolor:=              GenericGetProcAddress('mitab_c_get_text_fgcolor',4);
        @mitab_c_get_text_height:=               GenericGetProcAddress('mitab_c_get_text_height',4);
        @mitab_c_get_text_justification:=        GenericGetProcAddress('mitab_c_get_text_justification',4);
        @mitab_c_get_text_linetype:=             GenericGetProcAddress('mitab_c_get_text_linetype',4);
        @mitab_c_get_text_spacing:=              GenericGetProcAddress('mitab_c_get_text_spacing',4);
        @mitab_c_get_text_vb:=                   GenericGetProcAddress('mitab_c_get_text_vb',12);
        @mitab_c_get_text_width:=                GenericGetProcAddress('mitab_c_get_text_width',4);
        @mitab_c_get_type:=                      GenericGetProcAddress('mitab_c_get_type',4);
        @mitab_c_get_vertex_count:=              GenericGetProcAddress('mitab_c_get_vertex_count',8);
        @mitab_c_get_vertex_x:=                  GenericGetProcAddress('mitab_c_get_vertex_x',12);
        @mitab_c_get_vertex_y:=                  GenericGetProcAddress('mitab_c_get_vertex_y',12);
        @mitab_c_is_interior_ring:=              GenericGetProcAddress('mitab_c_is_interior_ring',8);
        @mitab_c_load_coordsys_table:=           GenericGetProcAddress('mitab_c_load_coordsys_table',4);
        @mitab_c_next_feature_id:=               GenericGetProcAddress('mitab_c_next_feature_id',8);
        @mitab_c_open:=                          GenericGetProcAddress('mitab_c_open',4);
        @mitab_c_read_feature:=                  GenericGetProcAddress('mitab_c_read_feature',8);
        @mitab_c_set_arc:=                       GenericGetProcAddress('mitab_c_set_arc',52);
        @mitab_c_set_brush:=                     GenericGetProcAddress('mitab_c_set_brush',20);
        @mitab_c_set_field:=                     GenericGetProcAddress('mitab_c_set_field',12);
        @mitab_c_set_font:=                      GenericGetProcAddress('mitab_c_set_font',8);
        @mitab_c_set_pen:=                       GenericGetProcAddress('mitab_c_set_pen',16);
        @mitab_c_set_points:=                    GenericGetProcAddress('mitab_c_set_points',20);
        @mitab_c_set_projinfo:=                  GenericGetProcAddress('mitab_c_set_projinfo',8);
        @mitab_c_set_symbol:=                    GenericGetProcAddress('mitab_c_set_symbol',16);
        @mitab_c_set_text:=                      GenericGetProcAddress('mitab_c_set_text',8);
        @mitab_c_set_text_display:=              GenericGetProcAddress('mitab_c_set_text_display',48);
        @mitab_c_write_feature:=                 GenericGetProcAddress('mitab_c_write_feature',8);
        @mitab_c_get_collection_region_ref:=     GenericGetProcAddress('mitab_c_get_collection_region_ref',4);
        @mitab_c_get_collection_polyline_ref:=   GenericGetProcAddress('mitab_c_get_collection_polyline_ref',4);
        @mitab_c_get_collection_multipoint_ref:= GenericGetProcAddress('mitab_c_get_collection_multipoint_ref',4);
        @mitab_c_set_collection_region:=         GenericGetProcAddress('mitab_c_set_collection_region',12);
        @mitab_c_set_collection_polyline:=       GenericGetProcAddress('mitab_c_set_collection_polyline',12);
        @mitab_c_set_collection_multipoint:=     GenericGetProcAddress('mitab_c_set_collection_multipoint',12);
        @mitab_c_get_projection_info:=           GenericGetProcAddress('mitab_c_get_projection_info',20);
        @mitab_c_set_projection_info:=           GenericGetProcAddress('mitab_c_set_projection_info',20);
        @mitab_c_get_datum_info:=                GenericGetProcAddress('mitab_c_get_datum_info',20);
        @mitab_c_set_datum_info:=                GenericGetProcAddress('mitab_c_set_datum_info',32);
        @mitab_c_get_affine_params:=             GenericGetProcAddress('mitab_c_get_affine_params',12);
        @mitab_c_set_affine_params:=             GenericGetProcAddress('mitab_c_set_affine_params',12);
        @mitab_c_is_field_indexed:=              GenericGetProcAddress('mitab_c_is_field_indexed',8);
        @mitab_c_is_field_unique:=               GenericGetProcAddress('mitab_c_is_field_unique',8);
        @mitab_c_set_quick_spatial_index_mode:=  GenericGetProcAddress('mitab_c_set_quick_spatial_index_mode',4);
      end else MITAB_LoadErr:= -4;
    end else MITAB_LoadErr:= -3;
  end else MITAB_LoadErr:= -2;
end;

initialization
  MITAB_LoadErr:= -1;
  {$IFDEF MSWINDOWS}
  LibPath:= 'mitab.dll';
  {$ENDIF}
  {$IFDEF LINUX}
  LibPath:= 'libmitab.so.1.0.1';
  {$ENDIF}

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -