掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
FtpPutFileの戻り値 (ID:86018)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
>>Dentalさんコメントありがとうございます。 >これらのサンプルは、あながち間違ってもいないかと。 その通りです、そのコードを実行しても動作に全く問題は有りません。 1番最初の質問で書きましたが、関数の戻り値をBooleanで宣言しても 「= True」で判断するのではなく、「<>False」で判断すると動作的には 全く問題有りません。 ただ Longで宣言し、Booleanに代入し、更にそれを0かどうか判断するのは サンプルコードとしてはいかがかと。 魔界の仮面弁士さんの説明によると、195653の方は宣言が完全に間違っていますね。 APIの場合0以外の値がVBのTrueに自動変換されないと言うことなら、 APIの関数の戻り値をBooleanで宣言することは無いかなと。 >VB標準のコードだけであれば、+1 になる事はありませんが、 >API呼び出しの場合には、そうした問題がありえるという事で。 この辺は言語の仕様なんでしょうかね。どこかに明確に記述してあるとか。 Boolanに1が入った時の開発環境の困惑ぶりは結構見ものです。 先に書きましたけれど、Value表示のバルーンでは「R = True」と出て しかも「If R = True」では「True」と判断されない。 MSDNでは >ブール型 (Boolean) の変数は、16 ビット (2 バイト) の変数です。 >ブール型変数が格納できる値は、真 (True) または偽 (False) だけです。 となっていますが、「True」であるけれど「True」と判断されない 第三の値が代入されている。 >できる値は これは微妙な表現ですね、二つの解釈が出来ます。 1、入れてはいけない。 2、入れようとしても出来ない。 もし1だとしたら305598のコードはおかしいですね。 2だとしたらAPIから入ってしまうのはおかしい。 普通言語仕様としては、こう書くとTrue、False以外の値を入れようとすると エラーを出してリジェクトしようとしますよね。 >3、開発環境とネーティブコードコンパイルで評価方法を変えないでほしいな。 説明不足でした。1番先の質問にも書きましたが、私はFtpPutFileSubをファンクション の中で使用して、その戻り値をそのファンクションの戻り値としていたのですが、 こうすると、「= True」と判断しても、開発環境では不具合が出ませんでした。 ところがこれをコンパイルすると、「= True」と判断されないのです。 Booleanを0で判断するか、0以外として判断するかの違いかなと思いまして、 それだけならスピードなどには殆ど影響が無いのではと思い、それなら統一してほしいなと。 >>Sayさんありがとうございます。 >開発環境では正常動作するが、ネイティブだと正常でない 結構有りますね、VB6で時間のかかる処理をマルチスレッドでやろうとして 結構時間をかけてコードを書いたのですが、開発環境だとエクセレントに 動作するんですが、ネイティブだと落ちてしまう。 何の事は無いVB6ではマルチスレッドは出来なくなったということを後で知ったりして。 デバッグはネイティブでコンパイルして徹底的にやらなければだめですね。 >仕様の問題というより 我々仲間内で 修正するつもりのある不具合------「バグ」 修正するつもりの無い不具合------「仕様」 こう呼んでいます。行儀が悪くてすいません。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.