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, 8 months ago) by tony
Content type: text/x-pascal
File size: 14237 byte(s)
Log Message:
Updated for IBX 4 release

File Contents

# Content
1 (*
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 {$IFDEF MSWINDOWS}
64 {$DEFINE WINDOWS}
65 {$ENDIF}
66
67 {$IFDEF FPC}
68 {$mode delphi}
69 {$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 ibxeInterfaceNotSupported,
137 ibxeCharacterSetExists,
138 ibxeUnknownUserCharSet,
139 ibxeUninitializedInputParameter,
140 ibxeMultiThreadRequired,
141 ibxeTokenQueueOverflow,
142 ibxeTokenQueueUnderflow,
143 ibxErrorParsing,
144 ibxeDLInfoError,
145 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 );
161
162 function GetErrorMessage(ErrMess: TIBClientError): AnsiString;
163
164 {IBError is used internally and by IBX to throw an EIBClientError}
165
166 procedure IBError(ErrMess: TIBClientError; const Args: array of const);
167
168 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 SArray = '(array)';
176
177 implementation
178
179 uses IBUtils, IB;
180
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 SInvalidDataConversion = 'Invalid data conversion from %s';
198 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 SOutputParsingError = 'Unexpected Output buffer value (%d) - %s';
211 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 SInvalidArrayDimensions = 'Invalid number of array dimensions (%d)';
221 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 SInterfaceNotSupported = 'Interface not supported; Guid %s not found';
242 SCharacterSetExists = 'Character set "%s" is already defined';
243 SUnknownUserCharSet = 'Unknown user character set "%s"';
244 SUninitializedInputParameter = 'SQL Param No. %d (%s) is uninitialised';
245 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 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 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
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 SInterfaceNotSupported,
327 SCharacterSetExists,
328 SUnknownUserCharSet,
329 SUninitializedInputParameter,
330 SMultiThreadRequired,
331 STokenQueueOverflow,
332 STokenQueueUnderflow,
333 SErrorParsing,
334 SDLInfoError,
335 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 );
351
352 function GetErrorMessage(ErrMess: TIBClientError): AnsiString;
353 begin
354 Result := IBErrorMessages[ErrMess];
355 end;
356
357 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 end.
364