Sign in Join
Wiki copytemporary

String/ru

Deutsch · English · Español · Français · Русский

String является типом данных, который может содержать символы.

Использование

pascal
var
  s, str1, str2, str3, str4: string;
  c: char;
  n: integer;

str1 := 'abc';     // присваивание
str2 := '123';     // строка содержит символы 1, 2 и 3
str3 := #13#10;    // cr lf (символы перевода строки и возврата каретки)
str4 := 'это строка, заключенная в ''кавычки''';  // использование кавычек внутри строки
s := str1 + str2;  // конкатенация (объединение) строк
c := s[1];         // использование индекса массива для доступа к символу
n := length( s );  // длина строки s

Синонимы

String является синонимом типам ShortString, AnsiString или UnicodeString (UTF16) в зависимости от настроек компилятора.

Если директивы компилятора {$H} или {$LongStrings} включены ( {$H+} или {$LongStrings ON} ), то тип String соответствует типу AnsiString, в случае если директивы выключены ( {$H-} или {$LongStrings OFF} ), то тип String соответствует типу ShortString. Какой тип строки является синонимом типа String также может быть установлено с помощью опции командной строки -Sh. Компилятор FPC также поддерживает директиву {$mode delphiunicode} для совместимости с Delphi UTF16.

Примечание: директива компилятора {$mode} также устанавливает синоним типа String. После указания режима компилятора FPC (по умолчанию), ObjFPC, MacPAS или TP тип String будет эквивалентен типу ShortString. После указания режима компилятора Delphi тип String будет эквивалентен типу AnsiString. Таким образом настройка параметра синонима для типа String должна быть выполнена после указания режима компилятора, чтобы предотвратить её переопределение:

pascal
{$H+}            // тип String является синонимом типа AnsiString
{$mode ObjFPC}   // также влияет на синоним типа String - после данной директивы тип String будет синонимом типа ShortString
{$H+}            // тип String снова является синонимом типа AnsiString

Переменная типа String, объявленная с указанием длины, всегда будет эквивалентна типу ShortString, независимо от настройки компилятора для синонима типа String.

pascal
{$H+}            // тип String является синонимом типа AnsiString
var
   name : String[25]; // переменная name является ShortString, поскольку указание длины переопределяет настройку синонима

Учтите, что все типы longstring являются управляемыми, в то время как тип ShortString таковым не является: у него нет счетчика ссылок.

Строковые типы

Различные строковые типы - ShortString, AnsiString, WideString и UnicodeString - отличаются максимальной длиной строки и её содержимым:

Note that BWSTR types rely on COM marshaling or - when used alone - copy semantics instead of reference counting. In a COM context they are governed by the COM marshaling subsystem if available. (i.e. Windows)

См. также


From the Free Pascal wiki, page "String/ru", as it stood on 2022-10-24 after a change by HappyLive6, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.

Revision 1, last changed by WikiArchive .

Talk about this page

Nobody has opened a bench for this page yet. Sign in to open one.