Delphi TClientDataSet.Locate不处理重音符号

Delphi TClientDataSet.Locate不处理重音符号,delphi,firemonkey,delphi-10.2-tokyo,Delphi,Firemonkey,Delphi 10.2 Tokyo,正如我在标题中所写,我对组件TClientDataSet有一个问题,特别是它的方法。如果搜索的字符串中有重音符号,则返回的值始终为false,并且没有处理字符串中重音符号的选项。有人找到解决这个问题的方法吗 谢谢 ---编辑------------------------------------------------------------------------------------------------------------------------- // in a method C

正如我在标题中所写,我对组件
TClientDataSet
有一个问题,特别是它的方法。如果搜索的字符串中有重音符号,则返回的值始终为false,并且没有处理字符串中重音符号的选项。有人找到解决这个问题的方法吗

谢谢

---编辑-------------------------------------------------------------------------------------------------------------------------

// in a method
ClientDataSetTournee.open;

// in an other method that I call after in a separate thread
// libtor equals 'ANTONY_CLSH TOURNÉE 1 (VACANCES)'
if ClientDataSetTournee.Locate('LIBTOR', libtor, []) then
begin
    // data found
end
else
begin
    myShowMessage('Erreur', 'Erreur interne : tournée introuvable' );
    exit;
end;
clientdatasetournee
由于从服务器获取数据的
ProviderName
而被填充,当libtor具有此值时,会显示错误消息。

这工作正常

项目129

{$APPTYPE CONSOLE}

{$R *.res}

uses
  System.SysUtils,
  Datasnap.DBClient,
  Data.DB;

procedure DoTest;
var
  dataSet: TClientDataSet;
  varFieldDef: TFieldDef;
begin
  dataSet := TClientDataSet.Create(nil);
  try
    with dataSet.FieldDefs.AddFieldDef do
    begin
      Name := 'Name';
      DataType := ftString;
    end;

    dataSet.CreateDataSet;
    dataSet.Append;
    dataSet.FieldByName('Name').AsString := 'TOURNÉE 1 (VACANCES)';
    dataSet.Post;

    if dataSet.Locate('Name', 'TOURNÉE 1 (VACANCES)', []) then
      WriteLn('Found')
    else
      WriteLn('Not found');

    ReadLn;
  finally
    dataSet.Free;
  end;
end;

begin
  DoTest;
end.

应用程序的输出是“找到的”

好吧,MIDAS是个问题。我会把它处理掉的。它应该被弃用。永远。如果您有FireDAC并且有机会迁移,请这样做。或者到另一个现代客户端库。这是我能说的最好的了。@Victoria不是TClientDataSet在Delphi版本的基础上变成了纯pascal吗?通过将midaslib添加到使用列表中找到了答案,不需要dll@RM.,太好了,它将预编译的MIDAS库对象静态链接到二进制文件中。然而,它改变了什么?即使是发布(如开源)源代码也不会让MIDAS变得多么现代。无论如何,迈达斯都需要被烧死。EMBT购买AnyDAC(成为FireDAC)是有原因的。@RM:它仍然在Midas代码中链接,而Midas代码不是用Delphi编写的(它是C++)。仅仅因为它们提供了对象(.obj)文件,当您添加MidasLib时,这些文件会被链接进来,但这并不能神奇地将所有代码转换为Delphi代码。查看您的BDS文件夹,在
source\data\dsnap\midas
中查看一些源文件和头文件。我编辑了我的文章。我试过你的代码,它是有效的,所以我不明白为什么我的代码不起作用。不同之处在于我不使用代码创建和填充数据集。。。