如何在Delphi的TStringField.FieldName属性上使用Unicode(或西里尔文)字符?

如何在Delphi的TStringField.FieldName属性上使用Unicode(或西里尔文)字符?,delphi,unicode,tclientdataset,tfield,tstringfield,Delphi,Unicode,Tclientdataset,Tfield,Tstringfield,如何在Delphi上的TClientDataSet的TStringField.FieldName属性上使用Unicode(或西里尔文)字符 我试过这个,但在最后一行不起作用: aStringField := TStringField.Create(aClientDataSet); aStringField.FieldName := 'аАяЯ'; aStringField.DataSet := aClientDataSet; aClientDataSet.CreateDataset; 下面的程

如何在Delphi上的
TClientDataSet
TStringField.FieldName
属性上使用Unicode(或西里尔文)字符

我试过这个,但在最后一行不起作用:

aStringField := TStringField.Create(aClientDataSet);
aStringField.FieldName := 'аАяЯ';
aStringField.DataSet := aClientDataSet;
aClientDataSet.CreateDataset;

下面的程序编译并执行(XE4)时没有错误

program CDS;

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils, db, dbclient;

procedure Test;
var
  aClientDataSet : TClientDataSet;
  aStringField : TStringField;
begin
  aClientDataSet := TClientDataSet.Create(Nil);
  aStringField := TStringField.Create(aClientDataSet);
  aStringField.FieldName := 'аАяЯ';
  aStringField.DataSet := aClientDataSet;
  aClientDataSet.CreateDataset;
end;

begin
  Test;
end.

o如果我使用您的aStringField声明(即作为TField)和您创建它的方法,我会在aClientDataSet.CreateDataset上得到r/time错误“无效字段类型”。

“不工作”不会传递任何信息。您收到了什么错误消息?错误:未找到字段。英文
FileName
很好用。人们通常用英文名称来表示列。我需要使用Cyrilly。我会理解
DisplayLabel
,但对于
FieldName
,它不仅仅是奇怪的。这是一个客户端数据集,您现在似乎正在构建它。为什么有这个要求?我使用了TStringField,得到错误“Field not found”。这个问题被简化了。好吧,就像我说的,它对我很有效。您使用的是什么Delphi版本?你试过运行我发布的内容吗?Delphi XE5。我还没有试过你的代码,但它看起来和我的很相似。好吧,我的答案中的程序将你发布的内容转化为SSCCE,这不会产生错误。如果它对您不起作用,您仍然没有说,那么问题可能是XE4和XE5之间的一些差异;如果是这样,但是你的代码仍然不起作用,那一定是因为你没有向我们展示一些东西。祝你狩猎愉快!我显然不能再帮你了。