タイトル | : Re^6: としきさんの msgview 完璧なツリー |
投稿日 | : 2024/03/05(火) 17:24 |
投稿者 | : としき |
参照先 | : http://toshiki.la.coocan.jp/ | 番 号 | : 11142 11139 番 konno さんへのコメント コメント数 1 |
> 何が悪いのかはわかりません。m(__)m私にも何が悪いのか、今のところは全くわかっていません。 一応、1月にkonnoさんにお送りしたコードを再び引っ張り出してみました。 そして、うちの板塀の現行ログを表示してみたのですが、全て正常な表示に見える のですよ。かなり複雑そうなツリーであっても。 う〜ん、まさかデータというかログファイルのほうに原因があるのか? それとも、私がkonnoさん的なコードに転記する際にどこかを誤ったとか。 いささか複雑というか統一性に欠けたコーディングスタイルでしたから。 あるいは、konnoさんがご自分でコードをきれいにしようとして失敗したとか。 一応、ざっくりみたところ。 msgviewの中で「┗」「┣」が表示されるルーチンは以下のような感じ。 if ($tx[$lx] == 0 && $lx != 0) { print "┗"; } else { $jj=1; while ( $tlx[$j+$jj] > 0 ) { if ( $tlx[$j] == $tlx[$j+$jj] ) { $jj=0; last; } if ( $tlx[$j] > $tlx[$j+$jj] ) { $jj=1; last; } $jj++; } if ( $jj == 0 ) { print "┣"; } elsif ($lx != 0 ) { print "┗"; } } 一方で、正しく表示される一括表示のツリー表示部分は以下のような感じ。 if ( $tx[$lx] == 0 ) { print "┗"; } else { $jj=1; while ( $tlx[$j+$jj] > 0 ) { if ( $tlx[$j] == $tlx[$j+$jj] ) { $jj=0; last; } if ( $tlx[$j] > $tlx[$j+$jj] ) { $jj=1; last; } $jj++; } if ( $jj == 0 ) { print "┣"; } else { print "┗"; } } 条件式が違うじゃない。 何でこんなところを見落としたんだろう。 テストデータというか板塀のデータで正常に表示されていたからだろうなぁ。 ということで、もしかしたらこれでうまくいくかも。 もうkonnoさんのところでも不要なコメントは全部落としているでしょうから、場所は すぐに見つかることでしょう。 とりあえず試してみてください。
- No.11142 一括表示へ - コメント元:11139 一括表示へ - [ 返信 ] [引用無し] pre