我希望能够使用一个很长的字符串(不超过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;
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)
使用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
| 归档时间: |
|
| 查看次数: |
7269 次 |
| 最近记录: |