我只想知道CompareStr=之间在Delphi中比较字符串的区别。两者产生相同的结果。

if(str2[i] = str1[i]) then
  ShowMessage('Palindrome')

if(CompareStr(str2[i], str1[i]) = 0) then
  ShowMessage('Palindrome')


两者都显示消息回文。

最佳答案

当您只想查看两个字符串是否相等时,不要使用CompareStr,而要知道一个字符串相对于另一个字符串的比较时,请使用CompareStr。如果第一个参数第一个出现,它将以小于0的值返回小于0的值;如果第一个参数在第二个之后出现,则它将返回大于零的值。

没有str1,您可能会具有以下代码:

if str1[i] = str2[i] then begin
  // They're equal
end else if str1[i] < str2[i] then begin
  // str1 comes first
end else begin
  // str2 comes first
end;


两次比较str2CompareStr。使用CompareText,您可以删除一个字符串比较,然后将其替换为更便宜的整数比较:

x := CompareStr(str1[i], str2[i]);
if x = 0 then begin
  // They're equal
end else if x < 0 then begin
  // str1 comes first
end else begin
  // str2 comes first
end;


As Gerry's answer解释说,该函数在排序函数中特别有用,特别是因为它具有与其他比较函数(如AnsiCompareStr=)相同的接口。排序功能是template method,每个功能都用作比较strategy

如果您要做的只是测试是否相等,请使用CompareStr运算符-更易于阅读。当需要它提供的其他功能时,请使用。

10-04 20:10