メモリーベースのDB(MyBASE)を利用しデータ操作をしたのあと、ファイルに保存した場合に削除レコードは保存されてしまうのでしょうか?
完全に削除するにはどのようにすればよいでしょうか?
試したところ、XML形式、バイナリ形式 どちらも保存されず削除されているようですが・・・
igyさんすみません。表現が悪かったようです。
たぶん削除マークが付いていて、実際のファイルの中には存在している。
よってアプリ上は問題なく、削除レコードは表示されません。
ところがファイルをメモ帳などで開くと、レコードがあるように見えました。
このままだとファイルが大きくなってしまうということで、気になりました。
違うキーワードで探していたのでわかりませんでしたが、いろいろググって、やっとわかりました。
MergeChangeLog で完全に削除されました。
MyBaseの情報も少ないですね。
>MergeChangeLog で完全に削除されました。
今、確認したら、こちらで試したソースでは、
LogChangesプロパティを False にしていました。
>MyBaseの情報も少ないですね。
そうですね。
やりたいことにもよりますが、お使いのDelphiがXE3以降(Pro以上)でしたら、
SQLiteも検討したほうがよいかもしれません。
SQLiteですか。データ型が少なすぎます。
Paradoxからの移行をしようとすると、手直しが増えすぎます。InterBaseも同じですね。ビジネスではデータが100%正確に移行できる保証がないと使えません。
特にCP932の外字も使えないといけません。
私はMySQLを使用し、CP932ベースで移行しました。
それから、MyBaseのテーブルをXML形式で保存すると、呼び出したときに文字化けが発生しました。バイナリー形式しか使い物にならないようです。
「ガソリン」が文字化けしてしまいました。
>「ガソリン」が文字化けしてしまいました。
SaveToFileメソッドの2番目の引数に dfXMLUTF8 を指定するのは、ダメですか?
igyさん
ご指摘の通りdfXMLUTF8なら、「ガソリン」は文字化けしませんでした。
いけそうですね。
ありがとうございました。
ツイート | ![]() |