- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Delphi XE3,Win7教授
我需要写入 DBASE 3(旧格式)文件,以便为类似 DOS 的应用程序(Clipper?)导出数据。好吧,我想:MS DBASE 驱动程序可以做到这一点。
但我对匈牙利口音有疑问。
我尝试了这个连接字符串:
Driver={Microsoft dBASE Driver (*.dbf)};DriverID=21;Dbq=c:\temp;Extended Properties=dBASE III;charSet=CP 852;Locale Identifier=1038;Character Set=CP 852;CODEPAGE=852
正如我所见,它不能只写入 ANSI 文件(DOS 应用程序接受 CP852 字符)。
我尝试使用 AnsiToOEM 转换内容,但保存时丢失了一些字符。在记录中我看到了良好的内容,但保存的文件包含错误的重音。测试文本为“árvíztűrő tükörfúrógép”。结果中缺少“í”、“ó”、“Ó”。
我发现了一些奇怪的事情!
如果主窗体有一个打开的 ADOConnection(DFM 中的连接属性为 true),那么我将从 DBASE 文件中读取好的字符,并且可以将它们写入文件 - ANSI 字符将被正确转换。 “í”可以,“ó”也可以。此 ADOConnection 对象可能与读取器不同。
如果我在 IDE 模式下关闭此 ADOConnection,打开的文件将不会被转换,因此我会看到一些奇怪的重音字符,并且我不会将好的文本写入文件中。
很奇怪,因为如果我通过代码在FormCreate上打开这个连接,就会出现问题......如果资源流处理程序从 DFM 读取 ADOConnection 的事件(真值)“已连接”属性,我可以读取和写入 ADOQuery 记录!
我不知道后台发生了什么,也不知道如何强制这个 ADO 字符转换例程工作,但我浪费了更多的时间来找到一个工作的 DBASE III 导出器,而且我只发现了一个类似 bug 的东西......
有人知道这是什么吗?为什么 ADO 字符编码器/解码器仅当我在 DFM 中连接了 ADOConnection 时才工作?或者我如何使用 ADODB.Connection 而不是 ADOConnection 对象来避免这种副作用?
感谢您的每一个想法!
最佳答案
据我所知,我需要设置代码页来修复 ADO 的字符串。
var
s: string;
aStr1, aStr2: AnsiString;
begin
...
s := 'árvíztûrõ tükörfúrógép';
aStr1 := s;
SetLength(aStr2, Length(aStr1));
AnsiToOemBuff(PAnsiChar(aStr1), PAnsiChar(aStr2), Length(aStr1));
SetCodePage(RawbyteString(aStr2), 852, False); // THIS IS THE SOLUTION
ADOQuery1.FieldBYName('name').AsAnsiString := aStr2;
否则,某些东西会在后台再次转换我的 AnsiString。
关于Delphi:ADOConnection、DBASE3 和字符集(错误?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26169419/
在我遇到这个问题之前,我以为我理解了通用约束。 public class DBase : DbContext, IDisposable where T : DBase T怎么可能是DBase ? 如果
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 6年前关闭。 Improve t
嗨,有人可以推荐一个免费组件,我可以使用该组件将dbase III表加载到Delphi中,最好不使用BDE。 TTable之类的东西,但对于Dbase 谢谢 科林 最佳答案 TDBF应该做您想要的。
我必须使用 ADOConnection 和 AdoTable 从旧的 dBase 数据库复制一些信息。我可以打开所有表格,但出现此异常 Data provider or other service r
我正在开发一个需要读取不同 dBase 文件的程序。我似乎只能找到 dBaseIII plus 文件进行测试。有谁知道我在哪里可以找到测试包或其他东西?我需要在不同版本的 dBase 上测试此代码。
我有一个非常大的 dBase 文件 (1.64Gb)。使用标准 foreign::read.dbf() 函数在 R 中加载整个文件需要很长时间。我只想在数据集中加载几个变量。有人有解决办法吗? 最佳答
我正在使用 Python 3.6 和 dbf 库 https://pypi.python.org/pypi/dbf以及来自 https://github.com/infused/dbf/tree/ma
我目前使用 OleDBCommand.ExecuteNonQuery(重复调用)从源 DataTable 一次将多达 350,000 行插入 dbase 文件 (*.dbf)。我正在重用 OleDbC
我正在研究如何在软件项目中使用自然地球,因此我下载了一个示例数据文件并查看了其 dBase 文件,即 ne_50m_admin_0_countries.dbf 以下是所述文件中的示例行: ScaleR
每次我尝试通过 webhost/adminlogin.php 登录时,我都会被重定向回同一页面。有什么我忘了补充的吗?谢谢你的帮助。下面是我的脚本 这是我的adminlogin.php
我从 mysql phpmyadmin 数据库获取 ID,并希望将结果查询到 dbf。结果是ID,我想使用ID从dbfs获取mysql中不存在的数据 有没有类似MYSQL的dBase DBF表达式 D
我的具体问题是我无法按日期字段进行过滤。 这是我的代码: string connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\Tool
我在使用 PHP 5.5.11 在 XAMPP 中安装 dBase 扩展时遇到问题。我将 php_dbase.dll 添加到 php/ext 文件夹并将以下行添加到 php.ini 文件: exten
首先,对不起我的英语。 我正在使用 PHP 和 dbase 数据库进行开发。通常我在 Windows 机器上这样做,但有时我必须在 Ubuntu 上开发。问题是,我找不到在 Ubuntu 上创建 od
我想知道如何将 Microsoft dBase 驱动程序的 autocommit 设置为 false,例如 https://stackoverflow.com/a/8079987/613495 中介绍
我已经通过 Matlab Central 进行了谷歌搜索,但找不到任何直接在 Matlab 中打开 DBF 文件的方法。在 TMW 文件交换中有一些对 DBFREAD 函数的引用,但它不再可用。真的有
我无法在 PHP7 和 Nginx 服务器上从 PhpMyadmin 导出数据库。 /var/log/nginx/error.log 说 18 FastCGI sent in stderr: "PHP
我有一个 DBF 文件,我正在尝试从 C# 代码中读取它。我可以在不应用任何条件或为 varchar 类型字段应用条件的情况下成功读取文件。我的问题是我必须从日期字段(类型:日期)中过滤记录。我尝试了
我正在尝试将数据从 Act 2000 转换为 MySQL 数据库。我已经成功地将 DBF 文件导入到单独的 MySQL 表中。但是我遇到了 *.BLB 的问题文件,这似乎是一个非标准的备忘录文件。 D
首先,我必须声明,就 Delphi 而言,我完全是个新手,尽管大约 14 年前我在学校做过一些 Turbo Pascal 编程... 我有一个商业 Delphi 程序,它使用 dBase 数据库和 B
我是一名优秀的程序员,十分优秀!