home *** CD-ROM | disk | FTP | other *** search
/ DP Tool Club 17 / CD_ASCQ_17_101194.iso / vrac / ptgenr2.zip / BBVALIDA.PAS < prev    next >
Pascal/Delphi Source File  |  1994-08-01  |  6KB  |  129 lines

  1. (* This file was mangled by Mangler 1.32 (c) Copyright 1993-1994 by Berend de Boer *)
  2. { Created : 1993-03-30
  3.  
  4. Validator objects, overriding the error method of the Validate unit.
  5. This validators use string resources in stead of hardwired messages.
  6. It reserves the string resource identifier 1950..1969 for its own use.
  7.  
  8. This unit is almost a plug and play replacement for Validate. Sometimes
  9. you need Validate too, but ALWAYS place Validate BEFORE BBValidate in the
  10. uses clause.
  11.  
  12. Last changes :
  13. 93-12-04  Validators now store their ResStrID too
  14. 94-05-13  Added field Decimal to TRealValidator which controls how many
  15.           decimals to display when transering data to an inputline. If
  16.           Decimals = 0 it is disabled.
  17.           TRealValidator's Load and Store methods are also changed and
  18.           break existing resources!
  19. }
  20.  
  21.  
  22.  
  23. {$IFDEF DPMI}
  24. {$S-}
  25. {$ELSE}
  26. {$F+,O+}
  27. {$ENDIF}
  28.  
  29. {$X+,R-}
  30. unit BBValidate;
  31.  
  32. interface
  33.  
  34. uses Objects, Validate;
  35.  
  36. type
  37.   PFilterValidator = ^TFilterValidator;
  38.   TFilterValidator = object(Validate.TFilterValidator)
  39.     ResStrID : word;
  40.     constructor Init(AValidChars: TCharSet);
  41.     constructor Load(var S : TStream);
  42.     procedure Error;  virtual;
  43.     procedure Store(var S : TStream);
  44.   end;
  45.  
  46.   PRangeValidator = ^TRangeValidator;
  47.   TRangeValidator = object(Validate.TRangeValidator)
  48.     ResStrID : word;
  49.     constructor Init(AMin, AMax : longint);
  50.     constructor Load(var S : TStream);
  51.     procedure Error;  virtual;
  52.     procedure Store(var S : TStream);
  53.   end;
  54.  
  55.   PPXPictureValidator = ^TPXPictureValidator;
  56.   TPXPictureValidator = object(Validate.TPXPictureValidator)
  57.     ResStrID : word;
  58.     constructor Init(const APic : string; AutoFill : Boolean);
  59.     constructor Load(var S : TStream);
  60.     procedure Error;  virtual;
  61.     procedure Store(var S : TStream);
  62.   end;
  63.  
  64.   PRealValidator = ^TRealValidator;
  65.   TRealValidator = object(TPXPictureValidator)
  66.     Min, Max : real;
  67.     Decimals : shortint;
  68.     constructor Init(AMin, AMax : real);
  69.     constructor Load(var S : TStream);
  70.     procedure Error; virtual;
  71.     function  IsValid(const s : string) : Boolean;  virtual;
  72.     procedure Store(var S : TStream);
  73.     function  Transfer(var s : String; Buffer : Pointer;
  74.                        Flag : TVTransfer) : word;  virtual;
  75.   end;
  76.  
  77.  
  78. { Validate registration procedure }
  79.  
  80. procedure RegisterBBValidate;
  81.  
  82. { Stream registration records }
  83.  
  84. const
  85.   RFilterValidator: TStreamRec = (
  86.     ObjType: 81;
  87.     VmtLink: Ofs(TypeOf(TFilterValidator)^);
  88.     Load: @TFilterValidator.Load;
  89.     Store: @TFilterValidator.Store
  90.   );
  91.  
  92. const
  93.   RRangeValidator: TStreamRec = (
  94.     ObjType: 82;
  95.     VmtLink: Ofs(TypeOf(TRangeValidator)^);
  96.     Load: @TRangeValidator.Load;
  97.     Store: @TRangeValidator.Store
  98.   );
  99.  
  100.  
  101.  IMPLEMENTATION USES BBCONST , BBGUI , BBSTRRES , BBUTIL ;CONSTRUCTOR TFILTERVALIDATOR.INIT (AVALIDCHARS:TCHARSET);
  102. BEGIN INHERITED INIT(AVALIDCHARS );RESSTRID := SFILTERERROR ;END ;CONSTRUCTOR TFILTERVALIDATOR.LOAD (VAR S:TSTREAM);
  103. BEGIN INHERITED LOAD(S );S.READ (RESSTRID , SIZEOF (RESSTRID ));END ;PROCEDURE TFILTERVALIDATOR.ERROR ;BEGIN PRINTERROR
  104. (RSGET (RESSTRID ), 0 );END ;PROCEDURE TFILTERVALIDATOR.STORE (VAR S:TSTREAM);BEGIN INHERITED STORE(S );S.WRITE (RESSTRID
  105. , SIZEOF (RESSTRID ));END ;CONSTRUCTOR TRANGEVALIDATOR.INIT (AMIN,AMAX:LONGINT);BEGIN INHERITED INIT(AMIN , AMAX );
  106. RESSTRID := SRANGEERROR ;END ;CONSTRUCTOR TRANGEVALIDATOR.LOAD (VAR S:TSTREAM);BEGIN INHERITED LOAD(S );S.READ (RESSTRID
  107. , SIZEOF (RESSTRID ));END ;PROCEDURE TRANGEVALIDATOR.ERROR ;BEGIN PRINTERROR (RSGET2 (SRANGEERROR , MIN , MAX ), 0 );
  108. END ;PROCEDURE TRANGEVALIDATOR.STORE (VAR S:TSTREAM);BEGIN INHERITED STORE(S );S.WRITE (RESSTRID , SIZEOF (RESSTRID ));
  109. END ;CONSTRUCTOR TPXPICTUREVALIDATOR.INIT (CONST APIC:STRING ;AUTOFILL:BOOLEAN);BEGIN INHERITED INIT(APIC , AUTOFILL );
  110. RESSTRID := SPICTUREERROR ;END ;CONSTRUCTOR TPXPICTUREVALIDATOR.LOAD (VAR S:TSTREAM);BEGIN INHERITED LOAD(S );S.READ
  111. (RESSTRID , SIZEOF (RESSTRID ));END ;PROCEDURE TPXPICTUREVALIDATOR.ERROR ;BEGIN PRINTERROR (RSGET1 (RESSTRID , LONGINT
  112. (PIC )), 0 );END ;PROCEDURE TPXPICTUREVALIDATOR.STORE (VAR S:TSTREAM);BEGIN INHERITED STORE(S );S.WRITE (RESSTRID ,
  113. SIZEOF (RESSTRID ));END ;CONSTRUCTOR TREALVALIDATOR.INIT (AMIN,AMAX:REAL);
  114. BEGIN INHERITED INIT('[-]#[*#][.#[*#]][E[{-,+}]#[*#]]', FALSE );MIN := AMIN ;MAX := AMAX ;RESSTRID := SREALERROR ;
  115. DECIMALS := 4 ;END ;CONSTRUCTOR TREALVALIDATOR.LOAD (VAR S:TSTREAM);BEGIN INHERITED LOAD(S );S.READ (RESSTRID , SIZEOF
  116. (RESSTRID ));S.READ (MIN , SIZEOF (MIN ));S.READ (MIN , SIZEOF (MAX ));S.READ (DECIMALS , SIZEOF (DECIMALS ));END ;
  117. PROCEDURE TREALVALIDATOR.ERROR ;VAR Ol0100I,Ol0O01O:STRING ;BEGIN Ol0100I := STRIPSPC (STRR (MIN , 7 , 2 ));Ol0O01O :=
  118. STRIPSPC (STRR (MAX , 7 , 2 ));PRINTERROR (RSGET2 (RESSTRID , LONGINT (@ Ol0100I ), LONGINT (@ Ol0O01O )), 0 );END ;
  119. FUNCTION TREALVALIDATOR.ISVALID (CONST S:STRING ):BOOLEAN ;VAR OI1IO1O100Ol:REAL;OI0ll01lOOOl:INTEGER;BEGIN ISVALID :=
  120. FALSE ;IF INHERITED ISVALID(S )THEN BEGIN VAL (S , OI1IO1O100Ol , OI0ll01lOOOl );IF (OI0ll01lOOOl =0 )AND (OI1IO1O100Ol
  121. >= MIN )AND (OI1IO1O100Ol <= MAX )THEN ISVALID := TRUE ;END ;END ;PROCEDURE TREALVALIDATOR.STORE (VAR S:TSTREAM);
  122. BEGIN INHERITED STORE(S );S.WRITE (RESSTRID , SIZEOF (RESSTRID ));S.WRITE (MIN , SIZEOF (MIN ));S.WRITE (MAX , SIZEOF
  123. (MAX ));S.WRITE (DECIMALS , SIZEOF (DECIMALS ));END ;FUNCTION TREALVALIDATOR.TRANSFER (VAR S:STRING ;BUFFER:POINTER;
  124. FLAG:TVTRANSFER):WORD ;VAR OI1IO1O100Ol:REAL;OI0ll01lOOOl:INTEGER;BEGIN IF OPTIONS AND VOTRANSFER <> 0 THEN
  125. BEGIN TRANSFER := SIZEOF (OI1IO1O100Ol );CASE FLAG  OF VTGETDATA :BEGIN VAL (S , OI1IO1O100Ol , OI0ll01lOOOl );REAL
  126. (BUFFER ^):= OI1IO1O100Ol ;END ;VTSETDATA :BEGIN IF DECIMALS =0 THEN STR (REAL (BUFFER ^), S )ELSE STR (REAL (BUFFER
  127. ^):DECIMALS , S );IF S [ 1 ] =' 'THEN DELETE (S , 1 , 1 );END ;END ;END ELSE TRANSFER := 0 ;END ;
  128. PROCEDURE REGISTERBBVALIDATE ;BEGIN REGISTERTYPE (RFILTERVALIDATOR );REGISTERTYPE (RRANGEVALIDATOR );END ;END .
  129.