The key difference is, 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.
program byteDemo(input, output, stderr); var foo: byte; bar: char; begin // those two assignments are physically the same foo := 65; bar := 'A'; // although they are the same action, // the following would be illegal //foo := 'A'; //bar := 65; end.
The use of byte or byte as a data type provides better documentation as to the purpose of the use of the particular variable.
conversion to and from character
The above program corrected to legal use:
program ordChrDemo(input, output, stderr); var foo: byte; bar: char; begin foo := 65; bar := 'A'; foo := ord('A'); // chr(65) is equivalent to #65 bar := chr(65); bar := #65; // alternatively: typecasts // typecasts of constant expressions // are guaranteed to happen at compile-time foo := byte('A'); bar := char(65); end.
program binStrDemo(input, output, stderr); var foo: byte; begin foo := 10; writeLn(binStr(foo, 8)); end.
The output is:
A more versatile function is intToBin provided by the strUtils unit.
|simple data types|
|complex data types|