仮修正が少し残っているので,フィックスしておこう.
- BCMDTABLE::BCMDTABLEの仕様変更:呼び出し時の引数を追加 ⇒ 現状でフィックス
- TRIBEBOX::HorizontalSegment:セグメント数=1のとき,CheckMaximalSegmentで再検査→廃止 ⇒ フィックス
- TRIBEBOX::HorizontalSegment:出口でCheckMaximalSegmentの再検査→廃止 ⇒ 現状でフィックス
- TRIBEBOX::MinimumContactDistance:すでに検定完了している場合は停止するようになっていた→停止しない ⇒ FIXED
- TOPOLOGY::ClearTable:MARGBOXの初期化でdataCleanを使う ⇒ FIXED
- ClearTableでlookupを使う@20230214 ⇒ FIXED
▲COUPLING::TopologicalSortでEraseTreeViewを呼び出さないようにしたところ,系統並び替えを実行しようとして,ClearTable→ NAMEBOX::CLEARで停止した.TRIBELISTのgetstarttribeが空を返している.tribelistはすでに廃棄されているが,基準ノードは始系列の優先ノードなのでSelectBaseBoxで参照が掛かっている.⇒startが空のときは処理をパスするようにした.
これでEraseTreeViewを実行しなくても,処理を継続することができるようになった.ClearTableを止めるのは無理のようだ.現在,系統並び替えでは13.7秒掛かっている.うち,ClearTableの消費時間は407msだ.サンプルBではClearTabledeだけで20秒掛かっている.その後のステージ9:Decomposition,ステージ11:GODOWNSTREAMもかなり掛かる.⇒CheckMaximalSegmentの出口で行っていたCheckMaximalCompactionの再検査を止めてかなり高速化した.それでもサンプルBの系統並び替えでは253秒で4分以上掛かっている.とりあえず,今のところパフォーマンスについてはここまでとしておこう.
◎現在開発機にインストールされているのは,V2.2.2.008 REL 2022-04-26 でカードテーブル上限は8192だが,サンプルAを読み込んでもまったく表示できない.現行バージョンのリリース版を起こしてみよう.
▲リリース版をビルドしようとして,STOPマクロでエラーが出ている.Dump関数をCObject::Dumpと取り違えている.なぜだろう?CObjectはMFCライブラリの基底クラスなので,我々も使ってはいるが… ヘッダはafx.hだ.DrawingObject.hはいつも最後に読み込まれるので,それ自身は他のヘッダをまったく参照していない._WIN32_WINNT not defined. Defaulting to _WIN32_WINNT_MAXVER (see WinSDKVer.h)という警告が出ている.⇒DrawingObject.hではCDCの派生クラスを定義している.おそらく,この辺りでMFCのクラス定義が持ち込まれているのだろう.
意味がわかった._CDCはCDCの拡張クラスなのだから,その中から呼び出すとすれば,当然その系統のメンバー関数になる.ということは,当然_CDCの中からNODULEクラスの関数を呼び出すことはできないということだ.しかし,どういう訳かデバッグモードでは動作しているので切り分けておくことにしよう.QUICKDBでもエラーが出ている.コードは変化していないはずなのだが…⇒いや,PickRecordは今回新設した関数だ._STOPなら使える.
IsAinstanceOfで_mbscmpの代わりにstrcmpを使うようにした.
▲nodule::CheckSansyoCountでSTOP文野中で,Dump「静的でないメンバー関数の呼び出しが正しくありません」エラーになった.⇒CheckSansyoCountは確かに静的関数として宣言されている.⇒_STOPなら問題ないようだ.
▲SetupTitleBox.vb(3274,24): error BC30451: ‘CommandLine’ は宣言されていません。アクセスできない保護レベルになっています。⇒CommandLine As Stringは以前はWindows.vbでpublicとして定義されていたのだが,現在はMDIForm_Loadのローカル変数になっている.UnlockTitleではスプラッシュウィンドウをクローズするための判定に使っているが,UnlockTitleの中でスプラッシュウィンドウを操作するというのはおかしいので,止めておくことにしよう.
なかなかいい感じだ.リリースモードではサンプルAを5秒以内に開くことができる.サンプルBの系統並び替えが55秒だ.悪くないと思う.バージョン番号を更新しておこう.現在のバージョンは2.2.2008だが,2.3まで上げてよいのではないだろうか?⇒インストールに成功した.
▲パッケージにはテーマファイルは入っているが,サンプルがまったく入っていないような気がする.配布パッケージの添付ファイルを置くとしたらドキュメントフォルダがもっとも適していると思われるのだが… どこかの時点で外してしまったのだろう.⇒対処した.
▲タモリさんちの超複雑な家系(拡張版).zelをアイコンのダブルクリックで開こうとしてエラーになった.標準版のタモリんちは開けたが,横書きだ.
横書きと縦書きをオプションで切り替えられるようにする必要があるが,横書きでも違和感のないレイアウトになっている.ただし,描線にはあちこち問題がありそうだ.というか,現行では結婚線というのをまったく見ていないはず.ルーゴン・マッコール家系図でも同じエラーになった.
それに続いて,以下のようなエラーが出る.
軟体動物も開けたが,それ以外は全滅だ.
この原因として考えられるのは,記録データが取り込まれていないのではないか?という点だ.おそらくタモリんちと軟体動物には記録部への書き込みがまったくないのだろう.実際,コラッツで作ったサンプルは相当大きなものでも問題なく開けている.12146点のサンプルも問題なく開けた.ともかく,ここから再出発するしかない.
「ユーザの個人用データフォルダ」というのに格納するようにしたら,ドキュメントに入るようになった.バラバラで入れるのも何なので,「ゼルコバの木系図ファイル」というフォルダを作ってそこに入れるようにした.この問題は,まず,これで解決だ.
KAKEIZU::getcarddataでエラーが出ている.item[27]が空になっている.撮影日付だ.この部分は,QUICKDB::pickrecordを廃止して,PickRecordを新設しているが,論理は基本的に変わっていないはずなのだが…つまり,データが存在しない場合には空のままとしていたはずなのだが…実際の個別データはquickfile(“TAKE:8”)で取り出していたので,必ずポインタを渡すようになっていたのかもしれない.実行関数はquicktakeだ.以前は一件ごとにrespbuffというところを使って受け渡ししていたので,ポインタが空ということは発生する余地がなかったのだが…データがないときは空文字列を指すポインタを渡すというのでもよいが,それも煩わしい気がする.ポインタが空のときは無動作とするというのが早いのではないだろうか?文字列関数でエラーを出さないようにするということも考えられるが…
▲天皇家系図でエラーが出た.
MergeUpperSegmentでエラーが出ている.(head == mbox && mbox->realsons && !mbox->getCritical(FATALSTARTEND|NOGOODSONEXIST) && mbox->NextSibling()) のような条件でmakeGoodSonを呼び出してgoodsonが特定された場合に停止するようになっている.停止しないようにして描画できた.那須記も描画できたが,かなりおかしなことになっている.
添付ファイルは一通り開けることだけは確認できたが,かなり悲惨なことになっている.一番惨めなのは源氏かもしれない.一見して相当緩くなってしまっている.これを締め直すのはかなり大変そうだ.もっとひどいのは,Ancestry.zelだ.これはほぼ壊滅と言ってよい.とりあえず,読み込むことができたというだけでもよしとするしかない.
「結婚連結線をサポートしない@20220228」と「MakePairListCleanを一時止める@20220215」を止めてかなりまともな図面が出てきた.連結線がところどころ切れているのと,ゴミ粒のようなものが散らばっているのを除くと,ほぼまともな図面に戻ったと言ってよい.
▲天皇家でかなりひどいスプリットが出ている.
▲53直系血族図.ZELを開いて,TRIBEBOX::SolveMargboxCollisionで衝突検定ループカウントオーバーが起きている.986個のTYW婚を廃棄したとしているが,衝突は収まらない.「コラッツ特注版ではTYW婚不用@20211217」を復活させたら収まった.