帕斯卡的长串

Jam*_*mes 2 pascal freepascal

我希望能够使用一个很长的字符串(不超过100000个符号).据我所知,典型的字符串变量最多只能包含256个字符.有没有办法存储这么长的字符串?

Ken*_*ite 5

旧式(Turbo Pascal或Delphi 1)字符串(现在称为)ShortString限制为255个字符(字节0保留为字符串长度).这似乎仍然是FreePascal的默认值(根据@ MarcovandeVoort的评论如下).不过,请继续阅读,直到您进入AnsiString下面的讨论和代码示例.:-)

目前,Pascal的大多数其他方言我都知道默认为AnsiString(长字符串的单字节字符)或UnicodeString(长字符串的多字节字符).这些都不限于255个字符.

当前版本的Delphi默认UnicodeString为默认类型,因此声明string变量实际上很长UnicodeString.字符串长度没有实际的上限:

var
  Test: string;  // Declare a new Unicode string
begin
  SetLength(Test, 100000);   // Initialize it to hold 100000 characters
  Test := StringOfChar('X', 100000);  // Fill it with 100000 'X' characters
end;
Run Code Online (Sandbox Code Playgroud)

如果要强制使用单字节字符(但不限于255个字符串),请使用AnsiString(string如果使用{$H+}编译器指令,可以将其设置为FreePascal中的默认类型- 感谢@MarcovandeVoort):

var
  Test: AnsiString;  // Declare a new Ansistring
begin
  SetLength(Test, 100000);   // Initialize it to hold 100000 characters
  Test := StringOfChar('X', 100000);  // Fill it with 100000 'X' characters
end;
Run Code Online (Sandbox Code Playgroud)

最后,如果你一些未知的原因要使用的老式ShortString被限制在255个字符,声明它正因为如此,无论是使用ShortString还是老风格String[Size]的声明:

var
  Test: ShortString;  // Declare a new short string of 255 characters
  ShortTest: String[100];  // Also a ShortString of 100 characters
begin
  // This line won't compile, because it's too large for Test
  Test := StringOfChar('X', 100000);  // Fill it with 100000 'X' characters
end;
Run Code Online (Sandbox Code Playgroud)


kie*_*997 5

使用Free Pascal时,您不必为此担心。您只需要在源代码的开头插入指令{$ H +}。

{$H+}

var s: String;

begin
    s := StringOfChar('X', 1000);
    writeln(s);
end.
Run Code Online (Sandbox Code Playgroud)

当然,您可能需要使用{$mode objfpc}{$coperators}http://www.freepascal.org/docs-html/prog/progch1.html