Znakowe
SebaZ
Typ znakowy określa zbiór znaków. W zmiennej tego typu można zapamiętać kod pojedynczego znaku.
Nazwa | Krótki opis |
[[Delphi/Char]] | Kod [1 bajtowy] jednego znaku ASCII (0..255) |
[[Delphi/AnsiChar]] | Kod [1 bajtowy] jednego znaku ASCII (0..255) - równoznaczny z [[Delphi/Char]] |
[[Delphi/WideChar]] | Kod [2 bajtowy] jednego znaku Unicode (UCS-2) (0..65535) |
[[Delphi/UCS2Char]] | Kod [2 bajtowy] jednego znaku Unicode (UCS-2) (0..65535) - równoznaczny z [[Delphi/WideChar]] |
[[Delphi/UCS4Char]] | Kod [4 bajtowy] jednego znaku Unicode (UCS-4) (0..4294967295) - równoznaczny z [[Delphi/LongWord]] |
Mimo, iż niektóre systemy operacyjne (z rodziny Linux) obsługują Multi-Byte Character Strings (MBCS) ze znakami 4 bajtowymi (UCS-4), język Delphi pozwala jedynie na wbudowaną obsługę MBCS 2 bajtowych (UCS-2).
Obsługa Unicode (UCS-4) została osiągnięta przez utworzenie typu UCS4Char pochodnego z LongWord - wyjątkowo jest to typ liczbowy, a nie znakowy.
Przykład przypisania znaku o wybranym kodzie:
program Przyklad;
{$APPTYPE CONSOLE}
var C: Char;
A: AnsiChar;
W: WideChar;
U2: UCS2Char;
U4: UCS4Char;
begin
//Przypisanie znaku o kodzie 50
C := #50;
A := #50;
w := #0050;
U2 := #0050;
U4 := 00000050; //Typ liczbowy!
WriteLn(SizeOf(C));
WriteLn(SizeOf(A));
WriteLn(SizeOf(W));
WriteLn(SizeOf(U2));
WriteLn(SizeOf(U4));
end.
Łańcuchy Unicode (UTF-8) są obsługiwane jako typ łańcuchowy String i nie posiadają specjalnego typu znakowego.
Od wersji D2009 Char=WideChar.