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