ようやく波に乗れたような気がする

ようやく波に乗れたような気がする.ともかく,lookupの更新を組み込んでおこう.⇒実装した.大体うまく動作しているように見える.テーブル並び替えは掛かってこないが,ソートは実行されている.なぜだろう?TOPOLOGY::RebuildCardListの中でNameSortが実行されている.⇒これでよい.昨日のエラーを人為的は発生させて動作を見ることにしよう.⇒新規カードはエラーなしで作れたがその後が悪い.いや,これは,わざとエラーを発生しているのだから,当然だ.

主なポイントは実装できたと思う.あとは,関数名などの整理だけだ.getmaxrecnではリンクテーブルサイズを返しているが,maxrecordを返すように変更できる.いや,何か失敗しているのではないだろうか?図面種別部分図で,1ブロックを一括削除した後,氏名でソートを2回繰り返すと表示範囲がまったく変わってしまう.一覧表の表示モードは<すべてのカード>となっているが,4点しか表示されていない.すべてのカードであれば,208点表示されなくてはならないのだが…

カードを70点一括削除して一覧画面の表示がおかしくなる.208点表示されなくてはならないところ,4点になり,氏名でソートするとその内容が変化してしまう.CommandEndの出口でNameSortを実行した時点でlookupのカウントは307のままだ.NAMESORT::SortNameSubには空欄を前詰めするという機構が備わっていない.⇒対処した.

getmaxrecnはmaxrecordを返すように仕様変更しているが,正しい使用法になっているかどうかをチェックしておこう.getmaxrecnは189箇所から参照されている.すべてforループのカウンタとしてつかわれていると見て間違いないだろう.⇒一応問題なさそうなので,予定通りmaxRecordにリネームしておこう.⇒その前に,バックアップ.

COUPLING::resetUpdateflagで(PDB()->updatecount < 0)になった.CARDLINKのupdateflagは重複してカウントアップされることがあるので,resetUpdateflagではPDB()->updatecount -= card->updateflagという計数を行っている.⇒以下の手順で再現できる.ブロック選択して,1点削除→ 1点削除→ 一括削除→ Undo→ Undo→ Undo.バックアップイメージにupdateflagが残っているのではないだろうか?⇒どうも,そのようだ.UNDOSYSTEM::UndoRestoreの中でフラグをリセットすることで解消した.

通常,コマンド実行時やUNDO実行時にはupdatecount はリセットされるので,イメージに残っていると不都合が生じる.CARDTABLE:cleanUpdateflagは,①TOPOLOGY:UpdateRecordFuncと②FAMILYTREE::cancelUpdateの2箇所のみ.UpdateRecordFuncは更新レコードの送り出しを実行する.cancelUpdateは外部呼び出しのCancelUpdatelistで実行される.いずれも一覧表の更新に関わっている.ただし,後者は現在使われていないものと思われる.一応これでよいのではないかと思う.⇒CancelUpdatelistを廃止は廃止した.

▲結婚テーブルのlookupの操作を確認する.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA