今、コントロール配列を動的にLoadするプログラムを作っているんですが、
その際、既にLoadされているコントロール配列を新規にLoadしようとすると
エラーが発生し困っております。
「すでにそのコントロールは存在します」という確認する方法ありましたら
教えてください。お願いします。
・・・・・・
Load コントロール配列名(Index)
・・・・・・
の部分で「既にLoadされています」というエラーが発生します。
環境はVB6のWinXP.Pro
On Error ステートメントを使って
エラーをキャッチする方法ではいけないのですか?
何も考えずに
On Error GoTo e
Load Text1(1)
On Error GoTo 0
Exit Sub
e:
MsgBox ("エラー番号 = " & Err.Number & " : " & Err.Description)
Resume Next
これではだめですか。
エラーハンドラはこういうときに使ってはいけない。
自分でLoadするんだから、自分で管理すべき。
管理する配列を作ってそこを参照すると良いでしょう。
On Error 使った方が楽そうだけどこんな方法も。
Private Sub Command1_Click()
Dim objTxt As Object
Dim AddIndex As Integer
AddIndex = 1
If Not IsIndex(AddIndex, Text1) Then
' ;
Load Text1(AddIndex)
' ;
End If
End Sub
Private Function IsIndex(No As Integer, objBase As Object) As Boolean
Dim objX As Object
For Each objX In objBase
If objX.Index = No Then
IsIndex = True
Exit Function
End If
Next
End Function
>エラーハンドラはこういうときに使ってはいけない。
だめですか(^^;
>自分でLoadするんだから、自分で管理すべき。
「自分で管理」ですか(^^;
> だめですか(^^;
こういう風にといった方が正しかったのかも。
ここでエラー処理をおくこと自体はいいのですが、
そういう使い方はすべきでないような。
回避できるエラーは回避すべきと思ったまでです。
>「自分で管理」ですか(^^;
何番目の要素までLoadしているか、自分でLoadするのならば管理できます。
FlexGridで、CheckBoxを無数に表示する際に、そんな感じで私はやっておりました。
# まあ、どちらの方法を使うにしろ、「できない」わけではありませんので、
# 私のは「完全な物言い」だと思わないでくださいね。
なるほど、みさなん勉強になりました。
アドバイスを参考になんとか頑張って行きたいと思います。
今後もよろしくお願いします。
>java.lang.Nullpoさん
いやみな書き方をしました。 m(__)m
「 On Error GoTo」は基本的にGoto文です、その意味から最も構造化から遅れた部分でしょう。
(VB.NETの様に Try...Catch...Finallyが有れば当然それを使います。)
使用する時はそれなりの配慮が必要です。
ツイート | ![]() |