ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/public/ibx/trunk/fbintf/client/FBMessages.pas
Revision: 350
Committed: Wed Oct 20 14:58:56 2021 UTC (3 years, 1 month ago) by tony
Content type: text/x-pascal
File size: 15666 byte(s)
Log Message:
Fixed Merged

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 tony 350 ibxeBatchBufferSizeTooBig,
169     ibxeNoScrollableCursors
170 tony 45 );
171    
172 tony 56 function GetErrorMessage(ErrMess: TIBClientError): AnsiString;
173 tony 45
174 tony 291 {IBError is used internally and by IBX to throw an EIBClientError}
175    
176     procedure IBError(ErrMess: TIBClientError; const Args: array of const);
177    
178 tony 45 resourcestring
179     { generic strings used in code }
180     SParamNameExpected = 'Parameter name expected';
181     sSQLErrorSeparator = ' When Executing: ';
182     SFirebirdAPIFuncNotFound = 'Unable to load Firebird Client Library Function "%s"';
183     STrue = 'true';
184     SFalse = 'false';
185 tony 47 SArray = '(array)';
186 tony 345 SBatchCompletionError = 'Error Processing update/insert batch on row number %d - ';
187 tony 45
188     implementation
189    
190 tony 291 uses IBUtils, IB;
191 tony 45
192     resourcestring
193    
194     { strings used in error messages}
195     SInterBaseMissing = 'Firebird library not found in the path. Please install Firebird to use this functionality';
196     SIB60feature = '%s is an InterBase 6 function. Please upgrade to InterBase 6 to use this functonality';
197     SNotSupported = 'Unsupported feature';
198     SNotPermitted = 'Not permitted';
199     SDatabaseClosed = 'Cannot perform operation -- DB is not open';
200     SNotInTransaction = 'Transaction is not active';
201     STransactionNotAssigned = 'Transaction not assigned';
202     SEOF = 'End of file';
203     SBOF = 'Beginning of file';
204     SInvalidStatementHandle = 'Invalid statement handle';
205     SSQLClosed = 'IBSQL Closed';
206     SUnknownSQLDataType = 'Unknown SQL Data type (%d)';
207     SInvalidColumnIndex = 'Invalid column index (index exceeds permitted range)';
208 tony 315 SInvalidDataConversion = 'Invalid data conversion from %s';
209 tony 45 SBlobCannotBeRead = 'Blob stream cannot be read';
210     SBlobCannotBeWritten = 'Blob stream cannot be written';
211     SBlobNotOpen = 'The Blob is not open';
212     SEmptyQuery = 'Empty query';
213     SFieldNotFound = 'Field "%s" not found';
214     SSQLParseError = 'SQL Parse Error:' + CRLF + CRLF + '%s';
215     SIsASelectStatement = 'use Open for a Select Statement';
216     SIsAExecuteProcedure = 'use ExecProc for Procedure; use TQuery for Select procedures';
217     SMaximumEvents = 'Exceded Maximum Event limits';
218     SServiceActive = 'Cannot perform operation -- service is not attached';
219     SServiceInActive = 'Cannot perform operation -- service is attached';
220     SServerNameMissing = 'Server Name Missing';
221 tony 144 SOutputParsingError = 'Unexpected Output buffer value (%d) - %s';
222 tony 45 SEmptyAttachmentsList = 'The list of database attachments cannot be empty';
223     SInfoBufferTypeError = 'Invalid operation for Info Buffer Type (%d)';
224     SServiceRequestIndexError = 'Service Request Index Out of Range (%d)';
225     SServiceParamTypeError = 'Invalid Request for Service Param Type';
226     SOutputBlockIndexError = 'Output Block Index Out of Range (%d)';
227     SOutputBlockTypeError = 'Invalid Request for Output Block Type';
228     SPBIndexError = 'DPB Index out of range (%d)';
229     SPBParamTypeError = 'Invalid Request for DPB Param Type';
230     SDuplicateParamName = 'Blob or array parameter name must be unique (%s)';
231 tony 47 SInvalidArrayDimensions = 'Invalid number of array dimensions (%d)';
232 tony 45 SNotAMultiDatabaseTransaction = 'This is not a multi-database transaction';
233     SAttachmentListIndexError = 'Attachment List index out of range (%d)';
234     SNotAnArray = 'Table Column must be an array';
235     SNotABlob = 'Table Column must be a Blob';
236     SInvalidSubscript = 'Invalid Subscript (%d) for Array Dimension %d';
237     SArrayElementOverFlow = 'Array Element too big';
238     SArrayBoundsCantIncrease = 'Array Bounds can only be narrowed';
239     SStatementNotPrepared = 'The Statement has not been prepared';
240     SInterfaceOutofDate = 'This interface is no longer up-to-date';
241     SInvalidBlobMetaData = 'Unable to Access Blob Meta Data';
242     SNoDPB = 'A DPB must be provided';
243     SInEventWait = 'Already in Event Wait State';
244     SIncompatibleBlob = 'Incompatible Blob SubTypes. %d expected, %d found';
245     SMissingColumnName = 'Relation or Column Name Missing';
246     SStringTooLong = 'String "%s" is too long. Max %d characters';
247     SFieldNotinDataSet = 'Field %s is not a member of DataSet %s';
248     SNoDefaultCharacterSet = 'A connection default character set is required to perform this operation';
249     SParamBufferOverflow = 'Parameter Buffer Overflow';
250     SInvalidParamCount = 'Invalid Parameter Count. %d expected, %d found';
251     SInvalidVariantType = 'Invalid variant type';
252 tony 56 SInterfaceNotSupported = 'Interface not supported; Guid %s not found';
253 tony 60 SCharacterSetExists = 'Character set "%s" is already defined';
254     SUnknownUserCharSet = 'Unknown user character set "%s"';
255 tony 68 SUninitializedInputParameter = 'SQL Param No. %d (%s) is uninitialised';
256 tony 217 SMultiThreadRequired = 'Multi-threading required for %s but not enabled. Please recompile with multi-threading support enabled. '+
257     'Hint: you probably need to add -dUseCThreads to the Custom Options.';
258 tony 263 STokenQueueOverflow = 'Error in SQL Token Analyser - token queue overflow';
259     STokenQueueUnderflow = 'Error in SQL Token Analyser - token queue underflow';
260     SErrorParsing = 'Error parsing SQL Statement at clause starting with %s';
261     SDLInfoError = 'dlinfo returned error - %s';
262     SDifferentAPIs = 'All transaction attachments must use the same Firebird Library';
263 tony 315 SInvalidDateTimeStr = '%s is not a valid Date/Time string';
264     SBadTimeZoneID = 'Invalid Time Zone ID (%d,%d)';
265     SBadBCDConversion = 'Conversion to BCD failed';
266     SBadTimeZoneName = 'Invalid Time Zone Name "%s"';
267     STimeZoneUnknown = 'Time Zone Unknown';
268     SBadTimeSpecification = '%d:%d:%d.%d is not a valid time specification';
269     SBCDTooBig = 'BCD Precision (%d) is too large for Firebird Data Type max precision (%d)';
270     SInvalidTimeZoneID = 'Invalid Time Zone ID (%d)';
271     SBadTimestampOrNoTimeZoneDBEntry = 'Bad Timestamp or missing time zone DB entry (%s) TZ ID = %d';
272     SBCDOverflow = 'BCD Precision too large for Firebird data type,[%s]';
273     SNoTimezoneSupport = 'TIME/TIMESTAMP WITH TIME ZONE data type not supported';
274     SDecFloatNotSupported = 'DecFloat Data Type not supported';
275     SInt128NotSupported = 'INT128 Data Type not supported';
276     SUnknownParamTypeName = '%s:Unknown Param Type Name "%s"';
277 tony 345 SInvalidQueryAction = 'Query Action only valid for an Update or Insert Query';
278     SSQLTypeUnchangeable = 'Cannot change SQL Type from %s to %s';
279     SCannotIncreaseMetadatasize = 'Cannot increase Metadata size from %d to %d';
280     SBatchModeNotSupported = 'Batch Mode is not available. Firebird 4 or later client and server is required';
281     SNotInBatchMode = 'Not in Batch Mode - have you called AddToBatch?';
282     SInBatchMode = 'Invalid Operation: a Batch is pending';
283     SInvalidBatchQuery = 'This query type (%s) cannot be batched';
284     SBatchRowBufferOverflow = 'Adding Row No. %d - batch buffer size limit (%d bytes) exceeded';
285     SBatchBufferSizeTooBig = 'Requested Batch Buffer Size (%d bytes) exceeds 256MB limit';
286 tony 350 SNoScrollableCursors = 'Scrollable cursors are not supported';
287 tony 45
288     const
289     IBErrorMessages: array[TIBClientError] of string = (
290     SInterBaseMissing,
291     SIB60feature,
292     SNotSupported,
293     SNotPermitted,
294     SDatabaseClosed,
295     SNotInTransaction,
296     STransactionNotAssigned,
297     SEOF,
298     SBOF,
299     SInvalidStatementHandle,
300     SSQLClosed,
301     SUnknownSQLDataType,
302     SInvalidColumnIndex,
303     SInvalidDataConversion,
304     SBlobCannotBeRead,
305     SBlobCannotBeWritten,
306     SBlobNotOpen,
307     SEmptyQuery,
308     SFieldNotFound,
309     SSQLParseError,
310     SIsASelectStatement,
311     SIsAExecuteProcedure,
312     SMaximumEvents,
313     SServiceActive,
314     SServiceInActive,
315     SServerNameMissing,
316     SOutputParsingError,
317     SEmptyAttachmentsList,
318     SInfoBufferTypeError,
319     SServiceRequestIndexError,
320     SServiceParamTypeError,
321     SOutputBlockIndexError,
322     SOutputBlockTypeError,
323     SPBIndexError,
324     SPBParamTypeError,
325     SDuplicateParamName,
326     SInvalidArrayDimensions,
327     SNotAMultiDatabaseTransaction,
328     SAttachmentListIndexError,
329     SNotAnArray,
330     SNotABlob,
331     SInvalidSubscript,
332     SArrayElementOverFlow,
333     SArrayBoundsCantIncrease,
334     SStatementNotPrepared,
335     SInterfaceOutofDate,
336     SInvalidBlobMetaData,
337     SNoDPB,
338     SInEventWait,
339     SIncompatibleBlob,
340     SMissingColumnName,
341     SStringTooLong,
342     SFieldNotinDataSet,
343     SNoDefaultCharacterSet,
344     SParamBufferOverflow,
345     SInvalidParamCount,
346     SInvalidVariantType,
347 tony 60 SInterfaceNotSupported,
348     SCharacterSetExists,
349 tony 68 SUnknownUserCharSet,
350 tony 103 SUninitializedInputParameter,
351 tony 221 SMultiThreadRequired,
352 tony 263 STokenQueueOverflow,
353     STokenQueueUnderflow,
354     SErrorParsing,
355     SDLInfoError,
356 tony 315 SDifferentAPIs,
357     SInvalidDateTimeStr,
358     SBadTimeZoneID,
359     SBadBCDConversion,
360     SBadTimeZoneName,
361     STimeZoneUnknown,
362     SBadTimeSpecification,
363     SBCDTooBig,
364     SInvalidTimeZoneID,
365     SBadTimestampOrNoTimeZoneDBEntry,
366     SBCDOverflow,
367     SNoTimezoneSupport,
368     SDecFloatNotSupported,
369     SInt128NotSupported,
370 tony 345 SUnknownParamTypeName,
371     SInvalidQueryAction,
372     SSQLTypeUnchangeable,
373     SCannotIncreaseMetadatasize,
374     SBatchModeNotSupported,
375     SNotInBatchMode,
376     SInBatchMode,
377     SInvalidBatchQuery,
378     SBatchRowBufferOverflow,
379 tony 350 SBatchBufferSizeTooBig,
380     SNoScrollableCursors
381 tony 45 );
382    
383 tony 56 function GetErrorMessage(ErrMess: TIBClientError): AnsiString;
384 tony 45 begin
385     Result := IBErrorMessages[ErrMess];
386     end;
387    
388 tony 291 procedure IBError(ErrMess: TIBClientError; const Args: array of const);
389     begin
390     raise EIBClientError.Create(Ord(ErrMess),
391     Format(GetErrorMessage(ErrMess), Args));
392     end;
393    
394 tony 345
395 tony 45 end.
396