Znakowe

SebaZ

Typ znakowy określa zbiór znaków. W zmiennej tego typu można zapamiętać kod pojedynczego znaku.

NazwaKró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.

AnsiChar

  • 2010-10-31 18:27
  • 0 komentarzy
  • 4542 odsłony

WideChar

  • 2010-10-31 18:27
  • 0 komentarzy
  • 4117 odsłon

Char

  • 2010-10-31 18:27
  • 1 komentarz
  • 6298 odsłon

1 komentarz

Od wersji D2009 Char=WideChar.