【问题标题】:Delphi displays question marks when reading from MS Access从 MS Access 读取时 Delphi 显示问号
【发布时间】:2014-05-05 17:17:43
【问题描述】:

我在我的电脑上安装了新的 Windows 7。

我有一个 delphi 7 应用程序,它使用 TAdoQuery 从具有希伯来字母的表中选择 MS Access 数据。

在 Access 中,数据保存正常。

系统区域设置将希伯来语作为非 Unicode 语言。

但是当从表中获取数据时,delphi 将希伯来字母显示为问号 (?)。

有什么想法吗?

代码示例:

with qryCustom do
begin
  Close;
  SQL.Text := 'select * from TB_Files where ID > 0 order by ID';
  Open;
  while not EOF do
  begin
    lItem := lvFiles.Items.Add;
    lItem.ImageIndex := 1;
    lItem.Caption := FieldByName('FullFileName').AsString;
    Next;
  end;    
  Close;
end;

【问题讨论】:

    标签: delphi ms-access delphi-7 tadoquery


    【解决方案1】:

    尝试使用AsWideString 而不是AsString

    如果可能/可行,请尝试切换到支持 Unicode 的组件,例如旧的 TNT 组件。 Delphi 7 控件本身不支持 Unicode。只要操作系统区域设置与数据区域设置匹配,您就不会从 Ansi/Unicode 转换中丢失任何内容。但你真的不应该依赖它。最好尽可能使用完整的 Unicode

    【讨论】:

    • 但是Delphi7中不存在AsWideString
    • TField.AsWideString 可能不存在,但TWideStringField 存在,并且它有一个返回WideStringValue 属性。 FieldByName('FullFileName').ClassName 返回什么值?如果它返回'TWideStringField',那么您可以进行类型转换以访问其Value
    猜你喜欢
    • 2010-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    相关资源
    最近更新 更多