Der Grund ist sehr einfach:
In Delphi 7 hatte TCriticalSection noch kein TryEnter, mittlerweile in neueren Versionen aber schon.
Deine Variable, in der du die Instanz gespeichert hast (hier TestCS), ist sicher vom Typ TCriticalSection. Deshalb wird in neueren Versionen die Methode TCriticalSection.TryEnter statt deiner Implementierung aufgerufen. Denn die Methode ist ja nicht überschrieben, weshalb deine Methode nur aufgerufen würde, wenn deine Variable auch deine abgeleitete Klasse als Typ hätte.
Naja....
Das Projekt wird immer noch mit Delphi 7 kompiliert wie in der Information zum Post angegeben (wie nennt man das, was man beim ersten Post angibt?)
Und nein, die Variable ist nicht TCriticalSection direkt, sondern vom Typ meiner Klasse - steht auch im Code (und ja, da ist ein = zuviel, Typo beim Übertragen hierher):
Im Programm gibts wird sie dann so eingesetzt:
Delphi-Quellcode:
var TestCS:=TTestCriticalSection;
//[...]
if not TestCS.TryEnter then begin
Log('Could not enter CS - Error');
//[ErrorHandling]
end;
Ist der Grund dann immer noch einfach? Mir erschließt er sich nämlich nicht...
Luggi