Mega Code Archive

 
Categories / Delphi / Keywords
 

Const - starts the definition of fixed data values

1 Const Name1 = Expression1; {...} 2 Const Name1 Type = Expression1; {...} 3 Name (Const Const1 : type {;...}); Description The Const keyword is used to start a section of constant definitions. The section is terminated by the next keyword in a program. Within the section, one or more constants may be defined. These can be a mixture of normal or typed constants: 1.Normal constants These give a name Name1 to a fixed expression, Expression1. The expression must resolve into one of the following types: Integer number Floating point number Character String Set Enumerated value 2.Typed constants These are very odd. They are constant only in the sense that their value persists all parts of a program. Yet it can be changed (as long as the compiler directive {WriteableConst} is set On). They are used, for example, when a routine needs to hold values that are preserved across calls. It is better to use Object Oriented principles to allow data to be preserved across accesses. 3.Constant routine parameters When passing data to a routine (function or procedure), you can prefix the parameter definition with Const if the value is never updated. This marginally improves performance, clarifies routine operation, and prevents accidental updates of the value. Related commands Function Defines a subroutine that returns a value Out Identifies a routine parameter for output only Procedure Defines a subroutine that does not return a value Type Defines a new category of variable or process Var Starts the definition of a section of data variables Example code : Illustrating the different constant types Const MAX_LINES = 3; CRUDE_PI = 22/7; HELLO = 'Hello World'; LETTERS = ['A'..'Z', 'a'..'z']; DECISION = True; var i : Integer; begin // Display our crude value of Pi ShowMessage('Crude Pi = '+FloatToStr(CRUDE_PI)); // Say hello to the WOrld ShowMessage(HELLO); // Display MAX_LINES of data for i := 1 to MAX_LINES do begin // Do some checking - note that Char(i+64) = 'A' if DECISION and (Char(i+63) in LETTERS) then ShowMessage(Char(i+63)+' is a letter') else ShowMessage(Char(i+63)+' is not a letter'); end; end; Show full unit code Crude Pi = 3.14285714285714 Hello World @ is not a letter A is a letter B is a letter Example code : Preserving a number value across calls to a routine var i : Integer; begin for i := 1 to 8 do ShowMessage('Number = '+IntToStr(GetNextNumber)); end; // Get the next number from a given sequence function TForm1.GetNextNumber: Integer; type // Define a range of numbers returnable by this routine TNumbers = 0..5; Const // A typed constant is really a persistent variable : // It's value is preserved across calls to this routine. {$WriteableConst On} nextNumber : TNumbers = 0; // Start at the beginning begin // Return the current value result := nextNumber; // Increment to the next value nextNumber := (nextNumber + 1) MOD 6; end; Show full unit code Number = 0 Number = 1 Number = 2 Number = 3 Number = 4 Number = 5 Number = 0 Number = 1