Guter Tipp.
Habe das jetzt so gelöst.
Code:
TPerlre = class(TPerlRegEx)
private
class var FRttiContext : TRttiContext;
FStaticCharTable : Pointer;
FSCTField : TRttiField;
...
class constructor TPerlre.create;
begin
FStaticCharTable := pcre_maketables;
FSCTField:=FRttiContext.GetType(TPerlRe).GetField('FCharTable');
end;
constructor TPerlre.Create(doStudy: boolean; opts: integer);
begin
FSCTField.SetValue(Self,TValue.From<Pointer>(FStaticCharTable));
...
end;
procedure TPerlre.BeforeDestruction;
begin
inherited;
FSCTField.SetValue(Self,TValue.From<Pointer>(nil)); // Weil TPerlRegEx.destroy sonst FCharTable freigeben will
end;
Das GetField musste noch weg, weil das ne Stringliste durchackert.