【发布时间】:2016-08-05 05:14:21
【问题描述】:
在旧版本的 Delphi 中,如 D7,您可以像 ord(s[i]) 那样做,其中 s 是一个字符串,但尝试使用 AnsiString 会导致异常(访问冲突)。
附:我很长一段时间都在使用 delphi 7。
以下是重现错误的步骤: 创建一个新项目并通过表单上的备忘录(让它成为 memo1)而不是将以下代码添加到表单创建事件处理程序:
procedure TForm1.FormCreate(Sender: TObject);
var u: ansistring;
begin
u := 'stringtest';
memo1.Lines.Add(inttostr(ord(u[2])));
end;
对我来说,这段代码会产生一个 AV。
【问题讨论】:
-
string在 D7 是AnsiString。在较新版本中索引到AnsiString的行为没有改变。 -
这完全是不真实的。如果是这种情况,您的代码有问题,但显然没有您的代码,我们无法告诉您问题可能是什么。
-
我不明白为什么无法显示生成 AV 的代码。您是否害怕有人窃取您宝贵的思想成果以及其中包含的所有错误?
-
@Tom Brunberg 这是可能的,我已将代码添加到问题中。我想我应该首先这样做,请原谅我没有这样做。
标签: delphi char ansistring