2011-01-21 35 views
3

私が使用しています以下のVB6型の不一致エラー

IF obj.propery THEN 
    ... 
    END IF 

コードに次の型の不一致エラーを取得していますが、ビジュアルソースに安全であり、他の開発者が同じプロジェクトを実行したときにコードがエラーなしで実行されます。このプロパティは実際には問題が発生する可能性のある文字列です。プロパティをデバッグしてテストする場合、つまり

?obj.propery = True 

少し奇妙なエラーはスローされません。プロパティの上にカーソルを置くと "True"と表示されます。私はこの問題について少し調べましたが、これはOPTION STRICTと何か関係がありますが、私は他の開発者と同じバージョンのコードを持っていますが、OPTION STRICTはOFFではなく、変更されていませんコード内にはまったくありません。実行時にこのコードの実行に影響するその他の設定はありますか?

+2

VB6には「Option Strict」はありません。あなたが行った検索は、おそらくVB.NET関連のリソースを引き起こしています。他の*開発者がVB.NETを使用している可能性はありません。 –

+0

「obj」はどのような型として宣言されていますか? – jakdep

+0

objはカスタムタイプで、プロパティは文字列プロパティです。 –

答えて

0

あなたはそのへのアクセスを開始する前の状態

IF isempty(obj.property) = false AND isnull(obj.property) = false 

しかし

OBJをチェックするのが賢明だろうが、最初のNULLでない場合、私はあなたの中に、より明確にするために傾斜させることだろうプロパティ....

+0

私はobj.property = "True"を試しましたが、うまくいきます。しかし、会社内の他のすべての人のために働いていれば、コードを変更することはできません。 –

+0

obj.property = trueおよびobj.property = "True"は同じものではありません。 1つはブールチェックで、もう1つは文字列値チェック –

+0

です。何らかの理由で他の人がコードを実行している場合IF obj.property THENがobj.property(string)をブール値にキャストしています。私にとっては当然ですが、obj.property = "True"は文字列であるため、=演算子にブール値を返します。他の人にとっては、obj.propertyをブール値に自動的にキャスト/変換するようなものです。 –

2

これはVB6とは関係がありませんでした。XPモードとは異なり、XPMUserではなく別のドメインのユーザーアカウントを使用していました。私がXPMUserを使用するとき、アプリケーションはこれを実行するのが非常に奇妙で、なぜこれがわからないのですか?もし誰かが私が聞きたいと思う理由があれば。

+1

これは何が起こっているのかを知りたいと思っています。私はあなたが犯人を見つけられたことをうれしく思っています。私は実際に今夜寝ることができるでしょう。もちろん、XPモードで動作するとVB6にエラーが表示され、VB6コードを書き込んだ人が* XPモードで強制的に開発されなければならないかどうかは不思議です... –

+0

私は同じ問題を抱えていますXP仮想マシン中に文字列に文字列を割り当てる。 – jlafay

3

特に、オブジェクトプロパティにアクセスしているときに、タイプミスマッチエラーの原因がまったく異なる可能性があります。私は何らかの理由で、登録されているDLLとは別のDLLを指していたときにこのエラーが発生しました。 VBでは、ビルド時に「オンザフライで」DLLを登録するので、期待していないコードにアクセスする可能性があります。これはあなたのケースでは問題ではないかもしれませんが、それは検討する価値があります。

関連する問題