web-dev-qa-db-ja.com

変数名の大文字と小文字を変更するVB6エディター

私はVisualBasicの人間ではありませんが、古いVB6アプリの保守を任されています。ファイルをチェックアウトするたびに、エディターは大文字の変数名の束を自動的に小文字に置き換えます。どうすればこれを止めることができますか!?それらをすべて元に戻す必要はありません。実際の違いを見つけようとしているときに、これらの変更がSourceSafeの「違い」に表示されるのは面倒です。

定義でも自動的に変更されます:Dim C as ControlDim c as Controlになります。 Dim X&Dim x&になります。しかし、それは常にそれを行うわけではありません。たとえば、Dim x&から3行下に、大文字のDim Y&がありますが、これは変更されていません。なぜ私にこれをするのですか?

36
Laure

DJの答え ..から続く.

また、同じスコープ内の変数の大文字と小文字を変更するだけではありません。

これにより、プロジェクト全体で同じ名前のすべての変数の大文字と小文字が変更されます。したがって、ある場所で大文字で宣言されている場合でも、別のモジュールでは、同じ変数名を小文字で使用して異なる変数が使用されている可能性があり、ロードされた宣言(?)または最後に編集しました。

したがって、C変数とX変数が大文字と小文字を変更し、Yが変更されない理由は、おそらくCとXがプロジェクト内の別の場所で宣言されているためですが、小文字で宣言されていますが、Yはそうではありません。

それについての別の言及があります ここ 、ここでは、ローカル変数とグローバル変数を区別するために大文字と小文字が使用されているときに、そのような変数名が競合することに主に関係しているようです。代わりにプレフィックスを使用することになります。

私が考えることができる唯一の選択肢は、VB6ハイライト機能を備えた他のエディターを使用して編集を行うことです...

27
mercator

私はいつもこのスレッドが最初に solution を探して混乱しているのを見つけたので、ここに Simon D が提案されています 関連する質問

1つの変数のケーシングを修正する必要がある場合(たとえば、誤ってcOrrectCAse変数を作成し、それらがいたるところにある場合)、これを完全に修正できます。追加する

#If False Then
    Dim CorrectCase
#End If

モジュールの最初に。プロジェクトを保存し、後でステートメントを削除しても、大文字と小文字は正しいままです。

Excel VBAを使用して、関数内のrow変数を不注意に調光することにより、誤ってすべてのRange.RowRange.rowに変更することがよくあります。SimonDのソリューションを使用して、これを修正できます。

25

列挙型はさらに悪いです。列挙型が使用されている場所で大文字と小文字を間違えると、定義の大文字と小文字が変わります。

5
John Y

面倒なファイル差分の経験を乗り越えるには、差分ダイアログでVSSオプションを設定して、大文字と小文字を区別しない比較を行います。そうすれば、「実際の」変更のみが表示されます。

4
Matt Dillard

列挙値のVB6自動修正を防止します

私の原則として、定数は大文字で宣言します。列挙型は本質的に定数なので、大文字で列挙型の値を宣言するのも好きです。 VB6 IDEもこれらを自動修正することに気づきました。

値の名前に数字とアンダースコア「_」を使用すると、IDEはこれらの値を修正しないことがわかりました。

例:

Public Enum myEnum
  VALUE      'Will be corrected to: Value
  VALUE1     'Will not be corrected
  VALUE_     'Will not be corrected
End Enum   

これが一般的に機能するかどうか、そしてこれが変数名の命名/自動修正にまで及ぶかどうかはわかりません。

0
Marko

すべてのVBプロジェクトを閉じ、テキストエディターでフォームファイルを開き、すべての名前の大文字と小文字を変更してから、VB IDEでプロジェクトを再度開きます。

0
Bong Hoon Han

小文字で定義/宣言する必要があります。宣言を見つけて、そこで修正します。 IDEは、宣言に一致するように常に大文字と小文字を変更します。

0
DJ.

明らかな理由もなくUPPERCASEがMixedCaseに変更された、同様の列挙の問題がありました。

Enum eRowDepths
    BD = 1
    CF = 1
    Separator = 1
    Header = 3
    subTotal = 2
End Enum

以下(不適合変数の最後の文字を追尾)に変更したところ、問題ありませんでした

Enum eRowDepths
    BD = 1
    CF = 1
    SEPARATO = 1
    HEADE = 3
    SUBTOTA = 2
End Enum

これは尻尾が犬を振っている場合であることがわかりました。私は次のコードを持っています、私が認める最もエレガントではありませんが、それでも動作しています(フォーマットの問題を許してください):-

'insert 3 rows
  iSubTotalPlaceHolder = i      
  rows(ActiveSheet.Range(rangeDMirrorSubTotals).Cells.Count +  _
                                                        Header _
                                                         & ":" _
      & ActiveSheet.Range(rangeDMirrorSubTotals).Cells.Count + _
                                                      Header + _
                                                    subTotal + _
                                           Separator).Insert

したがって、コンパイラはこのステートメントの一部として明示的な大文字の定数を受け入れないようです。

これは許容範囲でした

Dim fred as Integer
fred = SEPARATO + HEADE + SUBTOTA

したがって、私の回避策は、列挙された定数を大文字に保つという規則に固執したい場合、複雑な挿入ステートメントの一部として定数の代わりに変数を使用することです。

これがお役に立てば幸いです

0
Steve Roberts