C#从.Net访问Turbo Pascal .DTA文件

时间:2012-06-12 19:33:06

标签: c# pascal turbo-pascal

我的问题。我有一个传统的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. 特殊字符(#,@等)的存在。我也不知道应该使用哪种编码。
  3. 有人可以帮助我从.net读取和写入Pascal .DTA文件吗?
    谢谢,莫恩

2 个答案:

答案 0 :(得分:0)

如果内存服务,.DTA扩展名是Turbo Pascal数据库工具包使用的默认扩展名(确切的名称逃脱了我)。我相信您仍然可以从Delphi(Embarcadero)网站下载Turb​​o Pascal - 如果数据库工具包包含在那里那么这可能是您最好的选择 - 在Turbo Pascal中,将转换器写入其他格式,如CSV。

答案 1 :(得分:0)

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

你要打三个大问题。

第一个你肯定会命中 - 文件肯定不是UTF-8。 Turbo Pascal早于Unicode,文件中的任何文本无疑都是ASCII。我相信你将它变成C#的唯一方法是将其作为字节读取并转换它。

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

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

我同意500 - 内部服务器错误,在Delphi或Turbo Pascal中这样做会容易得多。