何となく Blog by Jitta
Microsoft .NET 考

目次

Blog 利用状況
  • 投稿数 - 761
  • 記事 - 18
  • コメント - 37042
  • トラックバック - 222
ニュース
  • IE7以前では、表示がおかしい。div の解釈に問題があるようだ。
    IE8の場合は、「互換」表示を OFF にしてください。
  • 検索エンジンで来られた方へ:
    お望みの情報は見つかりましたか? よろしければ、コメント欄にどのような情報を探していたのか、ご記入ください。
It's ME!
  • はなおか じった
  • 世界遺産の近くに住んでます。
  • Microsoft MVP for Visual Developer ASP/ASP.NET 10, 2004 - 9, 2011
広告

記事カテゴリ

書庫

日記カテゴリ

ギャラリ

その他

わんくま同盟

同郷

 

せめて、Option Strict On にしてくれ。。。


件名:join でフリーズ(Insider.NET 会議室)より:

コードはこんな感じです。


class TestA
    dim obj as object
    public sub new()
        obj = new object()
    end sub
    public sub main()
        dim t as thread
        t = new system.threading.thread(new system.threading.threadstart(address of do))
        t.start()
        t.join()
    end sub
    public sub do()
        obj.start()
    end sub
enc class

件名:Validatingでは(Insider.NET 会議室)より:


Private Sub txtTCD_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles txtTCD.Validating
    Dim blnSUTI As Boolean
    Dim sb As New StringBuilder
    '*****
    If ActiveControl Is sender OrElse ActiveControl.CausesValidation = False OrElse sender.Text.Length = 0 Then
        Exit Sub
    End If
    '*** 入力チェック **************
    blnSUTI = Int32.TryParse(txtTCD.Text, mlngKEYTCD)
    If Trim(sender.Text).Length = 0 OrElse mlngKEYTCD = 0 Then
        MessageBox.Show("得意先を正しく入力して下さい", _
        Me.Text, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        e.Cancel = True
        Exit Sub
    End If
    '*** データ取得 **************
    Call mData()
    '*** データ表示 **************
    Call mDisplay()
End Sub
'***
Private Sub 索引ボタンクリック
    Dim frmSAKUIN = New frmSAKUIN
    '*****
    If frmSAKUIN .ShowDialog = Windows.Forms.DialogResult.OK Then
        txtTCD.Text = frmSAKUIN .pTCD
        Call txtTCD_Validating(Nothing, Nothing)
    End If
    '*****
    frmAEIGS020.Dispose()
End Sub

勘弁してくれ。。。

上の方。obj は Object なので、start メソッドを持っていません。Strict Off にしているから実行時まで「start メソッドがあるかどうか」が延期され、、、って、おい!これ、なに?まさか、Thread.Start をしているとか?延々と自己呼び出しをやってんじゃないの?…StackOverflow で落ちるか?何にしても、動かないコードを出して「これが動かない」といわれても、そりゃ、動きませんよ、と。

下の方。sender.Text って、そりゃないよ。。。きっと、On Error Resume Next とかも指定してあるに違いない。Sender に Nothing にして呼び出して、その中のプロパティを呼ぼうとしたら、そりゃ、落ちるよ。


開発者なら。コンピュータと対話をする人なら。もっと、自分がコンピュータに対して何をお願いしようとしているか、自覚をしてください。

投稿日時 : 2008年4月2日 22:40
コメント
  • # re: VB 使うな、開発者なら。
    とりこびと
    Posted @ 2008/04/03 7:45
    …使いますw

    少なくともVisual Basic(.NET)以降では、
    開発に耐えられない言語だとは思いません。

    Visual Basic 2008でのサポート範囲なんてとってもステキですよ。

    おっしゃられることは使い方の問題では…?
  • # re: VB 使うな、開発者なら。
    やじゅ
    Posted @ 2008/04/03 8:20
    タイトルはいただけないないですね。
    作りたいものが出来れば、VBでもC#でも
    いいけどね。
  • # re: VB 使うな、開発者なら。
    Mr.T
    Posted @ 2008/04/03 8:46
    VBでもC#でも学習するのCostが同じなら、C#でいいと思う。
    くだんの「コイツ」はVB使うな、でいいんじゃねとか云ってみるテスト。

    ところで、Call txtTCD_Validating(Nothing, Nothing)
    ってのはワロタ
    alidateの中でデータ呼び出し、表示、ってどうなん、とそちらの方が気になって仕方がない。
    構造化すらわかってねーじゃん。
    #ロボコン0点です。
  • # re: VB 使うな、開発者なら。
    ちゅき
    Posted @ 2008/04/03 11:14
    うーん、VBの問題じゃないような気も...
  • # re: VB 使うな、開発者なら。
    Jitta
    Posted @ 2008/04/03 21:32
    コメントありがとうございます。

     まぁ、目を引くためにも、タイトルはキャッチーに...

    > おっしゃられることは使い方の問題では…?
    > うーん、VBの問題じゃないような気も...
     そうとも考えられるのですが、やはり VB だからこそ…6以前からの移行組だからこその問題だと思います。また、Option Strict が、規定で Off になったことも。

    上:
     C# や C++/CLI では、「Object.Start」というメソッドはありませんから、ここでまずアウト。obj が、実際に何かがわかれば、問題ももっと簡単になったのではないでしょうか。

    下:
     同じく、「Object.Text」というメンバーはありませんから、Sender.Text という書き方ができません。また、「すぐに抜ける」というところも気になっています。なので、「On Error Resume Next が指定してあるのでは?」と疑っているわけです。いちいち「Call」というのも、VB6 より前の書き方ではないでしょうか。

     で、前々から書いているように、元々、VB の販売ターゲットは開発者ではありません。それを、開発者が使うのなら、開発者向けのオプションを使うようにしろください。


     なんか、スクリプト言語などで厳密な型を要求しない言語が優勢になってきていますが、本当はとっても難しいことを開発者に求めているんじゃないか?という気がしてきた。コンパイラが型を解決してくれないということは、開発者が型を管理していなければいけない、ということ何じゃなかろうか。どっちの問題も、型を意識していればそんな難しい問題ではないと思います。「型を意識しなくていい」のではなく、「型を管理しておかなければならない」のではなかろうか。ちょうど、C で void* にキャストしてしまうことにたとえていいのではなかろうか???
  • # re: VB 使うな、開発者なら。
    Jitta
    Posted @ 2008/04/03 21:33
    > C で void* にキャストしてしまう
    → C で、何でもかんでも void* にキャストしてしまう
  • # re: VB 使うな、開発者なら。
    通りすがり
    Posted @ 2008/06/13 11:55
    ある既存のシステムをVistaに移植作業を行うことになりました。

    char* a = new char[12], *b = a;
    *(reinterpret_cast<int*>(a) + 1) = 500;
    a = reinterpret_cast<char*>(reinterpret_cast<int*>(a)+1);
    //中略・・・
    delete[] a;
    //中略・・・
    delete[] b;

    このようなコードでVistaではクラッシュします。
    どこが悪いのかすぐに分かったので
    自分にはこれが製品としてXPでは動いているのが不思議だと思いましたが、

    他の開発者にこの話をした時に
    ご丁寧にXPで同じ風なテストコードを実際に書いてreleaseモードで
    動かして問題が起きない風だったので、別にいいんじゃんって。
    じゃあ、debugでもやってみなよってことでやってもらうと
    エラーを告げるダイアログが出たのを見て初めて
    「ふーんいけないんだ。」

    そんな無知さにこれだけでも驚きだったけど、更に

    「まぁ おかしいと思っていても実は正しくなってんじゃん。XPで動いていたんだし」
    なんていわれました。
    あまりにあっけにとられて こんな話してると「あれ。これって別に問題ないんだっけ?」
    思わず考えてしまったほど・・・

    自分はVC++によるアプリ開発の経験は非常に浅くてあまり知識はありませんが、
    Windowsで何年もVCのMFCで開発やってる身近のエンジニア3人が勘違いをしていた
    ON_MESSAGEのハンドラ関数の定義。
    正しくはLRESULT func(WPARAM, LPARAM);ですし、
    この定義ならVC6だろうがVC2008だろうがコンパイルできます。
    ところが、
    VC6でさまざまな型の(特に戻り値)定義をしてハンドラとしてON_MESSAGEに使っていて、
    VC2003以降でコンパイルしたらコンパイルできないという理由からなのか
    VC2003からはハンドラの定義が変わったんだと口を揃えて言っておりました。

    実際は間違った関数を指定すると、関数ポインタとして別の型に置き換えられて
    関数がコールされるのであきらかにおかしなことをしているのですが、
    自分的におかしいと思ってはいても動けばいいのです。ということです。


    というようなこともあるので
    やはりこの手の問題は開発ツールうんぬんではなくて
    ちゃんとした知識を持っているか、理解が出来ているか この一点と言えるのではないでしょうか。
    (何か話の趣旨がずれてる気も・・・)

    間違っていても動いてしまうことのないVBやらスクリプトの方が安全なのでは
    的な風にすら思えてしまいます(これは間違っているでしょう)

    とりあえず、いえるのは学習に必要なきちんとした
    時間的な余裕もあるのかということも考えて中々難しい問題ではあると思います。
    細かいこと全部きちんと理解してとなると、何も進まない状況にもなりえますし。
    せめて、誰が詳しい人がコードレビュー等必ずして問題点を指摘してもらえる
    環境があればいいのかもしれません。
  • # エントリへのコメント紹介
    何となく Blog by Jitta
    Posted @ 2008/06/19 22:32
    エントリへのコメント紹介
  • # re: VB 使うな、開発者なら。
    癒耶
    Posted @ 2008/06/20 12:53
    初めまして~です。

    VBとかVCとかよりも
    VBだと既定でOption StrictがOffになっている事が問題なのかな?
    入門書とかでもOption Strictの事について
    最初にしっかり書いているものとかは
    あまり見かけないですよね。
    暗黙で型変換されてしまう事に
    恐怖を覚える人は少なくなっているのかな?
  • # re: VB 使うな、開発者なら。
    Jitta
    Posted @ 2008/06/21 20:53
    癒耶さん、コメントありがとうございます。
    ご活躍は、拝見しておりますヨ

    > VBだと既定でOption StrictがOffになっている事が問題なのかな?
     ええ、そこを思っていたのですが、「エントリへのコメント紹介」に書いたように、どうも、それが全てではないようですorz
  • # Hi! Someone in my Myspace group shared this site with us so I came to look it over. I'm definitely enjoying the information. I'm book-marking and will be tweeting this to my followers! Superb blog and fantastic design.
    Hi! Someone in my Myspace group shared this site w
    Posted @ 2022/06/12 23:40
    Hi! Someone in my Myspace group shared this site with us so I came to look it over.
    I'm definitely enjoying the information. I'm book-marking and will be tweeting this to my followers!

    Superb blog and fantastic design.
  • # ロレックス オーバーホール デイトジャスト
    nrghftnjb@ybb.ne.jp
    Posted @ 2022/08/04 20:00
    超人気質屋

    ★最高等級時計大量入荷!
    ▽◆▽世界の一流ブランド品N級の専門ショップ★
    注文特恵中-新作入荷!-価格比較.送料無料!
    ◆主要取扱商品 バッグ、財布、腕時計、ベルト!
    ◆全国送料一律無料
    ◆オークション、楽天オークション、売店、卸売りと小売りの第一選択のブランドの店。
    ■信用第一、良い品質、低価格は 私達の勝ち残りの切り札です。
    ◆ 当社の商品は絶対の自信が御座います。
    おすすめ人気ブランド腕時計, 最高等級時計大量入荷!
    ◆N品質シリアル付きも有り 付属品完備!
    ☆★☆━━━━━━━━━━━━━━━━━━━☆★☆
    以上 宜しくお願い致します。
    (^0^)
タイトル
名前
Url
コメント