Steht in der Hilfe beschrieben:
Bei SET EXACT ON wird bis zur Länge der linken Zeichenkette verglichen und bei SET EXACT OFF wird bis zur Länge der rechten Zeichenkette verglichen.
Wenn die betreffende Zeichenkette leer ist, werden keine Zeichen verglichen (da ja nix zu vergleichen ist) und es wird .F. zurück gegeben.
So interpretiere ich die Hilfe - und dann würde auch SET EXACT ON nichts an dem falschen Ergebnis ändern, wenn die Inhalte der beiden Variablen (oder deren Reihenfolge beim Vergleich) ebenfalls vertauscht wären:
Code: Alles auswählen
SET EXACT OFF
IF UPPER(aPWert[i])<>UPPER(TRIM(anPWert[i]))
lchg := .T.
EXIT
ENDIF
SET EXACT ON
IF UPPER(anPWert[i])<>UPPER(TRIM(aPWert[i]))
lchg := .T.
EXIT
ENDIF
Müsste also beides "falsch" sein (von der Logik her) - kannst Du ja mal ausprobieren!
Sobald Du jedoch .NOT. ... == ... nutzt, bist Du aus dem Schneider.
Viele Grüße,
Martin