📄 jvuiblib.pas
字号:
function ArrayLookupBounds(var DBHandle: IscDbHandle; var TransHandle: IscTrHandle;
const RelationName, FieldName: String): TArrayDesc;
procedure ArrayGetSlice(var DBHandle: IscDbHandle; var TransHandle: IscTrHandle;
ArrayId: TISCQuad; var desc: TArrayDesc; DestArray: PPointer; var SliceLength: Integer);
procedure ArrayPutSlice(var DBHandle: IscDbHandle; var TransHandle: IscTrHandle;
var ArrayId: TISCQuad; var desc: TArrayDesc; DestArray: PPointer;
var SliceLength: Integer);
procedure ServiceAttach(const ServiceName: string; var SvcHandle: IscSvcHandle; const Spb: string);
procedure ServiceDetach(var SvcHandle: IscSvcHandle);
procedure ServiceQuery(var SvcHandle: IscSvcHandle; const SendSpb, RequestSpb: string; var Buffer: string);
procedure ServiceStart(var SvcHandle: IscSvcHandle; const Spb: string);
function ErrSqlcode: ISCLong;
function ErrInterprete: String;
function ErrSQLInterprete(SQLCODE: Smallint): String;
procedure BlobOpen(var DBHandle: IscDbHandle; var TraHandle: IscTrHandle; var BlobHandle: IscBlobHandle; BlobId: TISCQuad; BPB: string = '');
function BlobGetSegment(var BlobHandle: IscBlobHandle; out length: Word; BufferLength: Cardinal; Buffer: PChar): boolean;
procedure BlobClose(var BlobHandle: IscBlobHandle);
procedure BlobInfo(var BlobHandle: IscBlobHandle; out NumSegments, MaxSegment, TotalLength: Cardinal; out btype : byte);
procedure BlobSize(var BlobHandle: IscBlobHandle; out Size: Cardinal);
procedure BlobMaxSegment(var BlobHandle: IscBlobHandle; out Size: Cardinal);
procedure BlobDefaultDesc(var Desc: TBlobDesc; const RelationName, FieldName: string);
procedure BlobSaveToStream(var BlobHandle: IscBlobHandle; Stream: TStream);
function BlobReadString(var BlobHandle: IscBlobHandle): string; overload;
procedure BlobReadString(var BlobHandle: IscBlobHandle; var Str: String); overload;
procedure BlobReadVariant(var BlobHandle: IscBlobHandle; var Value: Variant);
// you must free memory allocated by this method !!
procedure BlobReadBuffer(var BlobHandle: IscBlobHandle; var Size: Cardinal; var Buffer: Pointer);
// the buffer size if known and Pointer allocated.
procedure BlobReadSizedBuffer(var BlobHandle: IscBlobHandle; Buffer: Pointer); overload;
// DBexpress and SP: the component set the max blob size
procedure BlobReadSizedBuffer(var BlobHandle: IscBlobHandle; Buffer: Pointer; MaxSize: Cardinal); overload;
function BlobCreate(var DBHandle: IscDbHandle; var TraHandle: IscTrHandle; var BlobHandle: IscBlobHandle; BPB: string = ''): TISCQuad;
procedure BlobWriteSegment(var BlobHandle: IscBlobHandle; BufferLength: Cardinal; Buffer: PChar);
procedure BlobWriteString(var BlobHandle: IscBlobHandle; var Str: String);
procedure BlobWriteStream(var BlobHandle: IscBlobHandle; Stream: TStream);
function StreamBlobOpen(var BlobId: TISCQuad; var Database: IscDbHandle;
var Transaction: IscTrHandle; mode: Char): PBStream;
function StreamBlobClose(Stream: PBStream): integer;
{$IFDEF IB71_UP}
procedure SavepointRelease(var TrHandle: IscTrHandle; const Name: string);
procedure SavepointRollback(var TrHandle: IscTrHandle; const Name: string; Option: Word);
procedure SavepointStart(var TrHandle: IscTrHandle; const Name: string);
{$ENDIF IB71_UP}
property SegMentSize: Word read GetSegmentSize write SetSegmentSize;
end;
//******************************************************************************
// Conversion
//******************************************************************************
procedure DecodeTimeStamp(v: PISCTimeStamp; out DateTime: Double); overload;
procedure DecodeTimeStamp(v: PISCTimeStamp; out TimeStamp: TTimeStamp); overload;
function DecodeTimeStamp(v: PISCTimeStamp): Double; overload;
procedure EncodeTimeStamp(const DateTime: TDateTime; v: PISCTimeStamp); overload;
procedure EncodeTimeStamp(const Date: Integer; v: PISCTimeStamp); overload;
procedure EncodeTimeStamp(const Time: Cardinal; v: PISCTimeStamp); overload;
procedure DecodeSQLDate(v: Integer; out Year: SmallInt; out Month, Day: Word); overload;
procedure DecodeSQLDate(const v: Integer; out Date: Double); overload;
procedure DecodeSQLDate(const v: Integer; out Date: Integer); overload;
function DecodeSQLDate(const v: Integer): Integer; overload;
procedure EncodeSQLDate(date: TDateTime; out v: Integer); overload;
procedure EncodeSQLDate(date: Integer; out v: Integer); overload;
procedure EncodeSQLDate(Year: SmallInt; Month, Day: Word; out v: Integer); overload;
procedure DecodeSQLTime(v: Cardinal; out Hour, Minute, Second: Word; out Fractions: LongWord);
procedure EncodeSQLTime(const Hour, Minute, Second: Word; const Fractions: LongWord; out v: Cardinal);
//******************************************************************************
// Event functions
//******************************************************************************
// function isc_cancel_events
// function isc_que_events
// function isc_wait_for_event
// procedure isc_event_counts
// function isc_event_block
//******************************************************************************
// Security
//******************************************************************************
// function isc_add_user
// function isc_delete_user
// function isc_modify_user
//******************************************************************************
// Other
//******************************************************************************
// function isc_compile_request
// function isc_compile_request2
// function isc_ddl
// function isc_prepare
// function isc_receive
// function isc_reconnect_transaction
// function isc_release_request
// function isc_request_info
// function isc_seek_blob
// function isc_send
// function isc_start_and_send
// function isc_start_request
// function isc_transact_request
// function isc_unwind_request
//******************************************************************************
//
//******************************************************************************
// function isc_ftof
// function isc_free
// function isc_print_blr
// procedure isc_qtoq
// procedure isc_set_debug
// procedure isc_vtof
// procedure isc_vtov
// {$IFDEF FB15}
// function isc_reset_fpe
// {$ENDIF}
// {$IFDEF IB7_UP}
// procedure isc_get_client_version
// function isc_get_client_major_version
// function isc_get_client_minor_version
// {$ENDIF}
type
TParamType = (
prNone, // no param
prByte, // Byte Param
prCard, // Cardinal Param
prStrg, // String Param
prIgno // Ignore Command
);
TDPBInfo = record
Name : String;
ParamType : TParamType;
end;
const
DPBInfos : array[1..isc_dpb_Max_Value] of TDPBInfo =
((Name: 'cdd_pathname'; ParamType: prIgno), // not implemented
(Name: 'allocation'; ParamType: prIgno), // not implemented
(Name: 'journal'; ParamType: prIgno), // not implemented
(Name: 'page_size'; ParamType: prCard), // ok
(Name: 'num_buffers'; ParamType: prCard), // ok
(Name: 'buffer_length'; ParamType: prIgno), // not implemented
(Name: 'debug'; ParamType: prCard), // ok
(Name: 'garbage_collect'; ParamType: prIgno), // not implemented
(Name: 'verify'; ParamType: prCard), // ok
(Name: 'sweep'; ParamType: prCard), // ok
(Name: 'enable_journal'; ParamType: prStrg), // ok
(Name: 'disable_journal'; ParamType: prNone), // ok
(Name: 'dbkey_scope'; ParamType: prCard), // ok
(Name: 'number_of_users'; ParamType: prIgno), // not implemented
(Name: 'trace'; ParamType: prNone), // ok
(Name: 'no_garbage_collect'; ParamType: prIgno), // not implemented
(Name: 'damaged'; ParamType: prNone), // ok
(Name: 'license'; ParamType: prStrg),
(Name: 'sys_user_name'; ParamType: prStrg), // ok
(Name: 'encrypt_key'; ParamType: prStrg), // ok
(Name: 'activate_shadow'; ParamType: prNone), // ok deprecated
(Name: 'sweep_interval'; ParamType: prCard), // ok
(Name: 'delete_shadow'; ParamType: prNone), // ok
(Name: 'force_write'; ParamType: prCard), // ok
(Name: 'begin_log'; ParamType: prStrg), // ok
(Name: 'quit_log'; ParamType: prNone), // ok
(Name: 'no_reserve'; ParamType: prCard), // ok
(Name: 'user_name'; ParamType: prStrg), // ok
(Name: 'password'; ParamType: prStrg), // ok
(Name: 'password_enc'; ParamType: prStrg), // ok
(Name: 'sys_user_name_enc'; ParamType: prNone),
(Name: 'interp'; ParamType: prCard), // ok
(Name: 'online_dump'; ParamType: prCard), // ok
(Name: 'old_file_size'; ParamType: prCard), // ok
(Name: 'old_num_files'; ParamType: prCard), // ok
(Name: 'old_file'; ParamType: prStrg), // ok
(Name: 'old_start_page'; ParamType: prCard), // ok
(Name: 'old_start_seqno'; ParamType: prCard), // ok
(Name: 'old_start_file'; ParamType: prCard), // ok
(Name: 'drop_walfile'; ParamType: prCard), // ok
(Name: 'old_dump_id'; ParamType: prCard), // ok
(Name: 'wal_backup_dir'; ParamType: prStrg), // ok
(Name: 'wal_chkptlen'; ParamType: prCard), // ok
(Name: 'wal_numbufs'; ParamType: prCard), // ok
(Name: 'wal_bufsize'; ParamType: prCard), // ok
(Name: 'wal_grp_cmt_wait'; ParamType: prCard), // ok
(Name: 'lc_messages'; ParamType: prStrg), // ok
(Name: 'lc_ctype'; ParamType: prStrg), // ok
(Name: 'cache_manager'; ParamType: prIgno), // not used in fb1.5
(Name: 'shutdown'; ParamType: prCard), // ok
(Name: 'online'; ParamType: prNone), // ok
(Name: 'shutdown_delay'; ParamType: prCard), // ok
(Name: 'reserved'; ParamType: prStrg), // ok
(Name: 'overwrite'; ParamType: prCard), // ok
(Name: 'sec_attach'; ParamType: prCard), // ok
(Name: 'disable_wal'; ParamType: prNone), // ok
(Name: 'connect_timeout'; ParamType: prCard), // ok
(Name: 'dummy_packet_interval'; ParamType: prCard), // ok
(Name: 'gbak_attach'; ParamType: prStrg), // ok
(Name: 'sql_role_name'; ParamType: prStrg), // ok rolename
(Name: 'set_page_buffers'; ParamType: prCard), // ok Change age buffer 50 >= buf >= 65535 (default 2048)
(Name: 'working_directory'; ParamType: prStrg), // ok
(Name: 'sql_dialect'; ParamType: prCard), // ok Set SQL Dialect for this connection (1,2,3)
(Name: 'set_db_readonly'; ParamType: prCard), // ok
(Name: 'set_db_sql_dialect'; ParamType: prCard), // ok Change sqldialect (1,2,3))
(Name: 'gfix_attach'; ParamType: prNone), // ok FB15: don't work
(Name: 'gstat_attach'; ParamType: prNone) // ok FB15: don't work
{$IFDEF IB65ORYF867}
,(Name: 'gbak_ods_version'; ParamType: prCard) // ??
,(Name: 'gbak_ods_minor_version'; ParamType: prCard) // ??
{$ENDIF IB65ORYF867}
{$IFDEF YF867_UP}
,(Name: 'numeric_scale_reduction';ParamType: prNone)
{$ENDIF YF867_UP}
{$IFDEF IB7_UP}
,(Name: 'set_group_commit'; ParamType: prNone) // ??
{$ENDIF IB7_UP}
{$IFDEF IB71_UP}
,(Name: 'gbak_validate'; ParamType: prNone) // ??
{$ENDIF IB71_UP}
{$IFDEF FB103_UP}
,(Name: 'set_db_charset'; ParamType: prStrg) // ok
{$ENDIF FB103_UP}
);
{$IFNDEF COMPILER6_UP}
function TryStrToInt(const S: string; out Value: Integer): Boolean;
{$ENDIF !COMPILER6_UP}
{$IFDEF USEJVCL}
{$IFDEF UNITVERSIONING}
const
UnitVersioning: TUnitVersionInfo = (
RCSfile: '$RCSfile: JvUIBLib.pas,v $';
Revision: '$Revision: 1.35 $';
Date: '$Date: 2005/02/17 10:20:58 $';
LogPath: 'JVCL\run'
);
{$ENDIF UNITVERSIONING}
{$ENDIF USEJVCL}
implementation
uses
JvUIBConst;
{ EUIBParser }
constructor EUIBParser.Create(Line, Character: Integer; dummyForBCB : Integer);
begin
FLine := Line;
FCharacter := Character;
Message := format('Parse error Line %d, Char %d', [FLine, FCharacter]);
end;
//******************************************************************************
// Errors handling
//******************************************************************************
{$IFNDEF COMPILER6_UP}
function TryStrToInt(const S: string; out Value: Integer): Boolean;
var
E: Integer;
begin
Val(S, Value, E);
Result := E = 0;
end;
{$ENDIF !COMPILER6_UP}
const
ISC_MASK = $14000000; // Defines the code as a valid ISC code
FAC_MASK = $00FF0000; // Specifies the facility where the code is located
CODE_MASK = $0000FFFF; // Specifies the code in the message file
CLASS_MASK = $F0000000; // Defines the code as warning, error, info, or other
// Note: Perhaps a debug level could be interesting !!!
CLASS_ERROR = 0; // Code represents an error
CLASS_WARNING = 1; // Code represents a warning
CLASS_INFO = 2; // Code represents an information msg
//FACILITY FAC_CODE MAX_NUMBER LAST_CHANGE
FAC_JRD = 0; // 501 26/10/2002 17:02:13 <- In Use
FAC_QLI = 1; // 509 07/11/1996 13:38:37
FAC_GDEF = 2; // 345 07/11/1996 13:38:37
FAC_GFIX = 3; // 114 25/12/2001 02:59:17 <- In Use
FAC_GPRE = 4; // 1 07/11/1996 13:39:40
FAC_GLTJ = 5; // 1 07/11/1996 13:39:40
FAC_GRST = 6; // 1 07/11/1996 13:39:40
FAC_DSQL = 7; // 15 22/07/2001 23:26:58 <- In Use
FAC_DYN = 8; // 215 01/07/2001 17:43:07 <- In Use
FAC_FRED = 9; // 1 07/11/1996 13:39:40
FAC_INSTALL = 10; // 1 07/11/1996 13:39:40
FAC_TEST = 11; // 4 07/11/1996 13:38:41
FAC_GBAK = 12; // 283 05/03/2002 02:38:49 <- In Use
FAC_SQLERR = 13; // 917 05/03/2002 02:55:22
FAC_SQLWARN = 14; // 102 07/11/1996 13:38:42
FAC_JRD_BUGCHK = 15; // 305 05/03/2002 02:29:03
FAC_GJRN = 16; // 241 07/11/1996 13:38:43
FAC_ISQL = 17; // 109 10/10/2001 03:27:43
FAC_GSEC = 18; // 91 04/11/1998 11:06:15 <- In Use
FAC_LICENSE = 19; // 60 05/03/2002 02:30:12 <- In Use
FAC_DOS = 20; // 74 05/03/2002 02:31:54
FAC_GSTAT = 21; // 36 10/10/2001 18:05:16 <- In Use
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -