Tree 反復の比較演算子があります。AnsiString 変数を使用します。私の問題は、値が等しいように見えるときに、等しいインジケーターを取得していないことです (別名、System.AnsiStrings.CompareStr から 0 を取得していません)。デバッガーを介して変数を確認し、コードをステップ実行しました。両方の変数は AnsiString であり、両方とも同じ値で、スペースはありません。CompareStr は、それが役立つ場合は -65 を返します。
私は何を見落とすことができますか?これが私のコードです。
function CompareNodes(idVal: pointer; ANode: TALStringKeyAVLBinaryTreeNode): Integer;
var
Key1, Key2: AnsiString;
begin
Key1 := PAnsiString(idVal)^;
Key2 := ANode.ID;
Result := System.AnsiStrings.CompareStr(Key1, Key2);
end;