10年前あるタクシー会社の管理アプリをDosで書きました。その時5〜7年で
VER_Upとの事で、当時パソコンで動くDBエンジンなど存在しないのでTPで簡易DBを作成しましたまあ10年もあればよいかとインデクスの容量を計算しました。
所が不景気で未だに使用され容量が天井を着きそうになってます。
仕方なく一部データをカットし開けてやろうと思いますがNEC PC9801とかTurboPascalなど開発環境(人間も)が無くこの部分をDelphiで作成しようと思います。旧バイナリーファイルを読み出すのはPackedで読めますが書き込んだファイルはDosPascalで読めるのでしょうか
ちなみに全てRecord型でランダムファイルになってます
宜しくお願いします。
NEC PC9801とは、
フロッピーのディスクのフォーマットの形式が少し違うだけで
(NEC PC9801の方がフォーマットが豊富なので、
Winが読み込める、形式で1.44MBでフォーマットしたフロッピーに出力すればOK)
NEC PC9801のMOやハードディスクのデータなら そのまま最新のWinでも
ファイル自体は、いまのWinと互換性がありますので、そのまま開けます。
ソフトウェアの
画像関係は、書き換えがいるでしょうけど
データの削り取りが目的だということなので
メインのpas拡張子をDPRに変えて
オプションで コンソールアプリケーションの作成
をチェックいれたら、そのままコンパイル通るのでは?
>旧バイナリーファイルを読み出すのはPackedで読めますが
>書き込んだファイルはDosPascalで読めるのでしょうか
>ちなみに全てRecord型でランダムファイルになってます
基本的にファイルのアクセスはそのまま関数のこっているから
データの仕様がわかっているなら可能です。
カテゴリ入出力ルーチンに
AssignFile、Eof、Resetとか残っています
仕様がわかっているならあえて、DOSにする必要も無いかともいます
TFileStreamをつかったりすると楽です。
有難うございます。 何しろ一番大きいファイルは40Mb、全体で56MBにふくれています 元々Windowsなど入っていないHDDで4台動いています 大容量メデイアが無く 先日も一部データを壊され修復に苦労しました。
かろうじてMOがSCSIで動いていますがPC9801のSCSIカードは一枚きり!!
仕方なくHDDを取り外し手元にあるただ一台のPC98につなぎ転送しています。
私にわからないのはなぜTurboPascalのバイナリーファイルを読むのに
Packed Record を使うのか Delphiが吐き出すバイナリーと何か違いがあるのかと言うことです
TPのコードは全て残っています。
手元で修正しファイルだけHDDに転送するつもりです。
ご存知でしたらお教え下さい おねがいします。
DelphiでFileOpen FileSeekとかもでできますし。
ターボパスカルのコード全部あるなら悩む理由も無いと思いますが
そのまま コード流用すればいいことですから
悩んでいる時間があったら 一度コードをDelphiに移して
データを全部読み込んで、そのまま別名で出力してみて、
TFileStreamを2作ってバイナリで、きちんと同じデータができあがっているか
確認すれば確実と思います。
その後に不要データ削除に入ればいいのでは?
と思います
重複質問をしてしまいごめんなさい。
オペラ ブラウザは更新が遅くアップしないと勘違いしていました
一応読めると言う事ですので書いてみます。
有難うございました。
追伸
TPのコードはPC9801の2枚のVRAMを利用し擬似ウインドウを作り動いていますのでそのままではDOSV機で動きません
IO部分だけ取り出してやってみます。
ツイート | ![]() |