thread schon etwas älter, aber ich häng mich hier mal mit einem follow-up dran.
habe zurzeit mal mit dem TVirtualMethodInterceptor experimentiert, was auch sehr gut klappt. Allerdings habe ich mit groben speicherlöchern zu tun, falls ich zum bleistift die
RTTI-Attribute einer methode abfragen möchte um die dann zu intercepten:
Delphi-Quellcode:
Procedure Dopassword(Instance: Tobject; Method: Trttimethod;
Const Args: TArray<TValue>; Out DoInvoke: Boolean; Out Result: TValue);
Var
Pw: String;
attr:tcustomattribute;
//Attributes: Tarray<Tcustomattribute>;
Begin
if True then
Doinvoke := True;
Begin
attributes:= Method.GetAttributes Do; //<<<< produziert bei mir ein speicherleck, auch wenn ich erst das getattribute einer (lokalen)tarray-variable zuweise
//For {Var //inline ab 10.1} Attr In Attributes Do
//If Attr Is Passwordprotectedattribute
//Then
//do some checks>> einfach mal so eingefügt als beispiel:
//Begin
//Writeln('change password protected.');
//Readln(Pw);
//If Pw <> 'login'
//Then
//Doinvoke := False;
//End;
End;
//Setlength(Attributes, 0);
End;
Ist das normal? (abgesehen davon dass Lecks nicht "normal" sein sollten), kann ich das umgehen?