Skip to main content

Pascal Script: Types

TODO: Review

This page lists and explains all supported types in Pascal Script used within ReNamer.

Integer types

Integer types store whole numbers and are used for counting, indexing, and arithmetic operations. Choose the appropriate size based on the range of values you need to represent.

Type Size Minimum Value Maximum Value
Byte 1 byte 0 255
ShortInt 1 byte -128 127
Word 2 bytes 0 65,535
SmallInt 2 bytes -32,768 32,767
Cardinal 4 bytes 0 4,294,967,295
Integer 4 bytes -2,147,483,648 2,147,483,647
Int64 8 bytes -9,223,372,036,854,775,808 9,223,372,036,854,775,807

Floating point types

Floating point types store decimal numbers and are used for calculations requiring fractional values or very large/small magnitudes.

Type Size Smallest Number Largest Number
Single 4 bytes 1.5 x 10-45 3.4 x 1038
Double 8 bytes 5.0 x 10-324 1.7 x 10308
Extended 10 bytes 3.6 x 10-4951 1.1 x 104932

String types

String types store text and sequences of characters.

Type Description
Char Stores a single 8-bit character.
String Holds a sequence of 8-bit characters. Commonly used for ANSI or UTF-8 encoded text.
AnsiChar Alias for Char type.
AnsiString Alias for String type.
WideChar Stores a single 16-bit character.
WideString Holds a sequence of 16-bit characters. Commonly used for UCS-2 or UTF-16 encoded text.
UnicodeChar Alias for WideChar type.
UnicodeString Alias for WideString type.

The default encoding for String/AnsiStringString type and the conversion process to/from UnicodeString/WideString type differ between versions of ReNamer.

ReNamer version Default encoding for AnsiStringString type Conversion between WideString and AnsiStringString types
7.0 and later UTF8UTF-8 Automatic, on assignment
Prior to 7.0 Active system code page Manual, using conversion functions

The Unicode article highlights the differences between various encodings.

Mixed types

Type Description
Boolean Logical value which can be either True andor False.
Array Single and multi dimensional indexable sequence of data.
Record A structure that holds a set of different data types.
Variant FlexibleType type whichthat can holdstore anyvalues data.of different types and convert between them at runtime.
PChar Pointer to a Char value, and can also be used to point to characters within a string.

A few examples:

type
  TPerson = record
    Name: WideString;
    Age: Integer;
  end;
var
  Person: TPerson;
  Numbers: Array of Integer;

Extra types

Several extra types have been defined to simplify the use of some functions.

Type Declared as Description
TDateTime Double Represents a date and time.
TStringsArray Array of WideString Indexed list of WideString values.

Deprecated in v5.74.4 Beta. Please use TWideStringArray instead.
TWideStringArray Array of WideString Indexed list of WideString values.

Added in v5.74.4 Beta. Replaces ambiguous TStringsArray type.
TAnsiStringArray Array of AnsiString Indexed list of AnsiString values.

Added in v5.74.4 Beta.
TIntegerArray Array of Integer Indexed list of Integer values.

Added in v7.3.0.4 Beta.

Enumerations and Sets

An enumeration is simply a fixed range of named values.

For example, the fundamental Boolean data type can be considered as an enumeration consisting of two values: True and False.

A variable of an enumeration type can be assigned a single value from the enumeration.

type
  TDay = (Mon, Tue, Wed, Thu, Fri, Sat, Sun);
var
  Day: TDay;
begin
  Day := Mon;
  if Day <> Tue then
    Day := Wed;
end.

Sets allow you to defineddefine variables which can hold multiple values out of the enumeration.

type
  TDay = (Mon, Tue, Wed, Thu, Fri, Sat, Sun);
  TDays = set of TDay;
var
  Days: TDays;
begin
  Days := [Mon, Tue, Wed];
  if Sun in Days then
    Days := Days - [Sun];
end.