XE里, TStringField 还是 ansi的

{ TStringField }

  TStringField = class(TField)
  private
    FFixedChar: Boolean;
    FTransliterate: Boolean;
  protected
    class procedure CheckTypeSize(Value: Integer); override;
    function GetAsBCD: TBcd; override;
    function GetAsBoolean: Boolean; override;
    function GetAsDateTime: TDateTime; override;
    function GetAsSingle: Single; override;
    function GetAsFloat: Double; override;
    function GetAsExtended: Extended; override;
    function GetAsInteger: Longint; override;
    function GetAsLargeInt: Largeint; override;
    function GetAsSQLTimeStamp: TSQLTimeStamp; override;
    function GetAsString: string; override;
    function GetAsAnsiString: AnsiString; override;
    function GetAsVariant: Variant; override;
    function GetDataSize: Integer; override;
    function GetDefaultWidth: Integer; override;
    procedure GetText(var Text: string; DisplayText: Boolean); override;
    function GetValue(var Value: AnsiString): Boolean;
    procedure SetAsBCD(const Value: TBcd); override;
    procedure SetAsBoolean(Value: Boolean); override;
    procedure SetAsDateTime(Value: TDateTime); override;
    procedure SetAsSingle(Value: Single); override;
    procedure SetAsFloat(Value: Double); override;
    procedure SetAsExtended(Value: Extended); override;
    procedure SetAsInteger(Value: Longint); override;
    procedure SetAsLargeInt(Value: Largeint); override;
    procedure SetAsSQLTimeStamp(const Value: TSQLTimeStamp); override;
    procedure SetAsString(const Value: string); override;
    procedure SetAsAnsiString(const Value: AnsiString); override;
    procedure SetVarValue(const Value: Variant); override;
  public
    constructor Create(AOwner: TComponent); override;
    property Value: AnsiString read GetAsAnsiString write SetAsAnsiString;
  published
    property EditMask;
    property FixedChar: Boolean read FFixedChar write FFixedChar default False;
    property Size default 20;
    property Transliterate: Boolean read FTransliterate write FTransliterate default True;
  end;

{ TWideStringField }

  TWideStringField = class(TStringField)
  protected
    class procedure CheckTypeSize(Value: Integer); override;
    procedure CopyData(Source, Dest: Pointer); override;
    function GetAsAnsiString: AnsiString; override;
    function GetAsString: string; override;
    function GetAsVariant: Variant; override;
    function GetAsWideString: UnicodeString; override;
    function GetDataSize: Integer; override;
    procedure GetText(var Text: string; DisplayText: Boolean); override;
    function GetValue(var Value: UnicodeString): Boolean;
    procedure SetAsAnsiString(const Value: AnsiString); override;
    procedure SetAsString(const Value: string); override;
    procedure SetVarValue(const Value: Variant); override;
    procedure SetAsWideString(const Value: UnicodeString); override;
  public
    constructor Create(AOwner: TComponent); override;
    property Value: UnicodeString read GetAsWideString write SetAsWideString;
  end;
时间: 2024-12-10 20:47:05

XE里, TStringField 还是 ansi的的相关文章

Delphi XE里的StrPas要注意哦(要让StrPas知道哪里是字符串结束)

废话不多说了,直接上例子解说: procedure TForm1.Button1Click(Sender: TObject);var  aa: array[0..1]of AnsiChar;  bb1: string;begin  aa[0] := AnsiChar('1');  aa[1] := AnsiChar('2'); bb1 := StrPas(aa);  ShowMessage(bb1);    //这里显示不正确end; procedure TForm1.Button1Click(

delphi7和XE下 获取路径

XE里没有Application.Exename所以用paramstr(0); Str:=ParamStr(0); //自己全路径c:\555\qq.exe,可用于控制台Str:=ExpandFileName(ParamStr(0));   //获取本程序的完整路径 c:\qq\2.exeStr:=ExtractFileDir(ParamStr(0)); //获取本程序的路径 c:\qq Str:=application.Exename; //获取本程序的完整路径 c:\qq\2.exe,和第1

delphi常用快捷键(我自己经常使用的)

代码编辑器: Home 回到当前行的头部 End 回到当前行的尾部 Insert 插入代码,覆盖后面的代码,(按回车无效), 再按撤回效果 Delete 删除 F1 双击一个单词后,按F1调用自带的Library 参考函数引用单元及用法 F2 在Project上可重命名 Ctrl + Home 回到代码头部 Ctrl + End 回到代码底部 Ctrl + Tab 切换代码页 Ctrl + Shift + U 选中行左移Tab键(兼容) Ctrl + Tab 选中行左移Tab键(XE里可以用,D

Delphi调用Android的.so文件(转)

原地址:http://zhidao.baidu.com/link?url=fzqefMM44ljXA5BnAbkX44SapCUteyzlXFvGLKvukBivm9AB-w39P_h7eX1ty-GQX8j3A03AZBPat6yMqjeY4Sc5jlaayMRVOigzCElm_Ky so本质就是个动态链接库用gcc编译就能生成了 Delphi  XE里 if not Tfile.Exists(TPath.GetDocumentsPath+'/libserial_port.so') then

Visual Studio提示 源代码与原始版本不同

主要原因是,从其他地方直接复制了代码,导致的 代码不要直接复制,自己手打就是 了 从别处复制粘贴代码后可能会引起这种情况发生,因为你向代码文件里粘贴了ANSI格式不兼容的字符,影响了编译器变更检查功能. 解决方法:把你的代码另存为一份,另存为时选择Unicode编码格式,用另存为的Unicode格式代码文件替换原来那份代码文件,打断点调试的功能就能正常使用了.

小知识点日志(2013-6-24~2014-10-11)

2013-6-24 10:18:34 1.使用x命令查看内存,在查看内存经常挂的xcode调试中尤其重要 x/20x 0x12345678 查看0x12345678处的20个内存单元的内容 2.ASNI是针对原7位表示的ANSCII(0~127)编码的扩展 3.UPS:Uninterruptible Power Supply 不间断电源 4.附加到进程调试dll时,可以使用release版本的exe:也可以是vc6.0编译的exe,dll用2008编译 2013-7-10 11:34:37 1.

关于windows系统里locale、code page、ANSI编码的问题

最近把公司代码库里的代码同步下来之后编译了下,竟然出问题.问下同事说代码库肯定没问题,而我啥也没改,那到底那里出问题了呢? VS2018报的错误是:error RC2001: newline in constant 百度下这个错误的原因,主要原因是定义的字符串常量两个引号之间有换行,跳到相应出错的代码位置处,大体可以解决这个编译错误.当然,这个问题只是表象.由于代码库里的代码编译肯定能通过,而且这些代码已经跑了很久了,不可能存在这么低级的编译问题. 那么问题出在哪呢? 答案是操作系统的设置.问题

unicode,ansi,utf-8,unicode big endian编码的区别

作者:于洋链接:https://www.zhihu.com/question/23374078/answer/69732605来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的,于是他们把这称为"字节".再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出很多状态,状态开始变来变去.他们看到这样是好的,于是它们就这

字符编解码的故事(ASCII,ANSI,Unicode,Utf-8区别)

好文分享UTF-8, 字符集, 编解码 (关于字符编码的深入解释,请参见我的原创文章<关于字符编码,你所需要知道的>.) 此文为转载,有少许修订,原文出处不详. 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们认为8个开关状态作为原子单位很好,于是他们把这称为"字节". 再后来,他们又做了一些可以处理这些字节的机器,机器开动了,可以用字节来组合出更多的状态,状态开始变来变去.他们看到这样是好的,于是它们就这机器称为"