2つの文字列があり、等しいかどうかを比較する必要があります。
文字列1は次のように作成されます。
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')
すべてが不平等を報告しています。
'ABC'
文字列2( )を文字列1と同じ型に変換する必要があると思います。
どうやってやるの?
2012年9月26日更新:
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