我希望能够使用一个相当长的字符串(不超过 100000 个符号)。 据我所知,典型的字符串变量最多只能包含 256 个字符。 有没有办法存储这么长的字符串?
最佳答案
旧式(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
(可以将其设置为FreePascal中默认的string
类型)如果您使用 {$H+}
编译器指令 - 感谢@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;
关于pascal - 帕斯卡中的长字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20177412/