{*******************************************************}
{ }
{ Turbo Pascal Version 7.0 }
{ Turbo Vision Unit }
{ }
{ Copyright (c) 1992 Borland International }
{ }
{*******************************************************}
{$PureInt+}
unit Validate;
{$X+,I-,S-,Cdecl-}
interface
uses Objects, Use32;
const
{ TValidator Status constants }
vsOk = 0;
vsSyntax = 1; { Error in the syntax of either a TPXPictureValidator
or a TDBPictureValidator }
{ Validator option flags }
voFill = $0001;
voTransfer = $0002;
voOnAppend = $0004;
voReserved = $00F8;
{ TVTransfer constants }
type
TVTransfer = (vtDataSize, vtSetData, vtGetData);
{ Abstract TValidator object }
PValidator = ^TValidator;
TValidator = object(TObject)
Status: Word;
Options: Word;
constructor Init;
constructor Load(var S: TStream);
procedure Error; virtual;
function IsValidInput(var S: string;
SuppressFill: Boolean): Boolean; virtual;
function IsValid(const S: string): Boolean; virtual;
procedure Store(var S: TStream);
function Transfer(var S: String; Buffer: Pointer;
Flag: TVTransfer): Word; virtual;
function Valid(const S: string): Boolean;
end;
{ TPXPictureValidator result type }
TPicResult = (prComplete, prIncomplete, prEmpty, prError, prSyntax,
prAmbiguous, prIncompNoFill);
{ TPXPictureValidator }
PPXPictureValidator = ^TPXPictureValidator;
TPXPictureValidator = object(TValidator)
Pic: PString;
constructor Init(const APic: string; AutoFill: Boolean);
constructor Load(var S: TStream);
destructor Done; virtual;
procedure Error; virtual;
function IsValidInput(var S: string;
SuppressFill: Boolean): Boolean; virtual;
function IsValid(const S: string): Boolean; virtual;
function Picture(var Input: string;
AutoFill: Boolean): TPicResult; virtual;
procedure Store(var S: TStream);
end;
{ TFilterValidator }
PFilterValidator = ^TFilterValidator;
TFilterValidator = object(TValidator)
ValidChars: TCharSet;
constructor Init(AValidChars: TCharSet);
constructor Load(var S: TStream);
procedure Error; virtual;
function IsValid(const S: string): Boolean; virtual;
function IsValidInput(var S: string;
SuppressFill: Boolean): Boolean; virtual;
procedure Store(var S: TStream);
end;
{ TRangeValidator }
PRangeValidator = ^TRangeValidator;
TRangeValidator = object(TFilterValidator)
Min, Max: LongInt;
constructor Init(AMin, AMax: LongInt);
constructor Load(var S: TStream);
procedure Error; virtual;
function IsValid(const S: string): Boolean; virtual;
procedure Store(var S: TStream);
function Transfer(var S: String; Buffer: Pointer;
Flag: TVTransfer): Word; virtual;
end;
{ TLookupValidator }
PLookupValidator = ^TLookupValidator;
TLookupValidator = object(TValidator)
function IsValid(const S: string): Boolean; virtual;
function Lookup(const S: string): Boolean; virtual;
end;
{ TStringLookupValidator }
PStringLookupValidator = ^TStringLookupValidator;
TStringLookupValidator = object(TLookupValidator)
Strings: PStringCollection;
constructor Init(AStrings: PStringCollection);
constructor Load(var S: TStream);
destructor Done; virtual;
procedure Error; virtual;
function Lookup(const S: string): Boolean; virtual;
procedure NewStringList(AStrings: PStringCollection);
procedure Store(var S: TStream);
end;
{ Validate registration procedure }
procedure RegisterValidate;
{ Stream registration records }
const
RPXPictureValidator: TStreamRec = (
ObjType: 80;
VmtLink: Ofs(TypeOf(TPXPictureValidator)^);
Load: @TPXPictureValidator.Load;
Store: @TPXPictureValidator.Store
);
const
RFilterValidator: TStreamRec = (
ObjType: 81;
VmtLink: Ofs(TypeOf(TFilterValidator)^);
Load: @TFilterValidator.Load;
Store: @TFilterValidator.Store
);
const
RRangeValidator: TStreamRec = (
ObjType: 82;
VmtLink: Ofs(TypeOf(TRangeValidator)^);
Load: @TRangeValidator.Load;
Store: @TRangeValidator.Store
);
const
RStringLookupValidator: TStreamRec = (
ObjType: 83;
VmtLink: Ofs(TypeOf(TStringLookupValidator)^);
Load: @TStringLookupValidator.Load;
Store: @TStringLookupValidator.Store
);
implementation
uses MsgBox;
end.