2

我的问题。我有一个遗留的 Turbo Pascal 程序,仍在 MS DOS 上运行。原始来源丢失了,我需要处理在 .DTA 文件中找到的信息。

我真的很想从 .Net 访问这些信息,阅读和更新。第一个也是显而易见的问题是我没有 .DTA 文件的原始数据结构。

在列中读取数据自动排序是理想的,但我非常绝望地坐下来尝试手动设置字段。

我的主要问题是我不知道如何从.Net 中读取数据和写入数据。

我试过了:

using (BinaryReader b = new BinaryReader(File.Open(l_path, FileMode.Open), Encoding.UTF8))

OleDbConnection myConnection = 
  new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\;
  Extended Properties=\"text;HDR=YES;FMT=FixedLength\"");
  1. 我能够检索数据;不幸的是,只有一列没有定界。所以,没有结构。
  2. 特殊字符(#、@ 等)的存在。我也不知道应该使用哪种编码。

有人可以帮我从.net读写Pascal .DTA文件吗?
谢谢,莫恩

4

2 回答 2

0

如果没记错的话,.DTA 扩展名是 Turbo Pascal 数据库工具包使用的默认扩展名(确切的名称让我无法理解)。我相信您仍然可以从 Delphi (Embarcadero) 网站下载 Turbo Pascal - 如果那里包含数据库工具包,那么这可能是您最好的选择 - 在 Turbo Pascal 中,将转换器编写为其他格式,例如 CSV。

于 2012-06-12T20:09:47.057 回答
0

不幸的是,文件中可能没有任何列分隔符。Turbo Pascal 使简单地将记录结构写入磁盘变得容易。

您将遇到三个大问题。

你肯定遇到的第一个——文件肯定不是 UTF-8。Turbo Pascal 早于 Unicode,文件中的任何文本无疑都是 ASCII。我相信您将其转换为 C# 的唯一方法是将其读取为字节并进行转换。

其次,Turbo Pascal 有一个没有 c# 等价物的数据类型。文件中的文本可能存储为字符数组(很简单,只需丢弃末尾的空格)或以长度开头的字符串类型。第一个字节表示字符串中有多少个字符,接下来的字节是字符。任何超出指定长度的字节都是垃圾,应该被丢弃。

最后,Turbo Pascal 中最常见的浮点类型是非标准的。问题是 Turbo Pascal 来自大多数机器没有数学协处理器的时代,普通类型在不支持 8087 指令的机器上要快得多。

我同意 500 - Internal Server Error 在 Delphi 或 Turbo Pascal 中执行此操作会容易得多。

于 2012-06-14T03:19:04.343 回答