Turbo Pascalで読めるバイナリーファイルがDelphiで書けるでしょうか

解決


けんちゃん  2005-02-07 19:48:36  No: 13083

10年前あるタクシー会社の管理アプリをDosで書きました。その時5〜7年で
VER_Upとの事で、当時パソコンで動くDBエンジンなど存在しないのでTPで簡易DBを作成しましたまあ10年もあればよいかとインデクスの容量を計算しました。
所が不景気で未だに使用され容量が天井を着きそうになってます。
仕方なく一部データをカットし開けてやろうと思いますがNEC  PC9801とかTurboPascalなど開発環境(人間も)が無くこの部分をDelphiで作成しようと思います。旧バイナリーファイルを読み出すのはPackedで読めますが書き込んだファイルはDosPascalで読めるのでしょうか
ちなみに全てRecord型でランダムファイルになってます
宜しくお願いします。


ponpoko  2005-02-07 22:17:27  No: 13084

NEC  PC9801とは、
フロッピーのディスクのフォーマットの形式が少し違うだけで
(NEC  PC9801の方がフォーマットが豊富なので、
Winが読み込める、形式で1.44MBでフォーマットしたフロッピーに出力すればOK)
NEC  PC9801のMOやハードディスクのデータなら  そのまま最新のWinでも
ファイル自体は、いまのWinと互換性がありますので、そのまま開けます。

ソフトウェアの
画像関係は、書き換えがいるでしょうけど
データの削り取りが目的だということなので

メインのpas拡張子をDPRに変えて
オプションで  コンソールアプリケーションの作成
をチェックいれたら、そのままコンパイル通るのでは?

>旧バイナリーファイルを読み出すのはPackedで読めますが
>書き込んだファイルはDosPascalで読めるのでしょうか
>ちなみに全てRecord型でランダムファイルになってます
基本的にファイルのアクセスはそのまま関数のこっているから
データの仕様がわかっているなら可能です。
カテゴリ入出力ルーチンに
AssignFile、Eof、Resetとか残っています

仕様がわかっているならあえて、DOSにする必要も無いかともいます

TFileStreamをつかったりすると楽です。


けんちゃん  2005-02-07 22:45:22  No: 13085

有難うございます。  何しろ一番大きいファイルは40Mb、全体で56MBにふくれています  元々Windowsなど入っていないHDDで4台動いています  大容量メデイアが無く  先日も一部データを壊され修復に苦労しました。
かろうじてMOがSCSIで動いていますがPC9801のSCSIカードは一枚きり!!
仕方なくHDDを取り外し手元にあるただ一台のPC98につなぎ転送しています。

私にわからないのはなぜTurboPascalのバイナリーファイルを読むのに
Packed Record を使うのか  Delphiが吐き出すバイナリーと何か違いがあるのかと言うことです
TPのコードは全て残っています。
手元で修正しファイルだけHDDに転送するつもりです。
ご存知でしたらお教え下さい  おねがいします。


ponpoko  2005-02-08 01:24:24  No: 13086

DelphiでFileOpen FileSeekとかもでできますし。

ターボパスカルのコード全部あるなら悩む理由も無いと思いますが
そのまま  コード流用すればいいことですから

悩んでいる時間があったら  一度コードをDelphiに移して
データを全部読み込んで、そのまま別名で出力してみて、
TFileStreamを2作ってバイナリで、きちんと同じデータができあがっているか
確認すれば確実と思います。

その後に不要データ削除に入ればいいのでは?
と思います


けんちゃん  2005-02-08 01:25:23  No: 13087

重複質問をしてしまいごめんなさい。
オペラ  ブラウザは更新が遅くアップしないと勘違いしていました
一応読めると言う事ですので書いてみます。
有難うございました。


けんちゃん  2005-02-08 01:32:57  No: 13088

追伸
TPのコードはPC9801の2枚のVRAMを利用し擬似ウインドウを作り動いていますのでそのままではDOSV機で動きません
IO部分だけ取り出してやってみます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加