Difference between revisions of "Byte"

From Free Pascal wiki
Jump to navigationJump to search
(Char->AnsiChar versus Char->WideChar; casting conversions)
Line 1: Line 1:
 
{{Byte}}
 
{{Byte}}
  
A '''byte''' is an unsigned [[Integer|integer]] in the range of '''0 .. 255'''. A byte is '''8 bits''' long. A byte and a [[Char|char]] are the same thing, except a byte can only be referred to as a numeric [[Type|type]], while a char can be used as a character, or as part of a string type, and cannot be used in an arithmetic expression.
+
A '''byte''' is an unsigned [[Integer|integer]] in the range of '''0 .. 255'''. A byte is '''8 bits''' long. A byte and a [[Char|char]] are the same thing as of version 3 of Free Pascal, except a byte can only be referred to as a numeric [[Type|type]], while a char can be used as a character, or as part of a string type, and cannot be used in an arithmetic expression. A byte will always be the same size as an [[AnsiChar]], but in the future Char may be considered a synonym for [[WideChar]], not AnsiChar.
  
 
For example:
 
For example:
Line 25: Line 25:
 
   c := 65;  ch := 'A'; { are the same action, and are legal }
 
   c := 65;  ch := 'A'; { are the same action, and are legal }
 
   c := ord('A'); ch := Chr(65); { now legal ... ch := Chr(65); is equivalent to ch := #65}
 
   c := ord('A'); ch := Chr(65); { now legal ... ch := Chr(65); is equivalent to ch := #65}
 +
  c := Byte('A'); ch := Char(65); { now legal and guaranteed to happen at compiler time }
 
end.
 
end.
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
{{Data types}}
 
{{Data types}}

Revision as of 07:28, 12 June 2016

Deutsch (de) English (en) español (es) suomi (fi) français (fr) italiano (it) русский (ru) 中文(中国大陆)‎ (zh_CN)

A byte is an unsigned integer in the range of 0 .. 255. A byte is 8 bits long. A byte and a char are the same thing as of version 3 of Free Pascal, except a byte can only be referred to as a numeric type, while a char can be used as a character, or as part of a string type, and cannot be used in an arithmetic expression. A byte will always be the same size as an AnsiChar, but in the future Char may be considered a synonym for WideChar, not AnsiChar.

For example:

var 
  c: byte; 
  ch: char;
begin
  c := 65;  ch := 'A';  { are the same action, and are legal }
  c := 'A'; ch := 65;   { while they are the same action, this is illegal }
end.

The use of byte or char as a data type provides better documentation as to the purpose of the use of the particular variable. The byte type can be coerced to char by using the chr function. Char type values can be coerced to byte by using the ord function

The above program corrected to legal use:

var 
  c: byte; 
  ch: char;
begin
  c := 65;  ch := 'A'; { are the same action, and are legal }
  c := ord('A'); ch := Chr(65); { now legal ... ch := Chr(65); is equivalent to ch := #65}
  c := Byte('A'); ch := Char(65); { now legal and guaranteed to happen at compiler time }
end.


navigation bar: data types
simple data types

boolean byte cardinal char currency double dword extended int8 int16 int32 int64 integer longint real shortint single smallint pointer qword word

complex data types

array class object record set string shortstring