Files
SignauxComplexes/AdExcept.pas
f1iwq2 7d2c4bd591 V9.2
2024-08-24 09:12:51 +02:00

761 lines
31 KiB
ObjectPascal

(***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is TurboPower Async Professional
*
* The Initial Developer of the Original Code is
* TurboPower Software
*
* Portions created by the Initial Developer are Copyright (C) 1991-2002
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Sulaiman Mah
* Sean B. Durkin
* Sebastian Zierer
*
* ***** END LICENSE BLOCK ***** *)
{*********************************************************}
{* ADEXCEPT.PAS 5.00 *}
{*********************************************************}
{Global defines potentially affecting this unit}
{$I AWDEFINE.INC}
{Options required for this unit}
{$G+,X+,F-,V-,P-,T-,B-}
unit AdExcept;
{-Apro exceptions}
interface
uses
Messages,
Windows,
SysUtils,
Classes,
OoMisc;
{ The design of the string resources has changed for APRO 4.04. We no longer }
{ use the string resource manager (AdSrmgr.pas), we now use resourcestrings. }
{ To use a different language, specify the language below. Only select one }
{ language when compiling. Selecting multiple languages will result in }
{ duplicate identifiers. If you need to support multiple langauages, use the }
{ separate string resource units to create your own language DLLs or other }
{ techniques. See the comments in the applicable language include file for }
{ more details (in English). }
{Select English by default, only one can be enabled at any given time }
{*** English ***}
{.$I AdExcept.inc}
{*** French ***}
{$I AdExcept.fra}
{*** German ***}
{.$I AdExcept.deu}
{*** Spanish ***}
{.$I AdExcept.esp}
{*** Swedish ***}
{.$I AdExcept.sw}
{*** Norwegian ***}
{.$I AdExcept.nor}
{*** Danish ***}
{.$I AdExcept.dk}
type
{General Apro exception class}
EAPDException = class(Exception)
private
FErrorCode : Integer;
public
constructor Create(const EC : Integer; PassThru : Boolean);
constructor CreateUnknown(const Msg : String; Dummy : Byte);
class function MapCodeToStringID(const Code : Integer) : Word;
{-Return a string table index for Code}
property ErrorCode : Integer
read FErrorCode write FErrorCode;
end;
{Apro exception groups}
EGeneral = class(EAPDException);
EOpenComm = class(EAPDException);
ESerialIO = class(EAPDException);
EModem = class(EAPDException);
ETrigger = class(EAPDException);
EPacket = class(EAPDException);
EProtocol = class(EAPDException);
EINI = class(EAPDException);
EFax = class(EAPDException);
ETapi = class(EAPDException);
ERas = class(EAPDException);
EAdTerminal = class(EAPDException);
EXML = class(EAPDException);
EStateMachine = class(EAPDException);
{Specific general exceptions}
EBadArgument = class(EGeneral);
EGotQuitMsg = class(EGeneral);
EBufferTooBig = class(EGeneral);
EPortNotAssigned = class(EGeneral);
EInternal = class(EGeneral);
EModemNotAssigned = class(EGeneral);
EPhonebookNotAssigned = class(EGeneral);
ECannotUseWithWinSock = class(EGeneral);
{Specific OpenComm exceptions}
EBadId = class(EOpenComm);
EBaudRate = class(EOpenComm);
EByteSize = class(EOpenComm);
EDefault = class(EOpenComm);
EHardware = class(EOpenComm);
EMemory = class(EOpenComm);
ECommNotOpen = class(EOpenComm);
EAlreadyOpen = class(EOpenComm);
ENoHandles = class(EOpenComm);
ENoTimers = class(EOpenComm);
ENoPortSelected = class(EOpenComm);
ENotOpenedByTapi = class(EOpenComm);
{Specific serial I/O exceptions}
ENullApi = class(ESerialIO);
ERegisterHandlerFailed= class(ESerialIO);
EPutBlockFail = class(ESerialIO);
EGetBlockFail = class(ESerialIO);
EOutputBufferTooSmall = class(ESerialIO);
EBufferIsEmpty = class(ESerialIO);
ETracingNotEnabled = class(ESerialIO);
ELoggingNotEnabled = class(ESerialIO);
EBaseAddressNotSet = class(ESerialIO);
{Specific modem exceptions}
EModemNotStarted = class(EModem);
EModemBusy = class(EModem);
EModemNotDialing = class(EModem);
EModemNotResponding = class(EModem);
EModemRejectedCommand = class(EModem);
EModemStatusMismatch = class(EModem);
{Specific dialer exceptions}
EAlreadyDialing = class(EModem);
ENotDialing = class(EModem);
EDeviceNotSelected = class(EModem);
EModemDetectedBusy = class(EModem);
ENoDialtone = class(EModem);
ENoCarrier = class(EModem);
ENoAnswer = class(EModem);
{Specific trigger exceptions}
ENoMoreTriggers = class(ETrigger);
ETriggerTooLong = class(ETrigger);
EBadTriggerHandle = class(ETrigger);
{Specific packet exceptions}
EInvalidProperty = class(EPacket);
EStringSizeError = class(EPacket);
{Specific protocol exceptions}
ETimeout = class(EProtocol);
ETooManyErrors = class(EProtocol);
ESequenceError = class(EProtocol);
{Specific INI database exceptions}
EKeyTooLong = class(EINI);
EDataTooLarge = class(EINI);
EIniWrite = class(EINI);
EIniRead = class(EINI);
ERecordExists = class(EINI);
ERecordNotFound = class(EINI);
EDatabaseFull = class(EINI);
EDatabaseEmpty = class(EINI);
EBadFieldList = class(EINI);
EBadFieldForIndex = class(EINI);
{.Z+}
{Specific FAX exceptions}
EFaxBadFormat = class(EFax);
EBadGraphicsFormat = class(EFax);
EConvertAbort = class(EFax);
EUnpackAbort = class(EFax);
ECantMakeBitmap = class(EFax);
ENoImageLoaded = class(EFax);
ENoImageBlockMarked = class(EFax);
EInvalidPageNumber = class(EFax);
EFaxBadMachine = class(EFax);
EFaxBadModemResult = class(EFax);
EFaxTrainError = class(EFax);
EFaxInitError = class(EFax);
EFaxBusy = class(EFax);
EFaxVoiceCall = class(EFax);
EFaxDataCall = class(EFax);
EFaxNoDialTone = class(EFax);
EFaxNoCarrier = class(EFax);
EFaxSessionError = class(EFax);
EFaxPageError = class(EFax);
EAlreadyMonitored = class(EFax);
ETapiAllocated = class(ETapi);
ETapiBadDeviceID = class(ETapi);
ETapiBearerModeUnavail = class(ETapi);
ETapiCallUnavail = class(ETapi);
ETapiCompletionOverrun = class(ETapi);
ETapiConferenceFull = class(ETapi);
ETapiDialBilling = class(ETapi);
ETapiDialDialtone = class(ETapi);
ETapiDialPrompt = class(ETapi);
ETapiDialQuiet = class(ETapi);
ETapiIncompatibleApiVersion = class(ETapi);
ETapiIncompatibleExtVersion = class(ETapi);
ETapiIniFileCorrupt = class(ETapi);
ETapiInUse = class(ETapi);
ETapiInvalAddress = class(ETapi);
ETapiInvalAddressID = class(ETapi);
ETapiInvalAddressMode = class(ETapi);
ETapiInvalAddressState = class(ETapi);
ETapiInvalAppHandle = class(ETapi);
ETapiInvalAppName = class(ETapi);
ETapiInvalBearerMode = class(ETapi);
ETapiInvalCallComplMode = class(ETapi);
ETapiInvalCallHandle = class(ETapi);
ETapiInvalCallParams = class(ETapi);
ETapiInvalCallPrivilege = class(ETapi);
ETapiInvalCallSelect = class(ETapi);
ETapiInvalCallState = class(ETapi);
ETapiInvalCallStatelist = class(ETapi);
ETapiInvalCard = class(ETapi);
ETapiInvalCompletionID = class(ETapi);
ETapiInvalConfCallHandle = class(ETapi);
ETapiInvalConsultCallHandle = class(ETapi);
ETapiInvalCountryCode = class(ETapi);
ETapiInvalDeviceClass = class(ETapi);
ETapiInvalDeviceHandle = class(ETapi);
ETapiInvalDialParams = class(ETapi);
ETapiInvalDigitList = class(ETapi);
ETapiInvalDigitMode = class(ETapi);
ETapiInvalDigits = class(ETapi);
ETapiInvalExtVersion = class(ETapi);
ETapiInvalGroupID = class(ETapi);
ETapiInvalLineHandle = class(ETapi);
ETapiInvalLineState = class(ETapi);
ETapiInvalLocation = class(ETapi);
ETapiInvalMediaList = class(ETapi);
ETapiInvalMediaMode = class(ETapi);
ETapiInvalMessageID = class(ETapi);
ETapiInvalParam = class(ETapi);
ETapiInvalParkID = class(ETapi);
ETapiInvalParkMode = class(ETapi);
ETapiInvalPointer = class(ETapi);
ETapiInvalPrivSelect = class(ETapi);
ETapiInvalRate = class(ETapi);
ETapiInvalRequestMode = class(ETapi);
ETapiInvalTerminalID = class(ETapi);
ETapiInvalTerminalMode = class(ETapi);
ETapiInvalTimeout = class(ETapi);
ETapiInvalTone = class(ETapi);
ETapiInvalToneList = class(ETapi);
ETapiInvalToneMode = class(ETapi);
ETapiInvalTransferMode = class(ETapi);
ETapiLineMapperFailed = class(ETapi);
ETapiNoConference = class(ETapi);
ETapiNoDevice = class(ETapi);
ETapiNoDriver = class(ETapi);
ETapiNoMem = class(ETapi);
ETapiNoRequest = class(ETapi);
ETapiNotOwner = class(ETapi);
ETapiNotRegistered = class(ETapi);
ETapiOperationFailed = class(ETapi);
ETapiOperationUnavail = class(ETapi);
ETapiRateUnavail = class(ETapi);
ETapiResourceUnavail = class(ETapi);
ETapiRequestOverrun = class(ETapi);
ETapiStructureTooSmall = class(ETapi);
ETapiTargetNotFound = class(ETapi);
ETapiTargetSelf = class(ETapi);
ETapiUninitialized = class(ETapi);
ETapiUserUserInfoTooBig = class(ETapi);
ETapiReinit = class(ETapi);
ETapiAddressBlocked = class(ETapi);
ETapiBillingRejected = class(ETapi);
ETapiInvalFeature = class(ETapi);
ETapiNoMultipleInstance = class(ETapi);
{Tapi exceptions that don't simply mirror TAPI error codes}
ETapiBusy = class(ETapi);
ETapiNotSet = class(ETapi);
ETapiNoSelect = class(ETapi);
ETapiLoadFail = class(ETapi);
ETapiGetAddrFail = class(ETapi);
ETapiUnexpected = class(ETapi);
ETapiVoiceNotSupported = class(ETapi);
ETapiWaveFail = class(ETapi);
ETapiTranslateFail = class(ETapi);
{VoIP specific errors}
EVoIPNotSupported = class(ETapi);
{Ras exceptions}
ERasLoadFail = class(ERas);
{Terminal exceptions}
EAdTerminalClass = class of EAdTerminal;
EAdTermRangeError = class(EAdTerminal);
EAdTermInvalidParameter = class(EAdTerminal);
EAdTermTooLarge = class(EAdTerminal);
{TApdPager Exceptions}
{$M+}
EApdPagerException = class (Exception)
private
FErrorCode : Integer;
public
{ Parameters to the construtor are reversed to prevent problems with
C++ Builder }
constructor Create (const ErrCode : Integer; const Msg : string);
published
property ErrorCode : Integer read FErrorCode;
end;
{$M-}
{TApdGSMPhone Exceptions}
{$M+}
EApdGSMPhoneException = class (Exception)
private
FErrorCode : Integer;
public
{ Parameters to the construtor are reversed to prevent problems with
C++ Builder }
constructor Create (const ErrCode : Integer; const Msg : string);
published
property ErrorCode : Integer read FErrorCode;
end;
{$M-}
{ XML exceptions }
{$M+}
EAdStreamError = class(EXML)
private
seFilePos : Integer;
public
constructor CreateError(const FilePos : Integer;
const Reason : DOMString);
property FilePos : Integer
read seFilePos;
end;
{$M-}
EAdFilterError = class(EAdStreamError)
private
feReason : DOMString;
feLine : Integer;
feLinePos : Integer;
public
constructor CreateError(const FilePos, Line, LinePos : Integer;
const Reason : DOMString);
property Reason : DOMString
read feReason;
property Line : Integer
read feLine;
property LinePos : Integer
read feLinePos;
end;
EAdParserError = class(EAdFilterError)
protected
public
constructor CreateError(Line, LinePos : Integer;
const Reason : DOMString);
end;
function CheckException(const Ctl : TComponent;
const Res : Integer) : Integer;
function XlatException(const E : Exception) : Integer;
{-Translate an exception into an error code}
function AproLoadStr(const ErrorCode : SmallInt) : string;
function AproLoadAnsiStr(const ErrorCode : SmallInt) : AnsiString;
function AproLoadZ(P : PAnsiChar; Code : Integer) : PAnsiChar; // --sm ansi
function ErrorMsg(const ErrorCode : SmallInt) : string;
function MessageNumberToString(MessageNumber : SmallInt) : string;
{.Z-}
implementation
{ include AdStrMap here to prevent circular references in AdStrMap }
uses
AnsiStrings, AdStrMap;
function AproLoadZ(P : PAnsiChar; Code : Integer) : PAnsiChar;
begin
Result := AnsiStrings.StrPCopy(P, AproLoadAnsiStr(Code));
end;
function AproLoadStr(const ErrorCode : SmallInt) : string;
{-Return an error message for ErrorCode}
begin
Result := MessageNumberToString(ErrorCode);
if Result = '' then
Result := SysErrorMessage(ErrorCode);
end;
function AproLoadAnsiStr(const ErrorCode : SmallInt) : AnsiString;
begin
Result := AnsiString(AproLoadStr(ErrorCode));
end;
{Alias for function above}
function ErrorMsg(const ErrorCode : SmallInt) : string;
{-Return an error message for ErrorCode}
begin
Result := AproLoadStr(ErrorCode);
end;
function MessageNumberToString(MessageNumber : SmallInt) : string;
var
Middle : integer;
Min : integer;
Max : integer;
begin
Result := '';
Min := 0;
Max := AdMaxMessages;
MessageNumber := abs(MessageNumber);
while (Min <= Max) do begin
Middle := Round ((Min + Max) / 2);
if abs(AdMessageNumberLookup[Middle].MessageNumber) = abs(MessageNumber) then begin
{ found it }
Result := AdMessageNumberLookup[Middle].MessageString;
Exit;
end else if abs(MessageNumber) < abs(AdMessageNumberLookup[Middle].MessageNumber) then
Max := Middle - 1
else
Min := Middle + 1;
end;
end;
constructor EAPDException.Create(const EC : Integer; PassThru : Boolean);
begin
FErrorCode := EC;
inherited Create(AproLoadStr(Abs(EC)));
end;
constructor EAPDException.CreateUnknown(const Msg : String; Dummy : Byte);
begin
ErrorCode := 0;
inherited Create(Msg);
end;
class function EAPDException.MapCodeToStringID(const Code : Integer) : Word;
begin
Result := Abs(Code);
end;
function CheckException(const Ctl : TComponent; const Res : Integer) : Integer;
{-Check Res, raise appropriate exception if non-zero}
var
ErrorMsg : String;
FileIO : EInOutError;
begin
Result := Res;
if (Res < ecOk) then
if not (csLoading in Ctl.ComponentState) then begin
case Res of
ecHardwareFailure..ecFileNotFound:
begin
{find the error message for the error}
ErrorMsg := AproLoadStr(Abs(Res));
{if we've run out of memory, raise that exception}
if (Res = ecOutOfMemory) then
OutOfMemoryError
{otherwise, raise a file I/O exception}
else begin
FileIO := EInOutError.Create(ErrorMsg);
FileIO.ErrorCode := Abs(Res);
raise FileIO;
end;
end;
{EGeneral}
ecBadArgument : raise EBadArgument.Create(Res, False);
ecGotQuitMsg : raise EGotQuitMsg.Create(Res, False);
ecBufferTooBig : raise EBufferTooBig.Create(Res, False);
ecPortNotAssigned : raise EPortNotAssigned.Create(Res, False);
ecInternal,
ecNoFieldsDefined,
ecNoIndexKey,
ecDatabaseNotPrepared : raise EInternal.Create(Res, False);
ecModemNotAssigned : raise EModemNotAssigned.Create(Res, False);
ecPhonebookNotAssigned : raise EPhonebookNotAssigned.Create(Res, False);
ecCannotUseWithWinSock : raise ECannotUseWithWinsock.Create(Res, False);
{EOpenComm}
ecBadId : raise EBadId.Create(Res, False);
ecBaudRate : raise EBaudRate.Create(Res, False);
ecByteSize : raise EByteSize.Create(Res, False);
ecDefault : raise EDefault.Create(Res, False);
ecHardware : raise EHardware.Create(Res, False);
ecMemory : raise EMemory.Create(Res, False);
ecCommNotOpen : raise ECommNotOpen.Create(Res, False);
ecAlreadyOpen : raise EAlreadyOpen.Create(Res, False);
ecNoHandles : raise ENoHandles.Create(Res, False);
ecNoTimers : raise ENoTimers.Create(Res, False);
ecNoPortSelected : raise ENoPortSelected.Create(Res, False);
ecNotOpenedByTapi : raise ENotOpenedByTapi.Create(Res, False);
{ESerialIO}
ecNullApi : raise ENullApi.Create(Res, False);
ecRegisterHandlerFailed : raise ERegisterHandlerFailed.Create(Res, False);
ecPutBlockFail : raise EPutBlockFail.Create(Res, False);
ecGetBlockFail : raise EGetBlockFail.Create(Res, False);
ecOutputBufferTooSmall : raise EOutputBufferTooSmall.Create(Res, False);
ecBufferIsEmpty : raise EBufferIsEmpty.Create(Res, False);
ecTracingNotEnabled : raise ETracingNotEnabled.Create(Res, False);
ecLoggingNotEnabled : raise ELoggingNotEnabled.Create(Res, False);
ecBaseAddressNotSet : raise EBaseAddressNotSet.Create(Res, False);
{EModem}
ecModemNotStarted : raise EModemNotStarted.Create(Res, False);
ecModemBusy : raise EModemBusy.Create(Res, False);
ecModemNotDialing : raise EModemNotDialing.Create(Res, False);
ecNotDialing : raise ENotDialing.Create(Res, False);
ecAlreadyDialing : raise EAlreadyDialing.Create(Res, False);
ecModemNotResponding : raise EModemNotResponding.Create(Res, False);
ecModemRejectedCommand : raise EModemRejectedCommand.Create(Res, False);
ecModemStatusMismatch : raise EModemStatusMismatch.Create(Res, False);
{ETrigger}
ecNoMoreTriggers : raise ENoMoreTriggers.Create(Res, False);
ecTriggerTooLong : raise ETriggerTooLong.Create(Res, False);
ecBadTriggerHandle : raise EBadTriggerHandle.Create(Res, False);
{EProtocol}
ecTimeout : raise EProtocol.Create(Res, False);
ecTooManyErrors : raise EProtocol.Create(Res, False);
ecSequenceError : raise EProtocol.Create(Res, False);
{EIni}
ecKeyTooLong : raise EKeyTooLong.Create(Res, False);
ecDataTooLarge : raise EDataTooLarge.Create(Res, False);
ecIniWrite : raise EIniWrite.Create(Res, False);
ecIniRead : raise EIniRead.Create(Res, False);
ecRecordExists : raise ERecordExists.Create(Res, False);
ecRecordNotFound : raise ERecordNotFound.Create(Res, False);
ecDatabaseFull : raise EDatabaseFull.Create(Res, False);
ecDatabaseEmpty : raise EDatabaseEmpty.Create(Res, False);
ecBadFieldList : raise EBadFieldList.Create(Res, False);
ecBadFieldForIndex : raise EBadFieldForIndex.Create(Res, False);
{EFax}
ecFaxBadFormat : raise EFaxBadFormat.Create(Res, False);
ecBadGraphicsFormat : raise EBadGraphicsFormat.Create(Res, False);
ecConvertAbort : raise EConvertAbort.Create(Res, False);
ecUnpackAbort : raise EUnpackAbort.Create(Res, False);
ecCantMakeBitmap : raise ECantMakeBitmap.Create(Res, False);
ecInvalidPageNumber : raise EInvalidPageNumber.Create(Res, False);
ecFaxBadMachine : raise EFaxBadMachine.Create(Res, False);
ecFaxBadModemResult : raise EFaxBadModemResult.Create(Res, False);
ecFaxTrainError : raise EFaxTrainError.Create(Res, False);
ecFaxInitError : raise EFaxInitError.Create(Res, False);
ecFaxBusy : raise EFaxBusy.Create(Res, False);
ecFaxVoiceCall : raise EFaxVoiceCall.Create(Res, False);
ecFaxDataCall : raise EFaxDataCall.Create(Res, False);
ecFaxNoDialTone : raise EFaxNoDialTone.Create(Res, False);
ecFaxNoCarrier : raise EFaxNoCarrier.Create(Res, False);
ecFaxSessionError : raise EFaxSessionError.Create(Res, False);
ecFaxPageError : raise EFaxPageError.Create(Res, False);
ecAllocated : raise ETapiAllocated.Create(Res, False);
ecBadDeviceID : raise ETapiBadDeviceID.Create(Res, False);
ecBearerModeUnavail : raise ETapiBearerModeUnavail.Create(Res, False);
ecCallUnavail : raise ETapiCallUnavail.Create(Res, False);
ecCompletionOverrun : raise ETapiCompletionOverrun.Create(Res, False);
ecConferenceFull : raise ETapiConferenceFull.Create(Res, False);
ecDialBilling : raise ETapiDialBilling.Create(Res, False);
ecDialDialtone : raise ETapiDialDialtone.Create(Res, False);
ecDialPrompt : raise ETapiDialPrompt.Create(Res, False);
ecDialQuiet : raise ETapiDialQuiet.Create(Res, False);
ecIncompatibleApiVersion: raise ETapiIncompatibleApiVersion.Create(Res, False);
ecIncompatibleExtVersion: raise ETapiIncompatibleExtVersion.Create(Res, False);
ecIniFileCorrupt : raise ETapiIniFileCorrupt.Create(Res, False);
ecInUse : raise ETapiInUse.Create(Res, False);
ecInvalAddress : raise ETapiInvalAddress.Create(Res, False);
ecInvalAddressID : raise ETapiInvalAddressID.Create(Res, False);
ecInvalAddressMode : raise ETapiInvalAddressMode.Create(Res, False);
ecInvalAddressState : raise ETapiInvalAddressState.Create(Res, False);
ecInvalAppHandle : raise ETapiInvalAppHandle.Create(Res, False);
ecInvalAppName : raise ETapiInvalAppName.Create(Res, False);
ecInvalBearerMode : raise ETapiInvalBearerMode.Create(Res, False);
ecInvalCallComplMode : raise ETapiInvalCallComplMode.Create(Res, False);
ecInvalCallHandle : raise ETapiInvalCallHandle.Create(Res, False);
ecInvalCallParams : raise ETapiInvalCallParams.Create(Res, False);
ecInvalCallPrivilege : raise ETapiInvalCallPrivilege.Create(Res, False);
ecInvalCallSelect : raise ETapiInvalCallSelect.Create(Res, False);
ecInvalCallState : raise ETapiInvalCallState.Create(Res, False);
ecInvalCallStatelist : raise ETapiInvalCallStatelist.Create(Res, False);
ecInvalCard : raise ETapiInvalCard.Create(Res, False);
ecInvalCompletionID : raise ETapiInvalCompletionID.Create(Res, False);
ecInvalConfCallHandle : raise ETapiInvalConfCallHandle.Create(Res, False);
ecInvalConsultCallHandle: raise ETapiInvalConsultCallHandle.Create(Res, False);
ecInvalCountryCode : raise ETapiInvalCountryCode.Create(Res, False);
ecInvalDeviceClass : raise ETapiInvalDeviceClass.Create(Res, False);
ecInvalDeviceHandle : raise ETapiInvalDeviceHandle.Create(Res, False);
ecInvalDialParams : raise ETapiInvalDialParams.Create(Res, False);
ecInvalDigitList : raise ETapiInvalDigitList.Create(Res, False);
ecInvalDigitMode : raise ETapiInvalDigitMode.Create(Res, False);
ecInvalDigits : raise ETapiInvalDigits.Create(Res, False);
ecInvalExtVersion : raise ETapiInvalExtVersion.Create(Res, False);
ecInvalGroupID : raise ETapiInvalGroupID.Create(Res, False);
ecInvalLineHandle : raise ETapiInvalLineHandle.Create(Res, False);
ecInvalLineState : raise ETapiInvalLineState.Create(Res, False);
ecInvalLocation : raise ETapiInvalLocation.Create(Res, False);
ecInvalMediaList : raise ETapiInvalMediaList.Create(Res, False);
ecInvalMediaMode : raise ETapiInvalMediaMode.Create(Res, False);
ecInvalMessageID : raise ETapiInvalMessageID.Create(Res, False);
ecInvalParam : raise ETapiInvalParam.Create(Res, False);
ecInvalParkID : raise ETapiInvalParkID.Create(Res, False);
ecInvalParkMode : raise ETapiInvalParkMode.Create(Res, False);
ecInvalPointer : raise ETapiInvalPointer.Create(Res, False);
ecInvalPrivSelect : raise ETapiInvalPrivSelect.Create(Res, False);
ecInvalRate : raise ETapiInvalRate.Create(Res, False);
ecInvalRequestMode : raise ETapiInvalRequestMode.Create(Res, False);
ecInvalTerminalID : raise ETapiInvalTerminalID.Create(Res, False);
ecInvalTerminalMode : raise ETapiInvalTerminalMode.Create(Res, False);
ecInvalTimeout : raise ETapiInvalTimeout.Create(Res, False);
ecInvalTone : raise ETapiInvalTone.Create(Res, False);
ecInvalToneList : raise ETapiInvalToneList.Create(Res, False);
ecInvalToneMode : raise ETapiInvalToneMode.Create(Res, False);
ecInvalTransferMode : raise ETapiInvalTransferMode.Create(Res, False);
ecLineMapperFailed : raise ETapiLineMapperFailed.Create(Res, False);
ecNoConference : raise ETapiNoConference.Create(Res, False);
ecNoDevice : raise ETapiNoDevice.Create(Res, False);
ecNoDriver : raise ETapiNoDriver.Create(Res, False);
ecNoMem : raise ETapiNoMem.Create(Res, False);
ecNoRequest : raise ETapiNoRequest.Create(Res, False);
ecNotOwner : raise ETapiNotOwner.Create(Res, False);
ecNotRegistered : raise ETapiNotRegistered.Create(Res, False);
ecOperationFailed : raise ETapiOperationFailed.Create(Res, False);
ecOperationUnavail : raise ETapiOperationUnavail.Create(Res, False);
ecRateUnavail : raise ETapiRateUnavail.Create(Res, False);
ecResourceUnavail : raise ETapiResourceUnavail.Create(Res, False);
ecRequestOverrun : raise ETapiRequestOverrun.Create(Res, False);
ecStructureTooSmall : raise ETapiStructureTooSmall.Create(Res, False);
ecTargetNotFound : raise ETapiTargetNotFound.Create(Res, False);
ecTargetSelf : raise ETapiTargetSelf.Create(Res, False);
ecUninitialized : raise ETapiUninitialized.Create(Res, False);
ecUserUserInfoTooBig : raise ETapiUserUserInfoTooBig.Create(Res, False);
ecReinit : raise ETapiReinit.Create(Res, False);
ecAddressBlocked : raise ETapiAddressBlocked.Create(Res, False);
ecBillingRejected : raise ETapiBillingRejected.Create(Res, False);
ecInvalFeature : raise ETapiInvalFeature.Create(Res, False);
ecNoMultipleInstance : raise ETapiNoMultipleInstance.Create(Res, False);
ecTapiBusy : raise ETapiBusy.Create(Res, False);
ecTapiNotSet : raise ETapiNotSet.Create(Res, False);
ecTapiNoSelect : raise ETapiNoSelect.Create(Res, False);
ecTapiLoadFail : raise ETapiLoadFail.Create(Res, False);
ecTapiGetAddrFail : raise ETapiGetAddrFail.Create(Res, False);
ecTapiVoiceNotSupported : raise ETapiVoiceNotSupported.Create(Res, False);
ecTapiWaveFail : raise ETapiWaveFail.Create(Res, False);
ecTapiTranslateFail : raise ETapiTranslateFail.Create(Res, False);
{ERas}
ecRasLoadFail : raise ERasLoadFail.Create(Res, False);
{Couldn't find error message}
else raise EAPDException.CreateUnknown('Apro exception', 0);
end;
end;
end;
function XlatException(const E : Exception) : Integer;
{-Translate an exception into an error code}
begin
if (E is EApdException) then
Result := EApdException(E).ErrorCode
else if (E is EInOutError) then
Result := -EInOutError(E).ErrorCode
else if (E is EOutOfMemory) then
Result := ecOutOfMemory
else
Result := -9999;
end;
{ EAdStreamError }
constructor EAdStreamError.CreateError(const FilePos: Integer;
const Reason: DOMString);
begin
inherited CreateUnknown(Reason, 0);
seFilePos := FilePos;
end;
{ EAdFilterError }
constructor EAdFilterError.CreateError(const FilePos, Line,
LinePos: Integer; const Reason: DOMString);
begin
inherited CreateError(FilePos, Reason);
feLine := Line;
feLinePos := LinePos;
feReason := Reason;
end;
{ EAdParserError }
constructor EAdParserError.CreateError(Line, LinePos: Integer;
const Reason: DOMString);
begin
inherited CreateError(FilePos, Line, LinePos, Reason);
end;
{ EApdGSMPhoneException }
constructor EApdGSMPhoneException.Create(const ErrCode: Integer;
const Msg: string);
begin
inherited Create (Msg);
FErrorCode := ErrCode;
end;
{ EApdPagerException }
constructor EApdPagerException.Create(const ErrCode: Integer;
const Msg: string);
begin
inherited Create (Msg);
FErrorCode := ErrCode;
end;
end.