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

残念ながら、ファイルにはおそらく列区切り文字がありません。Turbo Pascal を使用すると、レコード構造を簡単にディスクに書き込むことができます。

あなたがヒットしようとしている 3 つの大きな問題があります。

最初に間違いなくヒットしたファイルは、確かに UTF-8 ではありません。Turbo Pascal は Unicode よりも前のものであり、ファイル内のテキストは間違いなく ASCII です。それをC#に入れる唯一の方法は、それをバイトとして読み取って変換することだと思います。

第二に、Turbo Pascal には c# に相当するものがないデータ型があります。ファイル内のテキストは、おそらく文字の配列 (単純で、末尾のスペースを破棄するだけ) または長さで始まる文字列型として格納されます。最初のバイトは文字列に含まれる文字数を示し、次のバイトは文字です。指定された長さを超えるバイトはガベージであり、破棄する必要があります。

最後に、Turbo Pascal で最も一般的な浮動小数点型は非標準です。問題は、Turbo Pascal は、ほとんどのマシンに数学コプロセッサがなかった時代のものであり、8087 命令をサポートしていないマシンでは通常のタイプの方がかなり高速です。

DelphiまたはTurbo Pascalでこれを行う方がはるかに簡単であるという500 - 内部サーバーエラーに同意します。

于 2012-06-14T03:19:04.343 に答える
0

メモリが機能する場合、.DTA 拡張子が Turbo Pascal データベース ツールキットで使用されるデフォルトでした (正確な名前は省略します)。Delphi (Embarcadero) Web サイトから Turbo Pascal をダウンロードできると思います。データベース ツールキットがそこに含まれている場合は、おそらくそれが最善の策です。Turbo Pascal で、CSV などの他の形式へのコンバーターを記述します。

于 2012-06-12T20:09:47.057 に答える