2015-02-14 30 views

Odpowiedz

6

Łańcuch w stylu Pascala ma jeden bajt wiodący (length), a następnie length bajtów danych znakowych.

Oznacza to, że ciągi w stylu Pascala mogą kodować tylko ciągi o długości od 0 do 255 znaków (przy założeniu kodowania znaków jednobajtowych, na przykład ASCII).

Na marginesie, innym popularnym ciągiem kodowania jest łańcuchy w stylu C, które nie mają specyfikatora długości, ale używają bajtu zerowego do oznaczenia końca napisu. W związku z tym nie mają limitu długości.

Jeszcze inne kodowania mogą wykorzystywać większą liczbę bajtów prefiksu, aby ułatwić dłuższe łańcuchy. Terminatory bajtów/sentinele mogą być również używane wraz z przedrostkami długości.

+0

Ten opis jest poprawny, ale dotyczy tylko tradycyjnych ciągów Pascal. Modern Object Pascal dialekty, takie jak te w Delphi, Free Pascal i Lazarus obsługują mnóstwo typów łańcuchów z różnymi kodowaniami, a niektóre z nich bez ograniczenia długości. Zobacz http://wiki.freepascal.org/Character_and_string_types w celach informacyjnych. Zakładam jednak, że "ciągi Pascala" w dokumentacji Photoshopa odnoszą się do tradycyjnych ciągów Pascal. – jwdietrich

+0

Rzeczywiście, (raczej długowieczna) specyfikacja Photoshopa używa _Pascal string_ w miejsce bardziej precyzyjnego [_Pascal ShortString_] (http://wiki.freepascal.org/Character_and_string_types#ShortString). Dzięki za referencję. –

+0

Tylko Delphi zmieniło nazwę na "string" na shortstring, ponieważ wprowadziło ansistring. Pochodzenie łańcucha afaik to UCSD Pascal, patrz http://stackoverflow.com/questions/25068903/what-are-pascal-strings/25079998#25079998 –