我有一个Delphi 5遗留应用程序,并有一部分“字符串”值已分配给“OleVariant”变量。是这样的:德尔福5 OleVariant和字符串分配
var
X: OleVariant;
S: string;
Begin
S:= ‘This string should contain 200 characters as per design’;
X:= S;
End;
如果“S”的长度大于128,则“X”的值被截断,它仅保持最多128个字符。
有没有办法解决这个问题?我相信有一种方法,因为如果我从头开始创建自己的演示应用程序(在同一台PC上,使用相同的Delphi 5),它允许我传递更长的字符串值并且不会截断。
也许这是关于项目设置或编译器指令。我玩过这个想法,但我还没有解决方法。
任何帮助表示赞赏。谢谢。
演示:
procedure TForm1.Button1Click(Sender: TObject);
var
X: OleVariant;
S: string;
begin
//in the Edit I pass a string of 240 chars, let's say;
S:= Edit1.Text;
X:= S;
ShowMessage(IntToStr(Length(X)) + ' : ' + IntToStr(Length(S)));
//this showmessage shows "128 : 240"
end;
请复制并粘贴* real *代码来演示您声明的内容。我希望有一些代码可以指定一个* actual * 200字符长的字符串变量,还有一些代码可以测量OleVariant值的长度并打印出值128。如果这不是您确定存在问题的方式,那么请描述您做了什么*以得出结论“X”只有128个字符长。 – 2012-03-06 20:49:42
看看描述。我添加了更多的代码。如果您调试并跟踪应用程序(在调试时检查X和S),您也可以注意到问题。 – Yanniel 2012-03-06 21:01:28
我在Delphi 4(Windows 95)中试过这个,并且字符串是* not * truncated。 – 2012-03-06 21:03:47