Typy danych » Łańcuchowe

WideString

WideString - typ łańcuchowy języka Delphi

Typ WideString, podobnie jak typ AnsiString posiada teoretycznie nieograniczoną "pojemność" (~2^30 znaków, co przekłada się na 4 bajty - 2 GB pamięci). W odróżnieniu od AnsiString, typ WideString służy do przechowywania tekstu kodowanego w systemie Unicode.

W Delphi dla Win32, typ String wskazywał na AnsiString; w Delphi dla .NET String wskazuje na WideString

Typ WideString jest tablicą znaków, tzn. do każdego elementu łańcucha (znaku) można odwoływać się podobnie jak do tablic:

program Foo;
 
{$APPTYPE CONSOLE}
 
 
const
  Bar : WideString = 'Hello World';
var
  i : Integer;
begin
  for I := 1 to Length(Bar) do
    Writeln(I, ': ', Bar[i]);
 
  Readln;
end.


Na podstawie tego co powiedzieliśmy, do dowolnego znaku można odwołać się poprzez Foo[n] gdzie n to numer znaku (1 oznacza pierwszy znak w łańcuchu). Pojedyńczy znak WideString wskazuje na typ WideChar:

const
  Bar : WideString = 'Hello World';
var
  S : WideChar;
begin
  S := Bar[1];
end.


Łańcuch WideString jest zawsze zakończony znakiem #0, dlatego można w łatwy sposób rzutować go na PWChar. W przeciwieństwie jednak do tego drugiego, może zawierać znaki #0 (dla PWChar znak #0 oznacza koniec łańcucha).

Długość łańcucha znajduje się, podobnie jak dla AnsiString, na pozycji "4 bajty przed łańcuchem" - funkcja Length zwraca właśnie tą wartość, nie obliczając za każdym wywołaniem długości łańcucha. Jednakże w odróżnieniu od AnsiString, długość WideString jest przechowywana jako ilość bajtów a nie znaków, dlatego funkcja Length dzieli tą liczbę przez 2 i podaje długość łańcucha w znakach.

Zobacz też: