Difference between revisions of "String"

From Free Pascal wiki
Jump to navigationJump to search
(Mention command line option for String alias control, link to documentation for command line options and compiler directives)
(note $mode setting effect on string alias, alias instead of synonym, length edit)
Line 1: Line 1:
 
{{String}}
 
{{String}}
  
'''String''' is a [[Type]] which may contain [[Character_and_string_types#AnsiChar|char]]acters. String is a synonym for [[Character_and_string_types#ShortString|ShortString]] or [[Character_and_string_types#AnsiString|AnsiString]] depending on the current compiler setting.
+
'''String''' is a [[Type|type]] which may contain [[Character_and_string_types#AnsiChar|char]]acters.  
 +
 
 +
==Alias==
 +
String is an alias for [[Character_and_string_types#ShortString|ShortString]] or [[Character_and_string_types#AnsiString|AnsiString]] depending on the current compiler setting.
  
 
If [[Compiler|compiler]] directive {$H} or [http://freepascal.org/docs-html/current/prog/progch1.html#x5-40001 compiler directive] {$LongStrings} is on ( {$H+}  or {$LongStrings ON} ), then a String type is the same as an AnsiString type, if not ( {$H-} or {$LongStrings OFF} ), it is a ShortString type. What String is an alias for can also be set by the -Sh [http://www.freepascal.org/docs-html/user/userap1.html command line option].  
 
If [[Compiler|compiler]] directive {$H} or [http://freepascal.org/docs-html/current/prog/progch1.html#x5-40001 compiler directive] {$LongStrings} is on ( {$H+}  or {$LongStrings ON} ), then a String type is the same as an AnsiString type, if not ( {$H-} or {$LongStrings OFF} ), it is a ShortString type. What String is an alias for can also be set by the -Sh [http://www.freepascal.org/docs-html/user/userap1.html command line option].  
  
The ShortString maximum length can be decided by the programmer (e.g. ''name : String[25];'') but is limited to 255 characters. If a ShortString length is not explicitly given, then the length is implicitly  set to 255.  
+
NOTE: The {$mode} compiler directive has an effect on the current setting for which type a String is an alias to. After the compiler mode is set to FPC, ObjFPC, MacPAS or TP, String will be an alias for ShortString. After the compiler mode is set to Delphi, String will be an alias for AnsiString. You can override the String setting of a particular mode by following the {$mode} directive with a compiler directive to set the String alias:
 +
 
 +
<syntaxhighlight>
 +
{$mode ObjFPC}  // String is an alias for ShortString
 +
{$H+}            // String is now an alias for AnsiString
 +
</syntaxhighlight>
 +
 
 +
==ShortString/AnsiString==
 +
The potential alias types for type String - ShortString and AnsiString - differ with respect to ''length'':
 +
 
 +
*ShortString has a ''fixed length'' that is decided by the programmer (e.g. ''name : String[25];'') but is limited to 255 characters. If a ShortString length is not explicitly given, then the length is implicitly  set to 255.  
 +
 
 +
*AnsiString has a ''variable length'' that is limited only by the value of High(SizeInt) (which is platfom dependant) and available memory.
 +
 
  
The length of an AnsiString is limited by the value of High(SizeInt) (which is platfom dependant) and available memory.
 
  
In the future, there might be a compiler switch to have the String type refer to a Unicode (UTF-8 or UTF-16) String type.
 
  
 
== See also ==
 
== See also ==

Revision as of 13:05, 10 July 2016

Deutsch (de) English (en) español (es) français (fr) русский (ru)

String is a type which may contain characters.

Alias

String is an alias for ShortString or AnsiString depending on the current compiler setting.

If compiler directive {$H} or compiler directive {$LongStrings} is on ( {$H+} or {$LongStrings ON} ), then a String type is the same as an AnsiString type, if not ( {$H-} or {$LongStrings OFF} ), it is a ShortString type. What String is an alias for can also be set by the -Sh command line option.

NOTE: The {$mode} compiler directive has an effect on the current setting for which type a String is an alias to. After the compiler mode is set to FPC, ObjFPC, MacPAS or TP, String will be an alias for ShortString. After the compiler mode is set to Delphi, String will be an alias for AnsiString. You can override the String setting of a particular mode by following the {$mode} directive with a compiler directive to set the String alias:

{$mode ObjFPC}   // String is an alias for ShortString
{$H+}            // String is now an alias for AnsiString

ShortString/AnsiString

The potential alias types for type String - ShortString and AnsiString - differ with respect to length:

  • ShortString has a fixed length that is decided by the programmer (e.g. name : String[25];) but is limited to 255 characters. If a ShortString length is not explicitly given, then the length is implicitly set to 255.
  • AnsiString has a variable length that is limited only by the value of High(SizeInt) (which is platfom dependant) and available memory.



See also


navigation bar: data types
simple data types

boolean byte cardinal char currency double dword extended int8 int16 int32 int64 integer longint real shortint single smallint pointer qword word

complex data types

array class object record set string shortstring