我的问题。我有一个传统的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\"");
有人可以帮助我从.net读取和写入Pascal .DTA文件吗?
谢谢,莫恩
答案 0 :(得分:0)
如果内存服务,.DTA扩展名是Turbo Pascal数据库工具包使用的默认扩展名(确切的名称逃脱了我)。我相信您仍然可以从Delphi(Embarcadero)网站下载Turbo 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中这样做会容易得多。