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