我有一個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