I coded one descendant class of TStringField where I modify the GetAsAnsiString method to result in anonymized data.
But my code is used only when I declare persistent fields in Fields Editor of TOraQuery. If I did not declare these persistent fields, my implementation isn't called.
I need that the behavior is the same, independent of TOraQuery having persistent fields or not.
Could someone help me, please?
See above my modified class:
Code: Select all
unit AnonymousFields;
interface
uses DB, Sysutils, Classes;
type
TStringField = class(DB.TStringField)
public
//function GetValue(var Value: AnsiString): Boolean;
function GetAsAnsiString: AnsiString; override;
end;
TWideStringField = class(TStringField)
public
//function GetValue(var Value: AnsiString): Boolean;
function GetAsString: string; override;
function GetAsAnsiString: AnsiString; override;
function GetAsWideString: UnicodeString; override;
end;
TDateTimeField = class(DB.TDateTimeField)
public
function GetAsString: string; override;
function GetAsDateTime: TDateTime; override;
procedure GetText(var Text: string; DisplayText: Boolean); override;
end;
implementation
{ TStringField }
function TStringField.GetAsAnsiString: AnsiString;
begin
inherited;
Result := '$$$$$$$$$$';
end;
{ TWideStringField }
function TWideStringField.GetAsAnsiString: AnsiString;
begin
inherited;
Result := '##########';
end;
function TWideStringField.GetAsString: string;
begin
inherited;
Result := '##########';
end;
function TWideStringField.GetAsWideString: UnicodeString;
begin
inherited;
Result := '##########';
end;
{ TDateTimeField }
function TDateTimeField.GetAsDateTime: TDateTime;
begin
inherited;
Result := 0;
end;
function TDateTimeField.GetAsString: string;
begin
inherited;
Result := '**********';
end;
procedure TDateTimeField.GetText(var Text: string; DisplayText: Boolean);
begin
inherited;
text := '**/**/****';
end;
end.