ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/fbintf/client/FBMessages.pas
Revision: 345
Committed: Mon Aug 23 14:22:29 2021 UTC (2 years, 8 months ago) by tony
Content type: text/x-pascal
File size: 15544 byte(s)
Log Message:
Merged into public release

File Contents

# User Rev Content
1 tony 45 (*
2     * Firebird Interface (fbintf). The fbintf components provide a set of
3     * Pascal language bindings for the Firebird API. Although predominantly
4     * a new development they include source code taken from IBX and may be
5     * considered a derived product. This software thus also includes the copyright
6     * notice and license conditions from IBX.
7     *
8     * Except for those parts dervied from IBX, contents of this file are subject
9     * to the Initial Developer's Public License Version 1.0 (the "License"); you
10     * may not use this file except in compliance with the License. You may obtain a
11     * copy of the License here:
12     *
13     * http://www.firebirdsql.org/index.php?op=doc&id=idpl
14     *
15     * Software distributed under the License is distributed on an "AS
16     * IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
17     * implied. See the License for the specific language governing rights
18     * and limitations under the License.
19     *
20     * The Initial Developer of the Original Code is Tony Whyman.
21     *
22     * The Original Code is (C) 2016 Tony Whyman, MWA Software
23     * (http://www.mwasoftware.co.uk).
24     *
25     * All Rights Reserved.
26     *
27     * Contributor(s): ______________________________________.
28     *
29     *)
30     {************************************************************************}
31     { }
32     { Borland Delphi Visual Component Library }
33     { InterBase Express core components }
34     { }
35     { Copyright (c) 1998-2000 Inprise Corporation }
36     { }
37     { InterBase Express is based in part on the product }
38     { Free IB Components, written by Gregory H. Deatz for }
39     { Hoagland, Longo, Moran, Dunst & Doukas Company. }
40     { Free IB Components is used under license. }
41     { }
42     { The contents of this file are subject to the InterBase }
43     { Public License Version 1.0 (the "License"); you may not }
44     { use this file except in compliance with the License. You }
45     { may obtain a copy of the License at http://www.Inprise.com/IPL.html }
46     { Software distributed under the License is distributed on }
47     { an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, either }
48     { express or implied. See the License for the specific language }
49     { governing rights and limitations under the License. }
50     { The Original Code was created by InterBase Software Corporation }
51     { and its successors. }
52     { Portions created by Inprise Corporation are Copyright (C) Inprise }
53     { Corporation. All Rights Reserved. }
54     { Contributor(s): Jeff Overcash }
55     { }
56     { IBX For Lazarus (Firebird Express) }
57     { Contributor: Tony Whyman, MWA Software http://www.mwasoftware.co.uk }
58     { Portions created by MWA Software are copyright McCallum Whyman }
59     { Associates Ltd 2011 - 2015 }
60     { }
61     {************************************************************************}
62     unit FBMessages;
63 tony 291 {$IFDEF MSWINDOWS}
64     {$DEFINE WINDOWS}
65 tony 56 {$ENDIF}
66 tony 45
67     {$IFDEF FPC}
68 tony 56 {$mode delphi}
69 tony 45 {$codepage UTF8}
70     {$ENDIF}
71    
72     interface
73    
74     uses
75     Classes, SysUtils;
76    
77     type
78     TIBClientError = (
79     ibxeInterBaseMissing,
80     ibxeIB60feature,
81     ibxeNotSupported,
82     ibxeNotPermitted,
83     ibxeDatabaseClosed,
84     ibxeNotInTransaction,
85     ibxeTransactionNotAssigned,
86     ibxeEOF,
87     ibxeBOF,
88     ibxeInvalidStatementHandle,
89     ibxeSQLClosed,
90     ibxeUnknownSQLDataType,
91     ibxeInvalidColumnIndex,
92     ibxeInvalidDataConversion,
93     ibxeBlobCannotBeRead,
94     ibxeBlobCannotBeWritten,
95     ibxeBlobNotOpen,
96     ibxeEmptyQuery,
97     ibxeFieldNotFound,
98     ibxeSQLParseError,
99     ibxeIsASelectStatement,
100     ibxeIsAExecuteProcedure,
101     ibxeMaximumEvents,
102     ibxeServiceActive,
103     ibxeServiceInActive,
104     ibxeServerNameMissing,
105     ibxeOutputParsingError,
106     ibxeEmptyAttachmentsList,
107     ibxeInfoBufferTypeError,
108     ibxServiceRequestIndexError,
109     ibxServiceParamTypeError,
110     ibxeOutputBlockIndexError,
111     ibxeOutputBlockTypeError,
112     ibxePBIndexError,
113     ibxePBParamTypeError,
114     ibxeDuplicateParamName,
115     ibxeInvalidArrayDimensions,
116     ibxeNotAMultiDatabaseTransaction,
117     ibxeAttachmentListIndexError,
118     ibxeNotAnArray,
119     ibxeNotABlob,
120     ibxeInvalidSubscript,
121     ibxeArrayElementOverFlow,
122     ibxArrayBoundsCantIncrease ,
123     ibxeStatementNotPrepared,
124     ibxeInterfaceOutofDate,
125     ibxeInvalidBlobMetaData,
126     ibxeNoDPB,
127     ibxeInEventWait,
128     ibxeIncompatibleBlob,
129     ibxeMissingColumnName,
130     ibxStringTooLong,
131     ibxFieldNotinDataSet,
132     ibxeNoDefaultCharacterSet,
133     ibxeParamBufferOverflow,
134     ibxeInvalidParamCount,
135     ibxeInvalidVariantType,
136 tony 60 ibxeInterfaceNotSupported,
137     ibxeCharacterSetExists,
138 tony 68 ibxeUnknownUserCharSet,
139 tony 103 ibxeUninitializedInputParameter,
140 tony 221 ibxeMultiThreadRequired,
141 tony 263 ibxeTokenQueueOverflow,
142     ibxeTokenQueueUnderflow,
143     ibxErrorParsing,
144     ibxeDLInfoError,
145 tony 315 ibxeDifferentAPIs,
146     ibxeInvalidDateTimeStr,
147     ibxeBadTimeZoneID,
148     ibxeBadBCDConversion,
149     ibxeBadTimeZoneName,
150     ibxeTimeZoneUnknown,
151     ibxeBadTimeSpecification,
152     ibxeBCDTooBig,
153     ibxeInvalidTimeZoneID,
154     ibxeBadTimestampOrNoTimeZoneDBEntry,
155     ibxeBCDOverflow,
156     ibxeNoTimezoneSupport,
157     ibxeDecFloatNotSupported,
158     ibxeInt128NotSupported,
159 tony 345 ibxeUnknownParamTypeName,
160     ibxInvalidQueryAction,
161     ibxeSQLTypeUnchangeable,
162     ibxeCannotIncreaseMetadatasize,
163     ibxeBatchModeNotSupported,
164     ibxeNotInBatchMode,
165     ibxeInBatchMode,
166     ibxeInvalidBatchQuery,
167     ibxeBatchRowBufferOverflow,
168     ibxeBatchBufferSizeTooBig
169 tony 45 );
170    
171 tony 56 function GetErrorMessage(ErrMess: TIBClientError): AnsiString;
172 tony 45
173 tony 291 {IBError is used internally and by IBX to throw an EIBClientError}
174    
175     procedure IBError(ErrMess: TIBClientError; const Args: array of const);
176    
177 tony 45 resourcestring
178     { generic strings used in code }
179     SParamNameExpected = 'Parameter name expected';
180     sSQLErrorSeparator = ' When Executing: ';
181     SFirebirdAPIFuncNotFound = 'Unable to load Firebird Client Library Function "%s"';
182     STrue = 'true';
183     SFalse = 'false';
184 tony 47 SArray = '(array)';
185 tony 345 SBatchCompletionError = 'Error Processing update/insert batch on row number %d - ';
186 tony 45
187     implementation
188    
189 tony 291 uses IBUtils, IB;
190 tony 45
191     resourcestring
192    
193     { strings used in error messages}
194     SInterBaseMissing = 'Firebird library not found in the path. Please install Firebird to use this functionality';
195     SIB60feature = '%s is an InterBase 6 function. Please upgrade to InterBase 6 to use this functonality';
196     SNotSupported = 'Unsupported feature';
197     SNotPermitted = 'Not permitted';
198     SDatabaseClosed = 'Cannot perform operation -- DB is not open';
199     SNotInTransaction = 'Transaction is not active';
200     STransactionNotAssigned = 'Transaction not assigned';
201     SEOF = 'End of file';
202     SBOF = 'Beginning of file';
203     SInvalidStatementHandle = 'Invalid statement handle';
204     SSQLClosed = 'IBSQL Closed';
205     SUnknownSQLDataType = 'Unknown SQL Data type (%d)';
206     SInvalidColumnIndex = 'Invalid column index (index exceeds permitted range)';
207 tony 315 SInvalidDataConversion = 'Invalid data conversion from %s';
208 tony 45 SBlobCannotBeRead = 'Blob stream cannot be read';
209     SBlobCannotBeWritten = 'Blob stream cannot be written';
210     SBlobNotOpen = 'The Blob is not open';
211     SEmptyQuery = 'Empty query';
212     SFieldNotFound = 'Field "%s" not found';
213     SSQLParseError = 'SQL Parse Error:' + CRLF + CRLF + '%s';
214     SIsASelectStatement = 'use Open for a Select Statement';
215     SIsAExecuteProcedure = 'use ExecProc for Procedure; use TQuery for Select procedures';
216     SMaximumEvents = 'Exceded Maximum Event limits';
217     SServiceActive = 'Cannot perform operation -- service is not attached';
218     SServiceInActive = 'Cannot perform operation -- service is attached';
219     SServerNameMissing = 'Server Name Missing';
220 tony 144 SOutputParsingError = 'Unexpected Output buffer value (%d) - %s';
221 tony 45 SEmptyAttachmentsList = 'The list of database attachments cannot be empty';
222     SInfoBufferTypeError = 'Invalid operation for Info Buffer Type (%d)';
223     SServiceRequestIndexError = 'Service Request Index Out of Range (%d)';
224     SServiceParamTypeError = 'Invalid Request for Service Param Type';
225     SOutputBlockIndexError = 'Output Block Index Out of Range (%d)';
226     SOutputBlockTypeError = 'Invalid Request for Output Block Type';
227     SPBIndexError = 'DPB Index out of range (%d)';
228     SPBParamTypeError = 'Invalid Request for DPB Param Type';
229     SDuplicateParamName = 'Blob or array parameter name must be unique (%s)';
230 tony 47 SInvalidArrayDimensions = 'Invalid number of array dimensions (%d)';
231 tony 45 SNotAMultiDatabaseTransaction = 'This is not a multi-database transaction';
232     SAttachmentListIndexError = 'Attachment List index out of range (%d)';
233     SNotAnArray = 'Table Column must be an array';
234     SNotABlob = 'Table Column must be a Blob';
235     SInvalidSubscript = 'Invalid Subscript (%d) for Array Dimension %d';
236     SArrayElementOverFlow = 'Array Element too big';
237     SArrayBoundsCantIncrease = 'Array Bounds can only be narrowed';
238     SStatementNotPrepared = 'The Statement has not been prepared';
239     SInterfaceOutofDate = 'This interface is no longer up-to-date';
240     SInvalidBlobMetaData = 'Unable to Access Blob Meta Data';
241     SNoDPB = 'A DPB must be provided';
242     SInEventWait = 'Already in Event Wait State';
243     SIncompatibleBlob = 'Incompatible Blob SubTypes. %d expected, %d found';
244     SMissingColumnName = 'Relation or Column Name Missing';
245     SStringTooLong = 'String "%s" is too long. Max %d characters';
246     SFieldNotinDataSet = 'Field %s is not a member of DataSet %s';
247     SNoDefaultCharacterSet = 'A connection default character set is required to perform this operation';
248     SParamBufferOverflow = 'Parameter Buffer Overflow';
249     SInvalidParamCount = 'Invalid Parameter Count. %d expected, %d found';
250     SInvalidVariantType = 'Invalid variant type';
251 tony 56 SInterfaceNotSupported = 'Interface not supported; Guid %s not found';
252 tony 60 SCharacterSetExists = 'Character set "%s" is already defined';
253     SUnknownUserCharSet = 'Unknown user character set "%s"';
254 tony 68 SUninitializedInputParameter = 'SQL Param No. %d (%s) is uninitialised';
255 tony 217 SMultiThreadRequired = 'Multi-threading required for %s but not enabled. Please recompile with multi-threading support enabled. '+
256     'Hint: you probably need to add -dUseCThreads to the Custom Options.';
257 tony 263 STokenQueueOverflow = 'Error in SQL Token Analyser - token queue overflow';
258     STokenQueueUnderflow = 'Error in SQL Token Analyser - token queue underflow';
259     SErrorParsing = 'Error parsing SQL Statement at clause starting with %s';
260     SDLInfoError = 'dlinfo returned error - %s';
261     SDifferentAPIs = 'All transaction attachments must use the same Firebird Library';
262 tony 315 SInvalidDateTimeStr = '%s is not a valid Date/Time string';
263     SBadTimeZoneID = 'Invalid Time Zone ID (%d,%d)';
264     SBadBCDConversion = 'Conversion to BCD failed';
265     SBadTimeZoneName = 'Invalid Time Zone Name "%s"';
266     STimeZoneUnknown = 'Time Zone Unknown';
267     SBadTimeSpecification = '%d:%d:%d.%d is not a valid time specification';
268     SBCDTooBig = 'BCD Precision (%d) is too large for Firebird Data Type max precision (%d)';
269     SInvalidTimeZoneID = 'Invalid Time Zone ID (%d)';
270     SBadTimestampOrNoTimeZoneDBEntry = 'Bad Timestamp or missing time zone DB entry (%s) TZ ID = %d';
271     SBCDOverflow = 'BCD Precision too large for Firebird data type,[%s]';
272     SNoTimezoneSupport = 'TIME/TIMESTAMP WITH TIME ZONE data type not supported';
273     SDecFloatNotSupported = 'DecFloat Data Type not supported';
274     SInt128NotSupported = 'INT128 Data Type not supported';
275     SUnknownParamTypeName = '%s:Unknown Param Type Name "%s"';
276 tony 345 SInvalidQueryAction = 'Query Action only valid for an Update or Insert Query';
277     SSQLTypeUnchangeable = 'Cannot change SQL Type from %s to %s';
278     SCannotIncreaseMetadatasize = 'Cannot increase Metadata size from %d to %d';
279     SBatchModeNotSupported = 'Batch Mode is not available. Firebird 4 or later client and server is required';
280     SNotInBatchMode = 'Not in Batch Mode - have you called AddToBatch?';
281     SInBatchMode = 'Invalid Operation: a Batch is pending';
282     SInvalidBatchQuery = 'This query type (%s) cannot be batched';
283     SBatchRowBufferOverflow = 'Adding Row No. %d - batch buffer size limit (%d bytes) exceeded';
284     SBatchBufferSizeTooBig = 'Requested Batch Buffer Size (%d bytes) exceeds 256MB limit';
285 tony 45
286     const
287     IBErrorMessages: array[TIBClientError] of string = (
288     SInterBaseMissing,
289     SIB60feature,
290     SNotSupported,
291     SNotPermitted,
292     SDatabaseClosed,
293     SNotInTransaction,
294     STransactionNotAssigned,
295     SEOF,
296     SBOF,
297     SInvalidStatementHandle,
298     SSQLClosed,
299     SUnknownSQLDataType,
300     SInvalidColumnIndex,
301     SInvalidDataConversion,
302     SBlobCannotBeRead,
303     SBlobCannotBeWritten,
304     SBlobNotOpen,
305     SEmptyQuery,
306     SFieldNotFound,
307     SSQLParseError,
308     SIsASelectStatement,
309     SIsAExecuteProcedure,
310     SMaximumEvents,
311     SServiceActive,
312     SServiceInActive,
313     SServerNameMissing,
314     SOutputParsingError,
315     SEmptyAttachmentsList,
316     SInfoBufferTypeError,
317     SServiceRequestIndexError,
318     SServiceParamTypeError,
319     SOutputBlockIndexError,
320     SOutputBlockTypeError,
321     SPBIndexError,
322     SPBParamTypeError,
323     SDuplicateParamName,
324     SInvalidArrayDimensions,
325     SNotAMultiDatabaseTransaction,
326     SAttachmentListIndexError,
327     SNotAnArray,
328     SNotABlob,
329     SInvalidSubscript,
330     SArrayElementOverFlow,
331     SArrayBoundsCantIncrease,
332     SStatementNotPrepared,
333     SInterfaceOutofDate,
334     SInvalidBlobMetaData,
335     SNoDPB,
336     SInEventWait,
337     SIncompatibleBlob,
338     SMissingColumnName,
339     SStringTooLong,
340     SFieldNotinDataSet,
341     SNoDefaultCharacterSet,
342     SParamBufferOverflow,
343     SInvalidParamCount,
344     SInvalidVariantType,
345 tony 60 SInterfaceNotSupported,
346     SCharacterSetExists,
347 tony 68 SUnknownUserCharSet,
348 tony 103 SUninitializedInputParameter,
349 tony 221 SMultiThreadRequired,
350 tony 263 STokenQueueOverflow,
351     STokenQueueUnderflow,
352     SErrorParsing,
353     SDLInfoError,
354 tony 315 SDifferentAPIs,
355     SInvalidDateTimeStr,
356     SBadTimeZoneID,
357     SBadBCDConversion,
358     SBadTimeZoneName,
359     STimeZoneUnknown,
360     SBadTimeSpecification,
361     SBCDTooBig,
362     SInvalidTimeZoneID,
363     SBadTimestampOrNoTimeZoneDBEntry,
364     SBCDOverflow,
365     SNoTimezoneSupport,
366     SDecFloatNotSupported,
367     SInt128NotSupported,
368 tony 345 SUnknownParamTypeName,
369     SInvalidQueryAction,
370     SSQLTypeUnchangeable,
371     SCannotIncreaseMetadatasize,
372     SBatchModeNotSupported,
373     SNotInBatchMode,
374     SInBatchMode,
375     SInvalidBatchQuery,
376     SBatchRowBufferOverflow,
377     SBatchBufferSizeTooBig
378 tony 45 );
379    
380 tony 56 function GetErrorMessage(ErrMess: TIBClientError): AnsiString;
381 tony 45 begin
382     Result := IBErrorMessages[ErrMess];
383     end;
384    
385 tony 291 procedure IBError(ErrMess: TIBClientError; const Args: array of const);
386     begin
387     raise EIBClientError.Create(Ord(ErrMess),
388     Format(GetErrorMessage(ErrMess), Args));
389     end;
390    
391 tony 345
392 tony 45 end.
393