我有两个字符串,需要比较它们是否相等。
第一个字符串是这样创建的:
这是日志输出:
第一个字符串是这样创建的:
var
inBuf: array[0..IN_BUF_SIZE] of WideChar;
stringBuilder : TStringBuilder;
mystring1:string;
...
begin
stringBuilder := TStringBuilder.Create;
for i := startOfInterestingPart to endOfInterestingPart do
begin
stringBuilder.Append(inBuf[i]);
end;
mystring1 := stringBuilder.ToString();
stringBuilder.Free;
字符串2是一个常量字符串'ABC'
。
当字符串1在调试控制台中显示时,它等于'ABC'。但以下比较
AnsiCompareText(mystring1, 'ABC')
mystring1 = 'ABC'
CompareStr(mystring1, 'ABC')
都报告不相等。
我想我需要将字符串2 ('ABC'
) 转换为与字符串1相同的类型。
我该怎么做?
更新 26.09.2012:
aMessage
在日志输出中显示为{FDI-MSG-START-Init-FDI-MSG-END}
以下是打印字符串长度的代码:
StringToWideChar('{FDI-MSG-START-Init-FDI-MSG-END}', convString, iNewSize);
...
OutputDebugString(PChar('Len (aMessage): ' + IntToStr(Length(aMessage))));
OutputDebugString(PChar('Len (original constant): ' + IntToStr(Length('{FDI-MSG-START-Init-FDI-MSG-END}'))));
OutputDebugString(PChar('Len (convString): ' + IntToStr(Length(convString))));
这是日志输出:
[3580] Len (aMessage): 40
[3580] Len (original constant): 32
[3580] Len (convString): 0
AnsiCompareText(mystring1, 'ABC')
报告相等,而在另一台机器上则不是。在两种情况下,mystring1 都来自于一个 C# 应用程序(在两台机器上,C# 应用程序都在 Visual Studio 10 中运行)。唯一的区别是操作系统 - 在它正常工作的机器上,它是 Windows 7,在另一台机器上(它无法工作),它是 Windows XP Professional,版本为 2002,服务包 3。 - Glory to Russia