Der TStringField hat das AsString überladen/verdeckt und gibt .... [edit] ok, dachte war beim AsString, aber es mehrere Überladungen, wo der eigentliche Property
überschrieben verdeckt wird.
Delphi-Quellcode:
TStringField = class(TField)
...
{$IFNDEF NEXTGEN}
function GetValue(var Value: AnsiString): Boolean;
{$ELSE}
function GetValue(var Value: string): Boolean;
{$ENDIF !NEXTGEN}
...
{$IFNDEF NEXTGEN}
property Value: AnsiString read GetAsAnsiString write SetAsAnsiString;
{$ENDIF !NEXTGEN}
end;
TWideStringField = class(TStringField)
...
property Value: string read GetAsWideString write SetAsWideString;
end;
Da kommt es dann auch noch drauf an, ob du direkt eine Variable/FormField vom "richtigen" TField-Nachfahren oder eine Variable/Result, z.B. vom FieldByName, als allgemeines TField verwendest, wo du plötzlich unterschiedliche Property und somit auch ein anderes Verhalten nutzt.