帕斯卡的长串

时间:2013-11-24 17:15:17

标签: pascal freepascal

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

3 个答案:

答案 0 :(得分: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;

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

最后,如果 因某种未知原因想要使用限制为255个字符的旧样式ShortString,请使用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; 声明:

{{1}}

答案 1 :(得分:4)

当您使用Free Pascal时,您无需担心这一点。您只需要将指令{$ H +}插入到源的开头。

{$H+}

var s: String;

begin
    s := StringOfChar('X', 1000);
    writeln(s);
end.

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

答案 2 :(得分:3)

您可以使用AnsiString type