dポイントプレゼントキャンペーン実施中!

VB4でツリービューコントロールを使ってリストを作成するとある程度以上のノード数になるとindex errorになります。
正確には数えていませんが、感覚的に200行ぐらいです。

この制限を外す方法はありませんか?

よろしくお願いします。

A 回答 (3件)

そうですか・・・・


元ソースの抜粋をチョット改造してあったのですね。

しかしVersionが古くとも一緒です。

エクスプローラはTreeViewを使用しています。Win95のエクスプローラと言えども、200個以上のフォルダは閲覧できないなんて制限はありませんよね。それと一緒のはずなのですが・・・

現在公開してもらったサンプルソースでも200行ぐらいでエラーが起こるのですか?コード的には合ってるように見えます。
もしかしたら読み込んでるデータに不具合があるとか?

実際のエラーメッセージを正確に教えてもらえると、ちょっと参考になるかも?
    • good
    • 0
この回答へのお礼

ありがとうございました。
諦めずにがんばってみます。

お礼日時:2002/03/21 09:04

親となる"%"で始まる文字列のIndex値を、変数Jにて一時記憶している処理ですよね?



親となるNodeは[tree1]に追加されていて、子となるNodeは[tree2]に追加されています。

同じTreeView内でないと、親子の関係が結べないのではないのでしょうか?

この回答への補足

ご回答ありがとうございます。

すみません。元のツリーの名前が結構恥ずかしかったので一般的な名前に置き換えたのですが、その時に間違えたようです。両方ともtree1だと考えてください。

お手数ですが、もう一度診ていただけませんでしょうか。

OSはwin95でVB4です。古くてすみません。

補足日時:2002/03/20 14:25
    • good
    • 0

きちんと実験をしてませんが・・・


こちらの環境では問題なく20000件以上の登録ができました。
OS :WIN2KSP2
TOOL:VB6SP5

200行の制限なんてありませんよ。
コードに問題があると思われます。

Nodeを追加している付近のコードを公開できませんか?

この回答への補足

早速のコメントありがとうございます。
ご診断よろしくお願いします。

"test.ini"というファイルから1行ずつ読み込んで
先頭文字が"%"なら親ノードとして以降の文字列を登録、それ以外なら
その子ノードとして全部の文字列を登録、というつもりで作りました。

150行ぐらいのファイルならOKですが、200行ぐらいでエラーです。
「実行時エラー35600 インデックスが指定可能範囲をこえています」と
出ます。

よろしくお願いします。

Private Sub Form_Load()
Dim s As String
Dim nd As Node
Dim i, j As Integer

i = 0
j = 0
Open "test.ini" For Input As #1
Do
If EOF(1) Then Exit Do
Line Input #1, s
i = i + 1
If Left$(s, 1) = "%" Then
Set nd = tree1.Nodes.Add(, , , Right$(s, Len(s) - 1), 0)
j = i
Else
Set nd = tree2.Nodes.Add(j, tvwChild, , s, 0)
End If
Loop
Close #1

End Sub

補足日時:2002/03/19 23:24
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!