📄 ezshpimport.pas
字号:
{$ELSE}
result := FDbf.FieldByName( Fieldname ).AsInteger;
{$ENDIF}
End;
Function TEzSHPDbfTable.IntegerGetN( FieldNo: integer ): Integer;
Begin
{$IFDEF USENATIVEDLL}
result := ezIntegergetN( FDBFHandle, FieldNo );
{$ELSE}
result := FDbf.Fields[FieldNo - 1].AsInteger;
{$ENDIF}
End;
Function TEzSHPDbfTable.LogicGet( Const FieldName: String ): Boolean;
Begin
{$IFDEF USENATIVEDLL}
result := ezLogicGet( FDBFHandle, pchar( FieldName ) );
{$ELSE}
result := FDbf.FieldByName( FieldName ).AsBoolean;
{$ENDIF}
End;
Function TEzSHPDbfTable.LogicGetN( FieldNo: integer ): Boolean;
Begin
{$IFDEF USENATIVEDLL}
result := ezLogicgetN( FDBFHandle, FieldNo );
{$ELSE}
result := FDbf.Fields[FieldNo - 1].AsBoolean;
{$ENDIF}
End;
procedure TEzSHPDbfTable.MemoSave( Const FieldName: String; stream: tstream );
Begin
{$IFDEF USENATIVEDLL}
MemoSaveN( ezFieldNo( FDBFHandle, pchar( FieldName ) ), stream );
{$ELSE}
MemoSaveN( FDbf.FieldByname( FieldName ).Index + 1, Buf, cb );
{$ENDIF}
End;
procedure TEzSHPDbfTable.MemoSaveN( FieldNo: integer; stream: tstream );
{$IFDEF USENATIVEDLL}
Var
BlobLen: Integer;
Memory: PChar;
{$ENDIF}
Begin
{$IFDEF USENATIVEDLL}
BlobLen := Stream.Size;
GetMem( Memory, BlobLen + 1 );
Try
Memory[BlobLen] := #0;
Stream.Read( Memory[0], BlobLen );
ezMemoSaveN( FDBFHandle, FieldNo, Memory, BlobLen );
Finally
FreeMem( Memory, BlobLen + 1 );
End;
{$ELSE}
Stream.Position:= 0;
(FDbf.Fields[FieldNo-1] as TBlobField).SaveToStream( Stream );
{$ENDIF}
End;
Function TEzSHPDbfTable.MemoSize( Const FieldName: String ): Integer;
Begin
{$IFDEF USENATIVEDLL}
result := ezMemoSize( FDBFHandle, pchar( FieldName ) );
{$ELSE}
result := ( FDbf.FieldByName( FieldName ) As TBlobField ).BlobSize;
{$ENDIF}
End;
Function TEzSHPDbfTable.MemoSizeN( FieldNo: integer ): Integer;
Begin
{$IFDEF USENATIVEDLL}
result := ezMemoSizeN( FDBFHandle, FieldNo );
{$ELSE}
result := ( FDbf.Fields[FieldNo - 1] As TBlobField ).BlobSize;
{$ENDIF}
End;
Function TEzSHPDbfTable.RecordCount: Integer;
Begin
{$IFDEF USENATIVEDLL}
result := ezRecordCount( FDBFHandle );
{$ELSE}
result := FDbf.RecordCount;
{$ENDIF}
End;
Function TEzSHPDbfTable.StringGet( Const FieldName: String ): String;
Begin
{$IFDEF USENATIVEDLL}
result := ezStringGet( FDBFHandle, pchar( FieldName ) );
{$ELSE}
result := FDbf.FieldByname( FieldName ).AsString;
{$ENDIF}
End;
Function TEzSHPDbfTable.StringGetN( FieldNo: integer ): String;
Begin
{$IFDEF USENATIVEDLL}
result := ezStringGetN( FDBFHandle, FieldNo );
{$ELSE}
result := FDbf.Fields[FieldNo - 1].AsString;
{$ENDIF}
End;
Procedure TEzSHPDbfTable.DatePut( Const FieldName: String; value: TDateTime );
Begin
{$IFDEF USENATIVEDLL}
ezFieldPut( FDBFHandle, pchar( FieldName ), PChar(FormatDateTime('yyyymmdd',value ) ) );
{$ELSE}
FDbf.FieldByName( FieldName ).AsDateTime := value;
{$ENDIF}
End;
Procedure TEzSHPDbfTable.DatePutN( FieldNo: integer; value: TDateTime );
Begin
{$IFDEF USENATIVEDLL}
ezFieldPutN( FDBFHandle, FieldNo, PChar( FormatDateTime('yyyymmdd',value ) ) );
{$ELSE}
FDbf.Fields[FieldNo - 1].AsDateTime := value;
{$ENDIF}
End;
Procedure TEzSHPDbfTable.Delete;
Begin
{$IFDEF USENATIVEDLL}
ezDelete( FDBFHandle );
{$ELSE}
FDbf.Delete
{$ENDIF}
End;
Procedure TEzSHPDbfTable.Edit;
Begin
{$IFDEF USENATIVEDLL}
ezEdit( FDBFHandle );
{$ELSE}
FDbf.Edit;
{$ENDIF}
End;
Procedure TEzSHPDbfTable.FieldPut( Const FieldName, Value: String );
Begin
{$IFDEF USENATIVEDLL}
ezFieldPut( FDBFHandle, pchar( FieldName ), pchar( Value ) );
{$ELSE}
FDbf.FieldByName( FieldName ).AsString := Value;
{$ENDIF}
End;
Procedure TEzSHPDbfTable.FieldPutN( FieldNo: integer; Const Value: String );
Begin
{$IFDEF USENATIVEDLL}
ezFieldPutN( FDBFHandle, FieldNo, pchar( Value ) );
{$ELSE}
FDbf.Fields[Fieldno - 1].Asstring := value;
{$ENDIF}
End;
Procedure TEzSHPDbfTable.First;
Begin
{$IFDEF USENATIVEDLL}
ezFirst( FDBFHandle );
{$ELSE}
FDbf.First;
{$ENDIF}
End;
Procedure TEzSHPDbfTable.FloatPut( Const FieldName: String; Const Value: Double );
Begin
{$IFDEF USENATIVEDLL}
ezFloatPut( FDBFHandle, pchar( FieldName ), Value );
{$ELSE}
FDbf.Fieldbyname( Fieldname ).AsFloat := value;
{$ENDIF}
End;
Procedure TEzSHPDbfTable.FloatPutN( FieldNo: integer; Const Value: Double );
Begin
{$IFDEF USENATIVEDLL}
ezFloatPutN( FDBFHandle, FieldNo, Value );
{$ELSE}
FDbf.Fields[FieldNo - 1].AsFloat := value;
{$ENDIF}
End;
Procedure TEzSHPDbfTable.FlushDB;
Begin
{$IFDEF USENATIVEDLL}
ezFlushDBF( FDBFHandle );
{$ELSE}
//FDbf.FlushBuffers;
{$ENDIF}
End;
Procedure TEzSHPDbfTable.Go( n: Integer );
Begin
{$IFDEF USENATIVEDLL}
ezGo( FDBFHandle, n );
{$ELSE}
FDbf.Recno:= n;
{$ENDIF}
End;
Procedure TEzSHPDbfTable.IndexOn( Const IName, tag, keyexp, forexp: String;
uniq: TEzIndexUnique; ascnd: TEzSortStatus );
Begin
{$IFDEF USENATIVEDLL}
SysUtils.DeleteFile( ChangeFileExt(IName,'.cdx') );
ezIndexOn( FDBFHandle, pchar( ChangeFileExt(IName,'.cdx') ), pchar( tag ),
pchar( keyexp ), pchar( forexp ), ord( uniq ), ord( ascnd ) );
{$ELSE}
// how to do ?
{$ENDIF}
End;
Procedure TEzSHPDbfTable.IntegerPut( Const FieldName: String; Value: Integer );
Begin
{$IFDEF USENATIVEDLL}
ezIntegerPut( FDBFHandle, pchar( FieldName ), Value );
{$ELSE}
FDbf.FieldByname( Fieldname ).Asinteger := value;
{$ENDIF}
End;
Procedure TEzSHPDbfTable.IntegerPutN( FieldNo: integer; Value: Integer );
Begin
{$IFDEF USENATIVEDLL}
ezIntegerPutN( FDBFHandle, FieldNo, value );
{$ELSE}
FDbf.Fields[Fieldno - 1].AsInteger := value;
{$ENDIF}
End;
Procedure TEzSHPDbfTable.Last;
Begin
{$IFDEF USENATIVEDLL}
ezLast( FDBFHandle );
{$ELSE}
FDbf.Last;
{$ENDIF}
End;
Procedure TEzSHPDbfTable.LogicPut( Const FieldName: String; value: boolean );
Begin
{$IFDEF USENATIVEDLL}
ezLogicPut( FDBFHandle, pchar( FieldName ), value );
{$ELSE}
FDbf.FieldByname( Fieldname ).asboolean := value;
{$ENDIF}
End;
Procedure TEzSHPDbfTable.LogicPutN( fieldno: integer; value: boolean );
Begin
{$IFDEF USENATIVEDLL}
ezLogicPutN( FDBFHandle, fieldno, value );
{$ELSE}
FDbf.fields[fieldno - 1].asboolean := value;
{$ENDIF}
End;
Procedure TEzSHPDbfTable.MemoLoad( Const FieldName: String; stream: tstream );
{$IFNDEF USENATIVEDLL}
Var
field: TField;
{$ENDIF}
Begin
{$IFDEF USENATIVEDLL}
MemoLoadN( ezFieldNo( FDBFHandle, pchar( FieldName ) ), Stream );
{$ELSE}
field := FDbf.FindField( Fieldname );
If field = Nil Then Exit;
MemoLoadN( field.index + 1, buf, cb );
{$ENDIF}
End;
Procedure TEzSHPDbfTable.MemoLoadN( fieldno: integer; stream: tstream );
Var
{$IFDEF USENATIVEDLL}
BlobLen: Integer;
Memory: PChar;
{$ELSE}
stream: TStream;
{$ENDIF}
Begin
{$IFDEF USENATIVEDLL}
BlobLen := MemoSizeN( FieldNo );
GetMem( Memory, BlobLen + 1 );
Try
//Memory[BlobLen] := #0;
ezMemoLoadN( FDBFHandle, fieldno, Memory, BlobLen );
Stream.Write( Memory[0], BlobLen );
Stream.Position := 0;
Finally
FreeMem( Memory, BlobLen + 1 );
End;
{$ELSE}
stream.seek( 0, 0 );
( FDbf.Fields[fieldno - 1] As TBlobfield ).SaveToStream( stream );
{$ENDIF}
End;
Procedure TEzSHPDbfTable.Next;
Begin
{$IFDEF USENATIVEDLL}
ezNext( FDBFHandle );
{$ELSE}
FDbf.Next;
{$ENDIF}
End;
Procedure TEzSHPDbfTable.Pack;
Begin
{$IFDEF USENATIVEDLL}
ezPack( FDBFHandle );
{$ELSE}
FDbf.PackTable;
{$ENDIF}
End;
Procedure TEzSHPDbfTable.Post;
Begin
{$IFDEF USENATIVEDLL}
ezPost( FDBFHandle );
{$ELSE}
FDbf.Post;
{$ENDIF}
End;
Procedure TEzSHPDbfTable.Prior;
Begin
{$IFDEF USENATIVEDLL}
ezPrior( FDBFHandle );
{$ELSE}
FDbf.Prior;
{$ENDIF}
End;
Procedure TEzSHPDbfTable.Recall;
Begin
{$IFDEF USENATIVEDLL}
ezRecall( FDBFHandle );
{$ELSE}
FDbf.Recall;
{$ENDIF}
End;
Procedure TEzSHPDbfTable.Refresh;
Begin
{$IFDEF USENATIVEDLL}
ezRefresh( FDBFHandle );
{$ELSE}
FDbf.Refresh;
{$ENDIF}
End;
Procedure TEzSHPDbfTable.Reindex;
Begin
{$IFDEF USENATIVEDLL}
ezReindex( FDBFHandle );
{$ELSE}
{$ENDIF}
End;
Procedure TEzSHPDbfTable.SetTagTo( Const TName: String );
Begin
{$IFDEF USENATIVEDLL}
ezSetTagTo( FDBFHandle, pchar( TName ) );
{$ELSE}
FDbf.IndexName:= TName;
{$ENDIF}
End;
Procedure TEzSHPDbfTable.SetUseDeleted( tf: boolean );
Begin
{$IFDEF USENATIVEDLL}
ezSetUseDeleted( FDBFHandle, tf );
{$ELSE}
FDbf.ShowDeleted:= tf;
{$ENDIF}
End;
Procedure TEzSHPDbfTable.StringPut( Const FieldName, value: String );
Begin
{$IFDEF USENATIVEDLL}
ezStringPut( FDBFHandle, pchar( FieldName ), pchar( value ) );
{$ELSE}
FDbf.FieldByname( fieldname ).Asstring := value;
{$ENDIF}
End;
Procedure TEzSHPDbfTable.StringPutN( fieldno: integer; Const value: String );
Begin
{$IFDEF USENATIVEDLL}
ezStringPutN( FDBFHandle, fieldno, pchar( value ) );
{$ELSE}
FDbf.Fields[Fieldno - 1].Asstring := value;
{$ENDIF}
End;
Procedure TEzSHPDbfTable.Zap;
Begin
{$IFDEF USENATIVEDLL}
ezzap( FDBFHandle );
{$ELSE}
FDbf.First;
while not FDbf.Eof do FDbf.Delete;
FDbf.PackTable;
{$ENDIF}
End;
{ SHPPopulateFieldList }
Procedure SHPPopulateFieldList( Const FromDbf: String; FieldList: TStringList );
Var
Dbf: TEzBaseTable;
I: Integer;
Begin
{ copy structure from file }
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -