VB.NET質問スレ(Part43) [無断転載禁止]©2ch.net
レス数が1000を超えています。これ以上書き込みはできません。
やっぱみんな最新の使ってる?
俺は未だに2005だけど(新しいのにしなきゃいけない理由が見当たらない) VBの場合は新しい機能を使うと他の連中に理解できなくなる(というか理解しようとしてもらえなくなる)から、
実際新しいものを使う理由はないよ
VBは変化を拒否する人達のための拠り所なのだから VB2008以降は開発方針が変わって(格下げされて)C#の方言になっちゃったから、
変化を拒否する人達の味方としてのVBは2005まで
2008以降は機械的にC#に合わせるだけでVBerに見向きもされない虚しい機能拡張ばかり vb.netも今はしっかりした言語だと思うけどなぁ。
なんで嫌われちゃうかわからんから、理由が知りたいけど。
未だにオブジェクト指向って何??って人もいないと思うけど。 >>6
アプリを動かす環境の.NET Frameworkによっては新しいのじゃないとダメではなかろうか ライブラリ的な汎用性の高いものを作るときはC#のほうがいいし
実際にC#で書いてるけど、特定の客むけ業務アプリはVB使うなぁ
C#でガチガチに書くと保守できる人いなくなっちゃうし
客のファジーな要求仕様に対しては、きちんとクラス継承して設計するよりもコピペで実現したほうがいい場面も多い。 ラムダがもう少し書きやすければな
後は各種初期化子も短くしてほしい
他に不満はないかな >>14
C#でガチガチっていうと
凄く結合度が高いイメージがあるな >>14
今時の業務アプリをなんでVBで書いちゃうかなあ
保守できないのは言語のせいじゃねーだろ VBと比べてC#が圧倒的に勝っているポイントはλが書きやすいところかな
この他には明確な差はない VB関数がないとかMyがないとかデフォルトインスタンスがないとかOnErrorGotoがないとか色々あるだろ
まあ一番違うのはプログラマの平均品質だけど >>25
どっちみち使わない機能を差異としてカウントするのはナンセンスだよ
c#で日常的に使う機能とvbで日常的に使う機能ではλの書きやすさ以外に致命的な差はない >>27
C#目線ならそりゃ一緒だろうさ
VBしかやってなくて他に知ってる言語はCOBOLくらい、なんていう連中が
VBには腐る程いるんだぞ
仕事ならそういう連中がひねり出した糞の山をうんざりするほど見ることになる >>27
たとえばASP .NET CoreのテンプレをYeomanで作成し、Macで開発してAzureにデプロイするってのをわざわざVB.NETでやりたいとは思わんね。Referenceの差は致命的。 まぁたいして変わりゃしないんだから両方覚えておけばいいよ Reference見てるレベルの人なら使いやすい方使えばいいやん >>31
使いにくいって指摘が伝わってないなこいつ。第一.NET CoreにVB.NETはまだ対応してないし。C#との差は歴然としてる。 >>28
今は人の話も過去の資産の話もしてない
純粋に言語として比較したらどうなのという話な
そしてその決意はλ以外大差ねえなって事ね VB.NETとビジュアルスタジオつかってデスクトップアプリ作りたいのですが、
プルダウンから選択したり数値入力して、そんで出力ボタンおすと、
エクセルに計算結果とかもろもろ自動で入力したものが出るようなのを作りたいのですが、
こういうのに特化した参考書とかありませんか?
ネットで調べながらでもいいのですが、できれば本でやってみたいと思っています >>34
Excel単体、VBAだけで良いような… 最終的には、プルダウンで選んだ条件で出力する表のかたちと画像を代えたいんですけど、
エクセル単体でもできますかね?それならそれでいいですが・・・ >>36
EXCELのスレに来てた人?
たらい回しという言葉を知ってるかい? >>34
vb中学校っていうサイトが情報古いけどおすすめです。 中学校は執筆者自身のスキルに難があるからな
「初心者向け」を自分が理解してないことの免罪符にしてる印象
JavaやC#だと本人が完全に理解してる上で初心者向けにかいつまんでるのが多いんだけど、VBでとなると俺は知らないな VBAで初心者向けと言えば田中さんだと思うんだけどなぁ 未だにVB6使ってるし、vs2015でもVB.NET使ってるが
そろそろc#への移行どきかねぇ
今やネットでの情報はほとんどc#でのコーディングだし
そうなると初心者向けっていう利点が無くなるし できることは変わらないんだから無理に移行する必要はないような
移行というより選択肢を増やすという意味ではJavaやるのがいいんじゃないか?
Javaに慣れたら自然に.NETでもC#を使いたくなるだろう (純粋に技術的に可能か不可能かで言えば)できることは変わらない→せいかい
(プログラマの能力的に)できることは変わらない→まちがい >>47
ねえねえ、.NET Coreの開発をVB.NETでどうやったらできるの?まだ対応されてないよね? チェックボックスのFalse/Trueに対応してリストボックスが有効/無効になるイベントドリブンがあるんですが
コレが10コとか20コある場合、同じだけイベントプロシージャを作らないとダメですか?
もっとスッキリさせる方法があれば知りたいです。 どっかのブログでVB.NETは複数行のコメントが出来ないと書いてあったが、
#if 0 then
~
#endif
で出来るじゃん。 どこが痛いのかな?
デバッグ用のコードを埋め込むさいに
よく使われる手法なんだが・・・ お前らVB.Netなんかやってるの?
俺なんか今の仕事場VB6.0だぞ。
CPUはPen4でOSなんかまだXP。
XPはマズいので何か機会が有ったら通報してみようかと思ってる。 >>55
確か明治時代はみんなそうやってたんだっけ? >>58
教えてください
明治時代のVSのバージョンはいくつだったんですか?
Windowsのバージョンは?
CPUは何だったんですか?
ビル・ゲイツは生まれてなかったと思うんですがマイクロソフトはあったんですね? >>59
煽るならもうちょっと捻れよ
VBerの知能レベルが知れる >>58
VB6.0の時代、ベテランプログラマーがそう書いてたから真似した。
今もそのクセが抜けない。 >>60
じゃあ知能レベルの高い()煽りを御享受ネカ゜得るかな?
知能レベルが高いなら出来るよねw でもこれで>>60がやってるのがjava辺りだったらウケるよな フォームにボタン1つ設置して、そのボタンおすと新しいエクセルのファイルが作られるようにしたいのだけど、どうやればよいですか?
参照の追加から、ライブラリ?を追加することをしなければならないのはネットで理解したのですが、
さしあたりサンプルコードなどをコピペしてみても、エラーに泣てうまくいきません ファイル作るだけなら空のファイル用意しといて名前つけてコピーするだけじゃんw >>51
checkboxとlistboxがペアになってるならUseControl作るのが正解だろうね ASP.NETなんですが、
フォーム認証をやってますが、ログインフォームで、
System.Web.Security.FormsAuthentication.SetAuthCookie(userID, True)
という風に、永続化させたとします。
んで、次回からはクッキーが削除されない限り、ログインフォームに来ないで
前回のログイン情報が生きてるように見えます。(Context.Userに値が入ってきてる)
ここまでは全く問題ありませんが
ログインフォームでは、userIDに応じたユーザー名(漢字)もDBから取得していて
Session("userName") へ格納しています。
永続化させると次回からはログインフォームに飛んでこないようになるため
この仕組みが通らず、Context.User に値は入ってるけど、Session("userName")は空という事態が起きます。
永続化させた後にも、ログインと同等の処理がglobal.asaxの中のどっかを通ると思うんですが
Context.Userの値でDB検索して漢字名をSession("userName")にセットするにあたり
global.asaxのどこへ書くといいですか? Sessionが認証状態を超えるなら考えないといかんが
とりあえずSession_Startあたりで良いんじゃね ・商品がカテゴリ分けされていて階層で管理されている (例. カテゴリ1 → カテゴリ1-1 → カテゴリ1-1-1 → 商品A)
・商品管理画面にカテゴリの階層構造をツリーとして表示する(顧客からの要望)
・管理する商品件数は1000件程度
・ツリー内の好きな位置で新しい商品を追加したり、商品を削除したり、カテゴリ(ツリー構造)を変更したりする
・ツリー内容は全展開する(顧客からの要望)
上記のような機能を実装しているのですが、
1000件程度でもツリーにノード追加したり、階層構造を変更したりすると時間が掛かってしまいます。
BeginUpdateで描画更新をとめる処理を入れるのは既に試していますが、
レスポンスが悪いと感じております。
そこでTreeViewでBeginUpdate以外の方法で処理を早くする方法もしくは、
階層構造が表現できて1000件程度でも高速であるTreeView以外の代替コントロールはありますでしょうか? >>71
レスありがとうございます。
グリッド関連ででツリー構造をうまく表現できるものがあるか調査してみたいと思います。 パネルを敷いて、その上にボタンを貼り付けるとします。
ボタンの位置、上左を起点にして位置決めしたとします。
んで、ボタンの上と下の余白とが同じになるように
パネルの大きさを弄ってますが、これが極めて面倒
(プロパティウィンドウでサイズを数値で打ったほうが早いレベル)
デザイナでマウス使って、簡単に位置合わせできないもんでしょうか。 >>73
同じ物(パネルの中にボタンがある)が複数あるのならコピペすりゃいいんじゃないの?
そもそも本当にパネルの中にボタンが一つだけ(と言ってるように聞こえるけど)しかないなら
パネルが必要あるように思えないんだけど。 >>73
a) プロパティウインドウでサイズを打つ
b) デザイン時は適当に配置して実行時にサイズ変更する
c) VisualStudio のアドインを作る これから自作の業務ソフトを作る為に勉強始めようと思うのですが、まともなコーディング出来るまでどれくらい時間かかるもんでしょうか
VBAをちょこちょこやってるレベルです
会社に出来る人はいないので独学しかないです
いい勉強方法などあれば教えていただきたいです >>76
目的のものがあれば調べまくってとりあえず、動くものを作る。
ちゃんと動けば楽しくなって、更に深く調べる。
こんな繰り返しでだんだんと上達してくるんじゃない?
最初からキレイで無駄のないコードを書くのは難しいよね。
どのくらいの期間かは、本人の努力でいかようにも短くなるんじゃない? >>77>>78
ありがとうございます。
.NETで一通りコーディング出来たらC#で同じもの作ってみたいと思ってます
とりあえずやってみるしかないですよね。作りたいものは決まってるので頑張ってみます
クラス設計出来るようになるだろうか。。 VBは情報の質が低いから初心者は変な癖が付きやすい
まともにオブジェクト指向を解説してる書籍なども少ない
どうせC#もやるつもりなんだったら最初からC#でいくほうが近道だよ まぁC#でもjavaとかに比べるとObject指向の本とか少ないけどな。VBよりマシってくらいで。
C#もjavaも似たような構文してるから両方やっとくといい。
ついでにC#とVBも構文じゃなくて中身がそんなに変わるもんじゃないから一緒にやっとくといいよ。 VBはオープンソースプロジェクトがほぼ皆無だからなあ
「スキルの高い人が正しく使えばこうなる」というものに触れる機会が無いのは致命的 vbは構文が破綻しかけてるからこれからプログラミングを始める人がやるべき言語ではない .NETがとっつきやすそうだったのでクラスがどういったものがあるか勉強しながらC#に移行出来ればと考えてたんですが
.NETだとオブジェクト指向らしくないコーディングをする癖がついてしまうでしょうか
C#に移行すればそんなこともいってられないくらい矯正できますかね? いや、VBの方がC#より簡単とか今はないよw
宗教論争抜きでもうあえてVBを選択する理由はないから、素直にC#にした方がいいと思う。 ただVBはやっておくと結構いきなりVBAのコードが書けたりする FrameworkがC♯なんだから素直にC♯にしとけよ VBは大文字小文字の区別がないからパンチが雑になる
VBやったあとにC#触るとあれっ?てなる
かっこで条件をかかなくていいのはVBの唯一好きな点だな >>87
c#を選ぶ理由も無いのにc#をゴリ押しするのは宗教戦争でなくて何?
c系は見た目が嫌だから嫌いって俺みたいなのもいるんだが? >>92
気付いてないみたいだけど、まさにお前さんがやってるようなことが宗教論争なんだよw
見た目なんて慣れの問題だよ。多くの人がそう言ってるでしょ。
本当に致命的に欠点があるのならこんなにC#が支持されてるわけないじゃん。
そういう個人の好みは置いといて、今から始める人がどちらを選んだ方が得をするか、
そういう話でしょ。
ユーザー数や公表されるサンプルコードの数でC#が勝るのは客観的事実だし、.NETの標準がC#なのも事実。
要するにC#を選んだ方が圧倒的に得なのは動かしがたい事実だよ。 出たw
「多いから」
多いのが良けりゃトヨタ車が一番いいクルマだわなw 一番の違いはC#を覚えればVBは自動的に使えるようになるけど逆はそうでもないという点だな
そして初学者にとっての学習コストはC#のほうが低いんだからVBを選ぶ理由がない
C#使える人でVBにコンプレックス持ってる人はまずいない
その逆は見ての通りだ >>96
>C#を覚えればVBは自動的に使えるようになる
さすがにそれはないよw
っていうかその程度にはVBerもC#使えるでしょw まあ、ホントに全く新規で始めるのにVBかC#かってなら俺もC#を勧めるが
>初学者にとっての学習コストはC#のほうが低い
には同意できん
よい教材か、正しい指導者が居るなら同程度かVBが勝る
ただし、それに当たる確率はC#の方が多いけどな >>98
いやC#の方が覚えること少なくて初心者向きだと思うよw
VBはなまじ今となっては使わない方がいいレガシー機能とかあってとっつきづらいと思う。
WitheventsとHandlesでとりあえずデリゲートを理解しなくてもイベントが使えるとか、例外もあるけどねそりゃ。 覚えるのが少ないって
キーワード増やしたくないって結果が
+=でイベントハンドラ割り当てたり、拡張メソッドにthis指定しろとか言う言語だからなぁ
ちがう機能には違うキーワード割り当てる方が初心者むきだぞ
今となっては使わない方がいいレガシー機能とか初学者に教える必要ないし >>76みたいにVBA経験者ならVB.NETの方が敷居は低いだろうね そうかな
雰囲気が似てるだけの全くの別物だから、ちゃんと「プログラミング」として入門し直すにはVBAの知識なんか邪魔になるだけだと思うが なんで初心者でない体の物言いばかりなの?
まるで説得力が感じられない
自分の身の丈に合った目線で話せば良いのに <sammary>タグ中に<para>いれてもxmlドキュメントで改行できないんだけど、仕様?
VS2012ね 自分の場合AccessVBAですが、その知識が邪魔になった事はありませんね
VB6というかVisualStudio6.0の知識(仕様)が邪魔になった事はあります
基本的にVBAやVB6で培った知識は役に立ってますよ
また、似てる似てないはVBAからVB.NETへの移植をやると似てるのが良く分かります
稀なケースですが関数の中身をそのまま新メソッドに張り付けるだけで動く事もあります まぁVBとVBAは全くの別物ってことはないな。
ただ、まずVBAだけやっていた場合はクラスを使って
ポリモーフィズムで、
とかそんなところにすら至れない人が多い。
.NetやっててVBAの改修作業とかたまにやると
まるでコードのステップ数の多さをドヤ顏で自慢するかのような関数とか平気で作られていて
ストレスが溜まることもよくある。
ただ、今の仕事場でjavaで作られているシステムは1メソッド5000行とか有ったりするので
改修するとき作った奴に殺意を覚えたりするけどね。 >>104
xml自体から消えることはないはずだからそれをどう表現するかは使う側次第
とりあえずインテリセンスに影響しないのは仕様 >>107
インテリセンスにこそ影響しないと論外なのにな…
というかC#だと改行されるみたいだね
仕方ないからユーティリティ系(そもそもこんなものを作りたくないが)はC#で組むことにするよ VB.NETもC#も、東北弁と九州弁の違いでしかないだろ
似たり寄ったり
C++も使える俺だけど、C#ってもVBみたいに感じる
特に変数の扱い(解放)に不安を感じる VBにのみあるWith〜End Withは素直に便利だと思う >>110
むしろあってもいいけどなくてもいい機能だねw
オブジェクト初期化子が使えるケースが大半だろうし。
WithevemtsとHandlesの仕組みはC#にもあったら便利だと思う。
C#の==の既定の実装は変だと思う。これはVBの仕様の方が優れてるね。
あと、細かいことだけど、C#はフィールドを宣言と同時に初期化する時、インスタンスメンバーを
使えないとか、構造体のプロパティをコンストラクタで初期化できないとか(回避方法はあるが)
もちろん理由はあるんだろうけど奇妙な制約があるけど、VBにはそれがないのはいいね(もちろん弊害もあるんだろうが)
>>111
My爺さんはリソースぐらいしか使わないし、使わない方がいいと思うよw
あえて使う理由がない。
あんなのVBが馬鹿にされる理由の一つになってるだけw VB.net固有ではないかもしれませんが、
VB.netを学習しているのでこちらで質問させていただきます。
Linq to EntityでJoinやGroupJoinなど
リレーションを定義したメソッド用意しようと思っています。
(Linqでリレーションを毎度記述するのはめんどくさいので一か所で済ませたい)
その際、IQueryableで返したいんですけど例えば2つのテーブルを結合したときに、
IQueryable(匿名型)は返せないしIQueryable(Of Tuple(Of Table1,Table2)も無理そうなので
Table1とTable2のプロパティを持ったJoinTableクラスみたいなのを作って
IQueryable(Of JoinTable)にすればできるんですが、
これだけのためクラスを作るのは何となくしっくりこないんです。
この方法しかないでしょうか?
(Code Firstでのテーブルクラスの外部キーでのリレーションや
Fluent APIでのリレーション以外で) ふつうリレーションがあるなら、そのエンティティにリレーション定義すると思うんだが
何がしたいのか全く分からん ちょっと質問がイミフでした。
MVCとかMVVMのMでEntityFrameworkを使って
DB関係のロジックをうまいことコーディングしたかったんだけど
もうちょっとアプローチを変えてきちんと整理してから
改めて質問いたします。すいませんでした。 カスタムコントロールにビジネス上の知識を持たせるのって有りですか?
商品コードは特定の正規表現を満たす文字列であるというビジネスルールがあるとします
@正規表現による検証ができるテキストボックスを作り商品コードを扱う各画面に配置してデザイナで商品コードの正規表現を設定する
A商品コード専用のテキストボックスを作る
@はコントロールがビジネスルールを直接知らなくて良いのでUIとビジネス層が疎結合ですが各画面に商品コードの正規表現を設定する手間がかかります
Aは製造もメンテナンスも楽ですがUIがビジネスの知識を持つ必要があり結合が強まります ドンチュー シンク ソー インディーズ レキシカル コンストラント アンド ビジネスルール? 検証するコントロールなりクラスなり作って、必要ならそれがテキストボックスの参照持つのが本筋の気はするけど
どこまでUIとロジックの分離をするのかと
ビジネスロジックと定型フォーマットチェック程度の一般的なロジックなのかの切り分けどう考えるかじゃね
個人的にはビジネスロジックを含んだUIパーツがあってもよいと思うけど >>118
@のカスタムコントロールAを作って
それを継承して正規表現を設定済みのカスタムコントロールBを作る >>118
どっちもよくないと思うよ。
入力の検証に必要なルール(この場合は正規表現バターン?)はあくまで
ビジネスルール側から提供されるようにすべきだし、それで何の問題もないでしょ。 あ、ちょっと説明が足りなかったけど、要するにこの場合は
カスタムコントトールがビジネスロジック側の適当なクラスにある、検証に必要な正規表現パターンを返す
静的プロパティか何かを参照するだけ。 >>123
>カスタムコントトールがビジネスロジック側の(略)静的プロパティか何かを参照するだけ
UIパーツ(カスタムコントロール)がビジネスロジッククラスに依存するのはどうなのよ そもそも正規表現で制御出来るような単純な字句的制約はビジネスルールとは言わん
それとも数値専用のテキストボックスですらビジネスルールだからUIから分離すべきとでも言う気か >>126
正規表現が使えないならビジネスロジック側に検証用の述語メソッドを用意してもらう。
コントロールをより汎用的なものにするために、>>118にあるように
コントロールに検証用の正規表現パターンのプロパティ(あるいはPredicate<T>の
プロパティ)を持たせてもいいけど、その場合もデザイナで正規表現パターンを
設定しちゃうのはまずい。
検証用の正規表現パターン、あるいは述語メソッドはあくまでビジネスロジック側から
受け取るようにしなきゃ あと、数値だって上限下限があるとか、特定の数値は不可とか、
固有のルールはいろいろありうるよね >>128
なぜそれレスを俺にするのかよく分からんな
俺は
そんなものはビジネスルールではない
と言っているのだぞ >>129
そういう制約はビジネスルールに入る場合も多いが
単純に数値であるという字句的な制約はビジネスルールとは独立したものだ >>130
よくわからんこと言ってるけど、例えば正規表現で簡単にフィルターできる、
「ユーザーIDは半角英数字で8〜20文字、ただし先頭の文字は半角英字のみ」
だって立派なビジネスルールだ。 画面に配置する度にテキストボックスに何が入力されるのかを判断してデザイナから正規表現を設定したりLoadイベントで検証オブジェクトを注入したりはめんどくさい
型が分かってるなら○○型用テキストボックスを作って配置するだけにした方が簡単だと思う
でもなんとなくUIが知識を持ちすぎてるように感じて気持ちは良くない >>132
こう言えば分かるか
ビジネスルールが興味があるのはあくまでもValue
UIコントロールが制御するのはValueとして評価される前のTextのValidation >>135
そうか、じゃあこれはどうだ
ユーザーが入力したものはあくまでもキャラクタコードの羅列にすぎない
当然ビジネスロジック側が扱える値として評価出来ないようなデタラメなものも含んでいる
それをビジネスロジックが望む値として評価出来るようにするまでがUIコントロールのもつ役割
それ以降の値の持つ意味的な制約をコントロールするのはビジネスロジックの仕事 >>136
言いたいことはわからないでもないが、例えば現実の問題としては
入力したユーザーIDが不適切な場合はダイアログのOKボタンをクリックする前に
ErrorProviderか何かで通知するか、そもそも入力できないようにして欲しい、
という要望があったりする。
繰り返しになるけど、そもそも論として、ビジネスロジック側がUIに依存したらおかしいが、
UIがビジネスロジックに依存しても何もおかしくない。 >>137
いや俺が言ってるのはどっちが依存したら良いとか悪いではなくて
validationにもUI側が受け持つべき部分とビジネスロジック側が受け持つべき部分の
2種類あるという事だ
そして元々>>118が言ってる商品コードを表す文字列のルールはUI側が受け持つべき部分であり
ビジネスロジック側が扱うのは商品コードとして有効な値に評価された後でよい
という事な >>136
ビジネスロジックが求める形式はビジネスロジックしか知らないはずだけど 入力項目をファクトリから生成するようにして
ロジックの配下におけばいい >>139
うーん
ビジネスロジックが知っているのは値の持つ意味
特定の文字列が特定の形式、これはむしろクラスと考えても良いが
に合致するかどうかってのはビジネスロジックが知る必要はない >>141
コード値のプレフィックスを見て処理を分岐するとか
文字列の形式がビジネスロジックに影響する例は探せばいくらでもあると思うけど?
もちろんプログラム設計が悪いとかじゃなくそういう要件が現実にあるって話で >>138
そんな分類はプログムを綺麗に書きたいプログラマ側の都合に過ぎないよ。
何の意味もない。
ユーザーから見たら怠惰なプログラマのただの身勝手に過ぎない。 >>142
その例の場合は、たまたま、というか確かに現実的に多用される手法だけど
値の意味を文字列の形式で表わす様に設計されたコードである
為にロジック的に文字列の形式を評価して分岐しているように見えるというだけで
原則的にビジネスロジックが判断してるのは値の意味なんよ 今時webのUIだって、入力した値が不適切なら入力した段階で教えてくれるよね。 >>143
おいおいプログラムを綺麗に書きたくて議論してたんじゃないのかよw >>146
こちらはプログラムを綺麗に(可読的かつ後の修正に耐えるように)
UIがビジネスロジック側から提供される入力検証用のロジックを参照せよと言っている。
君が言っているのは、そもそもUI側でビジネスロジックべったりの入力検証なんかするなという話。
それはただの現実の要求を無視したただの怠惰だ。 >>147
別にお前の意見
> UIがビジネスロジック側から提供される入力検証用のロジックを参照せよ
これを批判するような事を言ってるつもりは全くないのだが
なんか言い方が悪かったか? >>144
たまたま文字列じゃなくて
まんまドキュメントにナントカのIDは先頭がこの文字で何桁のハイフン区切りでハイフンの後ろを取り除いたら親ナントカのIDに一致する文字列ですみたいなことが書いてあったりする
これはプログラミングで必要だからそうなったものではなく実際にエンドユーザーがそういう認識でナントカIDを認識、運用している
これはどうみたって見た目の問題じゃなくビジネスロジックじゃないかな? >>149
うん、ユーザーは字句表現と値の意味を区別するって意識がそもそもないからな
でも開発者はそこから字句表現と値の意味を分離してビジネスロジックの本来的な意味を
読みとらないとゴチャゴチャと整理されないままの融通の利かないいわゆる
「使えないシステム」が出来あがる >>150
少し話が展開しすぎたから俺もよくわからんw >>137
>UIがビジネスロジックに依存しても何もおかしくない
別にお前の意見に意義があるわけでなないんだが
UIパーツ(全体としてのUIではなく、あくまでUIを構成するパーツな)の再利用性についてどう考えてるのか教えてくれ ×意義
○異議
な。意義がないとか、全否定してるみたいだから訂正しとく >>153
もう書いてますよ>>128
汎用的に作った方がいいか、どの程度汎用性を持たせるかはケースバイケース。
別に一つの目的にしか使えないコントロールがあっても何も悪くない。 >>152
お前の意見はビジネスロジック以前の単純なチェックはUI自身でやらせろってことだと思うが
じゃあ、ビジネスロジックにかかわる入力チェックを行うUIパーツはどうあるべきだと思うの? >>155
>別に一つの目的にしか使えないコントロールがあっても何も悪くない
なるほど。おおむね同意だが、さすがに>>128からこれを読み取るのは難しいw
まあ、これを許すのなら
>デザイナで正規表現パターンを設定しちゃう
ようなものや、いっそコントロール自体に検証パターンをハードコーティングしたようなものも
許されていいんじゃないかという気もするけどな
まあ、その辺の加減はまさに
>どの程度汎用性を持たせるかはケースバイケース
って話ではあるが >>156
どういう意図の質問なのかいまいちよく分からんが
俺が言っているのは
UIで行なうべきはレキシカルなvalidation
ビジネスロジックが行なうべきはセマンティックなvalidation
だから原則的に
ビジネスロジックにかかわる入力チェックを行なうUIパーツ
というのは存在しない
ただし俺はジョンレノンと違って現実見てる人だから
UI側でセマンティックなvalidationをした方が実装的に都合が良い
というのであればそれはそれで全くかまわんよ >>159
実装の都合じゃなくて、ユーザビリティ的に当然にそれを求められるわけなんだが...
セマンティックなvalidationを行うためのUIコントロールはどうあるべきかって話をしてたと思ったんだが
ちょっと違う次元の話をしてらしたのね >>160
いや元の質問はレキシカルなvalidationについての質問なんだが
それをお前らがセマンティックなvalidationであるかの様に話してるから
いやそれは違うぞ、と
こういう流れやね
で、ユーザビリティの為にセマンティックなvalidationをUIが受け持つ必要は全くない
そこはあくまでも実装上の簡便性と拡張性とのバランスの問題 >>161
>カスタムコントロールにビジネス上の知識を持たせるのって有りですか?
>商品コードは特定の正規表現を満たす文字列であるというビジネスルールがあるとします
正規表現っていうのはあくまでビジネスルールの例として出されたものであって
UI(カスタムコントロール)とビジネスロジックの関係が主題だと読み取るのが当然だと思うんだがな
わかってて論点をずらしてるのか、わからないから論点がずれてるのか
ま、これ以上はまともな議論になりそうもないからこの辺で俺は引っ込むわ お前ら
UIとBLの間にサービス層というものを
作ったことがないのですか VBで何言ってんの
イベントハンドラにベタ書き、
レビューで文句言われたらモジュールにそのまま移動するだけ
これがVBやで >>164
サービス層やビジネス層に渡すパラメータの検証の話をしてるのでは? どこもそうやで
コントローラーとか作ってもいいけど、何書くか迷う人続出 だってうちの会社Linq使うなっていうんだもん…
8000行の画面のカスタマイズ(クラス名はfrm00100000020)を押し付けられても困るし… メソッドチェーンなら誤魔化せるだろ
それか非拡張メソッド形式で呼び出し
まさかメソッド禁止ってこたないだろうし フォームにコンテナ(たとえばGroupBox)を張って
そのコンテナの中にテキストボックスを数個おいて幅などを調整
最後に、そのテキストボックスがセンターになるように
コンテナの幅や高さを弄っているのですが、きちっとセンターになりにくいです。
(手間がかかる)
コンテナに含まれるコントロールに応じて
コンテナサイズを自動的に調整する手段はないのでしょうか。 >>171
率直に言ってどこが手間かさっぱりわからん。
っていうか、あんたいつも質問だけしてトンヅラしちゃう人だよねたぶんw >>171
Loadイベントで計算すればいいのでは? VBやってる奴が、VB消えてC#やるくらいならJAVAやると言ってたけど
絶対にC#やるね
VB以外使う気のない向上心の低い人間が
eclipseやnetbeensなんぞ
使える筈がない VB6のプログラムをVB.NETにリプレースするとか話があるんだけど
たぶん、VB6のお作法を可能な限り再現したいんだろうな。
goto文とか。。。 >>174
向上心があってもC#だとおもうけどな
最近Iavaの仕事入ったけど何が良いのか分からない
昨日javaやってる人の話では
取り敢えずNull許容型も使えないし
OrElseやAndAlsoも使えないらしいじゃないか
この調子で行くと実はvb6と大して変わらないんじゃないか? >>174
向上心もクソも、Javaのドカタ開発なんか決まりきった枠組みの中でコピペ垂れ流すだけやぞ
コボラーやペチパーからDDDとかやってるガチな連中まで誰でもウェルカムなJavaと違って
.NETはVBがカスの受け皿になってるためにC#は比較的意識高い空気があるからむしろVBerには馴染みにくいと思われる >>175
弊社でも同じような要件で仕事をたまにやってるけどうまくいった試しがない
コードや作法を維持するために不要なハックコード・パッチコードを大量に追加しなければならない
VB6のコードも酷いけどそのせいでむしろ保守性が悪くなる
リプレースの前にVB6のままリファクタリングすればうまくいくんだけどな >>178
JavaもC#も大差なく素人から達人まで幅広くいる
VBが圧倒的に地を這っているのは確かだがそれでC#erを持ち上げるようなことはないよ >>175
リプレースっていうのはそういうもんだ
せっかくだから・・・といろいろと色気を出すとドツボにハマる 意識高い()つもりのC#厨って何のためにここ見てるの? >>183
ツールやライブラリのサポート打ち切りが多い
まだまだ余裕で動くんだけど公式にサポートが無いという状況を恐れているお客さんは少なくない >>185
意識高いかどうかはともかくC#やJavaくらい使えて当然だろ?
まさかVBerはみんな自分みたいにC#使えないのが当然だとでも思ってるのか >>187
使える人もいるし、使えない人もいるよ
家に閉じこもってないで、もっと外の世界を見よう VBとC#ってほぼ同じだろ
なんなんだこの扱いの差は >>189
ほぼ同じって信じてるバカのせいじゃね? 単純にBASICのネーミングを嫌う人が多いよね
IFとかFORのブロックをEND〜から{}に変えるだけで格段に読みやすくなるのになぁ、とは思う 俺はそこはむしろ逆だな
単純な見易さで言ったら波カッコよりキーワードの方が見易い
そしてキーワードよりインデントのpython形式の方が見易い だよなw
{}の方が見やすいとかどんな脳してるんだw
あとインデントは必要だけどそれだけだったらページ跨いだ時にどうもならん そこは慣れでしょ
Pythonのインデントのほうが見やすい人もいるし >>195
でもページまたぐようなブロックってクラススコープだけだろう
1画面以内(多くても15行ぐらい)のメソッド以外書いた記憶最近じゃもうないわ >>195
VB脳キタ━━━━(゚∀゚)━━━━!! >>199
ページ跨ぐ長大なメソッドを生産するのがVB脳で
適当に分割するのがC#脳だとしたらそのレスは文字通りの賞賛の意味になるがお前はそれでいいのか C#使ってる人はなんでこんなにマウンティングしたがるの?
VBに親でも殺されたの? 今のVBはBASICの文法と後方互換性を保ったまま機能を追加しすぎてるから
C#に比べて単純に書きにくいし読みにくい
俺にとっては最も難しいプログラミング言語の一つ やたら関数化する人のソースって見づらいよねって言われました
VBだと例えばボタンを押したときの機能は1つの関数にまとめるのが良いのでしょうか? >>201
C#erだけど
Cの系譜じゃないからVB嫌い
読めばだいたい解るけど、
1ヶ月もやると変な癖が付くから解りたくない
でも、.NETのひとくくりで
VB任されたりするから
いち早く死んで欲しいんだ >>206
VBの仕事断ればいいよ
断れないなら、C#で書いてVBに変換したらいい
あと癖っていうか、それはその言語に慣れてるだけで、別に悪いことじゃない気がするわ >>207
出来ないことはないけど
やりたくない
が通用するほど
世の中が甘くないのが悪い
VBが.NETじゃなければ通用するかも知れんけど
不幸なことにVBは.NET VBユーザを引き続き取り込むためにVB.NETは生まれ
その役割は果たしたでしょ
J#と一緒に消えてよかった存在
それをダラダラ延命したせいで
混乱してる
アップル陣営はObject-CとSwift
JAVA陣営はJAVAとScala
なのに.NET陣営はVB.NETとC#とF#
多すぎて.NET陣営は敬遠したくなる
洗練されてないよね Pythonみたいにインデントで書けるなら
VB.NET見直す
ENDとか、このご時世にタイピング多過ぎ >>204
COBOLとか1関数に1000行くらい書くよね ENDなんて自分で書くか?
それより行末のセミコロンのほうが面倒だよ 記号だと覚えるの面倒じゃん
言語によって記号の意味が微妙に違ったりするしな
記号による混乱といえばC言語のポインタが元祖じゃないかとおもってるけど
最近の言語だって配列が丸カッコと角カッコで違ったりと無駄な暗記力が要求される >>213
1関数2000行〜3500行で1ファイル1万行超えとか普通なの?
COBOLは知らないけど事務処理系の言語だから共通してるのかな >>215
VBの配列ってカッコ使わないの?
使うなら、他言語するなら
結局無駄な暗記力が要求されるんじゃね? >>216
VBの世界に普通なんて無いんじゃね?
VisualStudioが固まりそうだけど VBのリプレイスをしましょう!
VB.NETで
この絶望感はキツイ
クライアントが同じような言語だから
簡単前提で話してくる
ここが、VB.NETの害悪だと思ってる そこは簡単じゃないって訂正するか、別の案をだしたらいいんでは?
言語に限らず馬鹿なクライアントの仕事はろくなもんじゃないよ。金持ってたら別だけど
そんなのと仕事をしなきゃいけない自分の立場を恨むしかないね >>220
VBのリプレイスが逆にキツイとか
VB.NETの存在、全否定じゃね? >>221
そこは人によるでしょ
あなたが簡単にできないってだけの話 >>218
1万行ぐらいなら余裕で動いてくれるよ
その点はVBすごいって思うよ
>>219
来週からVB6からVB.NETへのリプレース案件やるよ!
しかも客側の担当者はそのアプリを使ったことがない人だよ!!
市販コントロール使ってるからビルドすら出来ないよ!! >>222
で、簡単にVB時代のコードを書くんだから
VB.NET使いはバカにされる
時代は関数型言語に入ってるのに
構造化プログラミング止まりだもんな >>223
VBリプレース
グレープシティとの合わせ技は
威力抜群だよな
で、WPFとか要求されたら
VB使い死ぬんじゃね? VB6のアプリ8画面
一ヶ月でリプレースして
同じVBだから簡単でしょ?
こんな糞案件全力で拒否したかったのに
営業が取ってきやがった!!! VB6のプログラムとか
Windows10でも動くんだから
無理に.NETなんかにしなくて良いだろ
windows終了後に
Scalaで作りゃ良いよ >>224
関数型なんて普及しないからどうでもいいよ
質問スレなのに、チラシの裏になってるのは如何なものか スレチなのに粘着し続けるなんてVBの人気が悔しくてしょうがないんだねw C#よりVBが優れているところ
・関数内でStatic変数が書ける
・With 〜 End With
・拡張メソッドで、拡張元を参照でき、その内容を書き換えることが可能
VBが残念なんところ
・拡張メソッドで、Object型を拡張できない ん?
俺は2008でVB見切り付けてもう使ってないけど、ちょっと前にC#スレで
話題になってたみたいにVBは拡張メソッドでthisを参照で渡せるみたいだから、
IncとかPostIncとか適当な拡張メソッド追加したらC#みたいな感じにできるでしょ
っていうかVBにも加算代入演算子はあるでしょw プログラミングをする中で1を足すっていう行為を行う事はあるの? 素人がインクリメントで
混乱しちゃうから
ポリシーでできない
初学者用として良い思想だと思う
学習用のVB
仕事用のC# 学習用のVBを仕事で使うから
多次元配列配列とか
main関数だけのシステムが
出来あがる
VBは悪くない >>242
素人隔離用言語の案件が
.NET全体の半数占めてる異常事態 >>245
わかってて自民選んできたわけだしだししゃあない
既得権益重視の政策じゃITは育たない VB6以前にあったVariant型って完全撤廃されたけど
C#にはvarっていうのがあるんだね。
一度値を入れると入れた値の型で確定するっぽいけど
これって昔のVB6みたいに配列でも入れられるのかなぁ。
VB6のVariant型はそれこそ何でも突っ込めるユルユルな危険な型だったけど
C#のvarの緩さってどのくらいのもんだろ?
俺の肛門くらいかな。 >>248
実行時とコンパイル時の区別がついてなさそうだねお宅w >>248
挿入時と排出時の区別がついてなさそうだねお宅w varは別にVariantとは関係ないよ
varって型があるわけでもない
var obj = new Hoge();
Dim obj As New Hoge()
これが意味合い近い
右辺は型が自明だから、その代入される変数も型は自明
なので変数の型の記述を省略できるねってだけ
var obj; みたいに代入(初期化)が存在しないとコンパイルエラー varは型じゃなくて、「型は推論してね、なければ今だけその型を作ってね」というコンパイラへのメッセージ
var自体は型じゃない >>248
Option Infer On にすればVBでも使える
Dim obj = New Hoge() 実際VBは>>248みたいなアホの子ばっかりだから現実には使えんよ
未だにExplicit付けろだのStrictわからんだの言ってるレベルだから浸透するまでには10年はかかるんじゃないかな VBにはvarに似たようなものってないんだっけ…?
…と思ってたら、>>253 が来てた。 トン 今更だけど >>284 の質問に答えると
「何でも入れていいのよ」と言っておきながら、いざ入れようとすると
「それは入れられません」だの
「入れるって言ってたものと違います」
と拒絶するんだから、まぁ、たぶん、>>284 の肛門と同じくらいだと思うよ >>256
>「何でも入れていいのよ」と言っておきながら
今更の上に大嘘こくとかもう
varはコンパイル時に型が決まってるから何でもは入らんわ
型を明示してないDim文は、Optionの組み合わせでどの型になるか変わる
なんでも入れたいならVBならObject型つかっとけ リプレース案件に配属されたんだけどリプレースのやり方がわかりません
リプレーステクニックを教えてください 上司に頼んでお前自身をリプレースしてもらったら?
大炎上を未然に防ぐ最強のリプレーステクニックだと思うよ 俺なんて誰もビルドできないソフトのリプレース案件だぜ 画面も無く条件分岐と四則演算だけで
構成されたVB6アプリなら
VB.NETでリプレースした方が良いけど
画面があるならWPFとC#のが
良いだろ
後々を考えたらね そこにそんなにコスト掛けられると思うか?
現実的じゃないよね Formにビジネスロジックもデータアクセスもベタ書き
コードの書き方も下手なので処理の副作用が多くイベント発生順序がちょっと狂うだけで正しく動作しなくなる
リプレース前のUIコンポーネントは再利用できないからイベント発生順序をどうしても維持できなくなりバグが発生する
リプレース案件の問題を集約するとほぼ全部これなんだよな >>270
> イベント発生順序をどうしても維持できなくなりバグが発生する
こういうのはバグでなくリプレースするスキルがなかったと言ってくれ >>272
リプレースするスキルがなくてバグが発生するんじゃないか?
納めた物が期待通り動作しなければバグだろう >>274
当然だけど事前に合意をとったテスト仕様は全部クリアした上で納めるよ
でも他になんのバグも出さずに納品ってのは不可能 >>273
バグは紛れこむものでスキルには関係ない
お前が言っているのはスキル不足による必然的な誤り >>279
そもそも設計が出来ていないものはバグとはいわんし
テストとはそんなものを無理矢理つじつま合わせる事でもない
そんな事ばかりしてたらそりゃお前らの言う「バグ」は限りなく湧いて出るけど
要するにそれは未完の不安定な何かであり完成した製品には永久にならない >>281
但しコーディングに限る、とは誰も言ってないけど
正しさの中に紛れこんだ誤りがバグ
>>270のはそもそも正しさ自体が未定義の状態 >>282
絵に描いたようなオレサマ定義だねそれw 現実世界では未定義の仕様による障害もバグに含みます >>284
一部の仕様が未定義であるとわかるのはあるべき正しい仕様が定義されているからであり
あるべき正しい仕様というものが定義されていない状態では未定義の仕様というものは存在しない ボタンはあるけど押した時の処理の仕様がない
メソッドの引数が不正な場合の仕様が決まっていない
ファイルがない時の仕様が決まっていない
データベースがオフラインの場合の仕様が決まっていない
現実世界では未定義の仕様は幾らでも存在します >>286
未定義である事は正しい仕様が存在するからわかるのだと言っているのだが
どうも噛みあわんな
というかお前の言ってるのは仕様じゃなく詳細設計のもれじゃないか
そもそも未定義の仕様ですらない >>287
賢いこと言ってるつもりかもしれないけど、そもそも君の言う正しい仕様というのはどういう意味?
そこを具体的に定義しないまま偉そうなこと言っても全部ブーメランだということに気付いてる?
この板で特に定義を明示しないまま「正しい仕様」というと一般的には
漏れなくミスなく実装すれば開発の目的を達成できる仕様ということだろうから
その意味では>>286は正しい >>288
既に目的を見失ってるな
問題なのは正しい仕様がなにかではなく
正しさ自体が未定義の状態の事をバグとは言わない
という事なのだが 説明下手くそだなー
一緒に仕事してる人がいたら、その人は大変だわ てかお前らスキルなくて何も出来てないだけって言われたのが他人事に思えなかっただけだろ
今まで反論の体をなしてるレスは1つもなかったよ バグというのは仕様書に対して異なる実装が行われた時の動作のこと
仕様が不足しているのは仕様漏れ。仕様バグという言い方もないわけじゃないが方言といっていいだろう
設計レベルの成果物、実装レベルの成果物で何と何が紐づいてるかぐらい
おまえらだって知らないわけじゃないだろう
基本情報レベル、新人教育レベルの常識だ すべての元凶
>バグは紛れこむものでスキルには関係ない
>お前が言っているのはスキル不足による必然的な誤り >>289
だからその正しさというのは一般的には目的を達成できるかどうかでしょ
まあシステムの目的なんて考えずに仕様書の通りにコード書くことだけが仕事の人なのかもしれないけど、
だからって納品時に「仕様書に書いてないからここは空白にしました」なんて言うのか?
そうじゃないとしたらお前は何をもって仕様がおかしいとか抜けているとか判断してるんだ?
結局その物差しは目的だろ
俺が言いたいのは、正しさというものをあえて君が定義しない限りは ID:43exmUNo のように
「目的に合わないのは欠陥」という暗黙の前提で話をしてしまうのはそんなに不自然じゃないだろということ 昔の、ホストコンピュータな世界ではたしかに、仕様不備(設計ミス)とバグ(コーディングミス)とを分けてた
プログラマは仕様書書かなかった時代の話だ
いまどきその感覚で話してるやつとは、すくなくとも.NET案件は一緒にやりたくないなぁ 仕様書を書いて顧客に納品する理由は合意形成の意味が大きい
この仕様書の通りに作るけど良いんですよねって念押しするために仕様書を納品する
仕様書を納めた以上は仕様書と違うコードを書いてバグが出たら製造責任
だけど仕様書そのものがバグってるなら合意とってっますよねってゴネることができる
開発はボランティアじゃないからな
コーディングのバグか仕様書のバグかを見極めるのはそういう意味で非常に重要 お前らどうしても理解できないみたいだな
問題にしているのはそれがバグなのか必然的に動かないだけなのか
動かないものをなんでもバグと言えばいいってもんじゃない >>298
そんなことを問題にしているのはお前だけ
他はみんな「目的を果たせないのは原因が何であれ欠陥」という前提は常識的に理解している
その責任の所在がどこにあるかは別問題だしこの板で議論することではない つまらない言葉遊びで
スレ荒らしてんじゃねーよ糞ども >>299
何故お前ら意味もわからず明後日の方向いた頓珍漢なレスばかりするのか?
それぞれ勝手な方を向いて居ない敵と戦ってるのばかりだよ議論なんかどこにもない 真面目な話こういう人と同じ現場に回されたらどうすれば良いんだろう 結局、ただのアスペルガーだったか
現実では絡みたくないわ たまに実際に現場にいるからなぁ
俺ならとりあえずバグって言葉を使わないようにするけど >>306
どうしてそういう嘘つくのかな?
仕事うけるレベル以下の人が同じプロジェクトで働くなんてありえないよ普通
それともなんか身の丈にあわないプロジェクトに潜りこむ裏技でも持ってるのお前?
そんな事してどんな得があるのかよくわからないけど >>307
技術力の足りないやつが現場にいて困るなんて言ってないけど
たまにいて困るのはお前みたいなやつだって話だよ
ああ、お前の技術力が仕事受ける以前だからそう思ったのかw >>307
技術力足りないやつなんて腐るほどいるやん
業界の現状をもっと知ったほうがいい >>309
だからどうしてそう脊髄反射で頓珍漢なレスすんのかね?
お前が>>306で言ってるのは言われた事がわからなくてもとりあえず相手にあわせるって事だよ
それに対して俺が言ってるのは話が通じない程レベルが違う人が同じプロジェクトで仕事をする事はないって事
つまり俺が「技術力の足りないやつが現場にいて困る」なんて事はありえないと言ってるんだけど
むしろお前がその「技術力の足りないやつ」の立場で言ってるのが>>306なんだよ
少しは考えてものを言う様にした方がいいぞお前 >>310
つまりお前が考えてるのと同じ事を多分同じプロジェクトのやつらがお前に対して感じてるって事だよ
客観的にレベルが違いすぎる人が同じプロジェクトで働ける事なんてありえないんだから >>312
逆に同じようなスキルの人のみで構成される方がレアだぞ
君は新入社員か何かなのかね? >>313
きっとお前と俺が考えてる幅が違うんだろうな
そりゃプロジェクト全員がほぼ同じレベルなんて事は現実的に不可能だからある程度の違いは当然あるさ
俺が言ってるのは話が通じない程っていう限定付きだからね
高いか低いかは問わずそこまでレベルが違う人同士が同じ仕事をする事ってないよ >高いか低いかは問わずそこまでレベルが違う人同士が同じ仕事をする事ってないよ
あるんだな、これが
自分の話が通じないのを相手のせいにしてる時点でお察しだわ
友達少ないんだろうな・・・ >>315
いやだから俺は自分のプロジェクトに話が通じない人は居ないと言ってるんだけど?
相手のせいにしてるのはお前なんだろ?お前も頓珍漢なやつだな これでアスペルガーって確定したな
周りに迷惑かけないように頑張ってくれよ 人材派遣会社の営業に連れられて、色んなSE・プログラマーが、
会社へ面接に来るけど、たいてい1日も持たない
即、突っ返すのが多い まぁ簡単に纏めると
「目くそ鼻くそを笑う」というやつだな 仮にも派遣会社が何人もつれてくるのに、そのことごとくが1日で逃げたすということは
つれてくる人に問題があるんじゃなくて、つれてこられてるところに問題があると判断するのが妥当じゃね クソ設計なシステムが大杉な今日この頃
言語など問題じゃない そりゃコードもろくに書かないような素人が机上の空論を何重にも積み重ねて作り上げた設計をもとに作るものがまともになるわけがないよね 確かに言語の問題ではないかもしれないな
今javaの仕事場にいるが取り敢えず数千行に及ぶメソッドとかやめて欲しい
VBAですらこんなひどいのは見たことない。
ああ早く辞めたい。 それをやりすぎて身動き取れなくなったのが日本のIT業界
世界から取り残される 適性ないやつは初日に追い返すほうがいい
数週間やった後だとお互いに無駄になってしまう
派遣側からみれば、客であるおまえらにむかって気に入らないから帰るとはなかなか言えない 派遣に限った話じゃないな
適正ない奴はクビにする
これを疎かにすると業界が腐っていく
重要な社会インフラを担う業界が腐れば国が腐るのは東電の件で分かっている筈だ
このまま放置すれば日本は後進国になる 自分のことを棚上げして、他人のことを書いてる人ばっかり・・・ VBで作ったアプリの見た目を変えるのはどうすればいいの? WinFormsなら簡単な方法はない
コントロールを全部オーナードローするよりはWPFやASP.NET MVCでGUIを作り直した方がマシ strict offのVB.NETのプロジェクトでstrict onにした時にctype系の修正だけでも
一気にやってしまうことってできないでしょうか?
一個一個直すのが大変で。 strict onにしてもキャストが多いままだったらあまり意味がないよ
素直にoffにしとけば? 無くはないでしょ
いかに糞コードかが視覚的にわかるだけでも反省のきっかけになる byrefの引数までctypeされちゃって動かなくなりました document completeイベントなどのイベントってCPU負荷が大きくなったときに
発生したりしなかったりという現象がおこる原因のひとつになりえますか?
win10 i7-2600k メモリ:16GBで
タスクマネージャーでしばらく見ていると平均でCPU負荷が60-70%以上あり、
時々95%を超えていたりします。
うまく動かないときがあるのであるので、document completeイベントを拾ってる箇所に
デバックログを取ってみると、出ているときと出ていないときがあり、なかなか原因が
特定できません。
navigatingイベント、navigatedイベントまでは出て、document completeイベントが出ていない
という状態です。 >>341
悪くなるよ
無意味なボックス化アンボックス化や変換が発生する >>345
それはキャストや変換を明示的に行おうが暗黙だろうが同じこと。
明示的にキャストや変換したらコストが高くなるとかそんなわけないでしょw >>345
Strict Offが無駄な変換やボックス化をしてないとでも?
前後の型が分かってれば高速に変換できるケースは多いぞ >>346
たぶん345は値の読出元と変換後の代入先の型がObjectならアンボックス化やボックス化が発生しないと思ってるんだろ
実際には、値の型で分岐→アンボックス→変換→ボックスという極めて非効率な操作になる >>346
objectからobjectへの代入にキャストを挟むと遅くなりますよ それぞれがギリギリのラインで知ってる事を言いあってるだけだから会話としては成り立ってない とりあえずCtypeよりはDirectCast使おうよ。
暗黙の変換を行うつもりは無いんでしょ? Ctypeでも状況によってはDirectCastと同じコード吐くらしいけどな
VB.NETのコンパイラさんは結構がんばってるぜ そんなにキャストって使う?
tryparseすら使わんのだが
使うとしたらDirectCast(sender, コントロールの型)
くらいだわ キャストの話題でなぜ突然tryparseすらという言葉が出てくるのか謎なのだが
vbだと文字列を数値として評価するような事もキャストって言うの? テキストボックスやSPREADに表示用の値をよく代入するから
キャストは頻繁に行う
また、カンマ区切りの数字を取得するのはキャストとはまた微妙に違うがけっこう面倒臭い >>354
C系言語もその辺はいい加減だと思うよ。
例えば
int x = (int)3.14;
は普通に考えれば変換だけど構文はキャストそのものだし普通にキャストと呼ぶでしょ? >>357
キャストって型変換の事だが
むしろそれがキャスト >>356
toStringが定義されてたらいいけど
どういう振る舞いをするのか確認するのも面倒なので
CTYPEやCINTあたりを使ってるよ
DirectCastのほうがミスを減らすためにもいいんだろうなぁ・・・ ちょっと真面目な質問したいんだけど
DirectXのDLLってどこいったの?
参照の追加をしようと思ったら見当たらない もうなくなったよ
SlimDXとかSharpDXとか使おう
ゲーム制作ならもうUnityで >>358
本来のキャストはCで言えばポインタ変換だけ >>362
それも誤解
directcast見てそう思ったのだろうけど
型変換は全てキャストだし逆に型変換でないものはキャストではない
本来とかそういう問題でもない >>363
言っちゃ悪いけど、それお宅がキャストと変換の区別がついてないだけね。
計算機にとっては文字列の"123"をintの123にするのも、doubleの3.14をintの3にするのも
同じ「変換」だが、Cでは後者だけがキャストの扱いになっていて混乱している。 >>364
vbしか知らないのに無理してcで例えなくてもいいよw
ちなみに
キャストは型変換であり、変換ではない
文字列→数値の場合文字列の表わす値を数値として評価しているのであり、変換ですらない
二重に間違ってるよお前 >>366
お前さんのやってることは変換を評価と言い換えただけ。
そういうのを言葉遊びという。馬鹿じゃないの。
(1) ポインタ変換
(2) double→intの変換
(3) 文字列→intの変換
(1)と(2)の間の差異は(2)と(3)の間の差異より大きい。
(1)は呼び名こそ「変換」となっているが、実際は単にコンパイル時にどの型として扱うかを変更しているだけで
実行時のメモリー上のデータは何も変わってないからだ。
本来のキャストとはこの(1)だけを指す。 >>367
いやだから型変換だってばw
せっかく教えて貰ってんだから素直に聞けばいいだろw
そのオレオレ理論を意固地に貫いてもお前に何のメリットもないよ おまいら根拠にしてるソースURLなり書籍名なりplz
出せずに慣例だの常識だので曖昧に誤魔化して逃げる俺様定義絶対合ってる匿名マンなんてただの荒らしでしかない。
スルーして過疎スレに戻ろうず ポインタ変換って何なんだ?
ググっても全くヒットしないんだがコンパイラ業界では隠れた隠語なのか? マジレスすると
キャスト(cast)は変換や型変換のことじゃないよ
英単語としてのcastの意味のそのまんまの「配役、役の割り当て」って意味だよ >>373
真面目に言ってそうで怖いなw
さすがVBer なんでVBの拡張メソッドはModuleなんだ
グローバルメソッドとしても使えちゃって気持ち悪いんだが たかだか記法の問題をいちいち気にする方がどうかしてる >>377
たかが記法の問題?本当にそう思う?
名前空間汚染の問題と単なる記法の問題の区別がつかないのがVBerらしいね >>378
グローバルな識別子=汚染
ではないのだよ
「汚染」てのはライブラリが定義する意図しないグローバルな識別子が問題になるから
悪意を込めて使う言葉で自分で定義したりそれを望む場合には汚染て言葉は使わんよw
字面だけでなくちゃんと言葉の意味を覚えてから使おうね >>379
プログラム作ってるのがお前だけならな… >>379
VBerは揚げ足取りしかできないのか
仮に汚染という言葉が不適切だったとしても単なる記法だけの違いではないのは確かだろ?
別に俺はモジュールは名前空間を汚染するから如何なる場合でも使うなと言っているわけじゃなく、
それが問題になるケースはあるから単なる記法の問題ではないと言っているだけだ
実際>>375は気持ち悪いと言っているのだから少なくとも>>375にとっては「汚染」だろう 汚染の定義と使用法はどうでもいいんだが
グローバルメソッドの定義を教えてくれ
拡張メソッドが通常のメソッドとして呼び出せることが問題だっていうならわかるが
C#の拡張メソッドだって、利用可能な名前空間内に存在する必要があるわけで
モジュールうんぬんは意味がわからん VBのモジュル内のメソッドはグローバル
クラス内の静的メソッドみたいにクラス内の名前空間内に存在しているわけではない。
まあ、ラムダ式といい、もう2008以降はVB使わない方がいいよっていうメッセージでしょ。
少なくとも俺はそう受け取って2005まででVBは見限った >VBのモジュル内のメソッドはグローバル
そのグローバルの意味が分からんのだが?
VBだとデフォルトでプロジェクト名の名前空間内に属してるはずだが
その名前空間を超えると? 正直長年VB使ってた中で一度もモジュールなんて使ったことなかったけど、
一応モジュールも名前空間の中(ルート名前空間に限らず)に定義できるんだな。
それはいいけど、モジュール自身が名前空間を構成しないから、
そのメンバーはモジュールが存在する名前空間を参照しただけで丸見えになっちゃうわけで
普通に考えれば拡張メソッドはC#と同様に静的クラス(VBにはないけど)に定義する方がよかったね >>384
モジュールはそれを含む名前空間をImportしただけ(or 同じ名前空間にあるだけ)で
モジュールのメンバが全てトップレベルのスコープにインポートされるだろ
拡張メソッドは オブジェクト.メソッド名 の形式でしか呼び出せないから、
トップレベルで参照可能な名前が増えるわけではなく影響は小さい
C#は最近のバージョンで using static が入ってクラスのstaticメンバをトップレベルにインポートできるようになったが
名前空間単位ではなく対象のクラス名を直接指定しなきゃいけないからやはりモジュールに比べれば影響は小さい 先頭にusingが列挙してあるC#のソースの見づらさと言ったら
しかも書いた人によってか、usingの羅列が違うという VC#には 未使用のusingの削除・整理 という機能があってだな
それでも見づらいようなロクに責務分割できてない長大なコードなら
usingが無かろうが見づらいから安心しろ そういや参照の自動削除機能がなくなったな
あれ便利だったのに Moduleがないとリプレースしたときにお客様がModuleがClassに変わってるんですけど使いにくいんですけどってご立腹なさるのでModuleは必要 >>389
そこは(普通のプログラマが普通にプログラミングしてれば)VB使っても同じになるはずなんだけどw
むしろあんたはどういうコード書いてるのかとw >>393
ところがVBには、プロジェクトの設定で指定した名前空間を全てのソースで暗黙的にImportするというゴミのような機能がある >>396
そのほうが自然じゃないのか
プロジェクト内のソースごとにまちまちなほうが違和感を感じるが >>398
ゴミキタ━━━━(゚∀゚)━━━━!! コードをプロジェクトの外に持ち出したら何が書いてあったかわからなくなるというほかは
デメリットが思いつかない >>399
おれ、いつも System.Linq だけ有効にして、残りは切って使ってるので
一括して名前空間の設定が出来て便利
usingのほうが不便 >>401
他は全部明示的にImportしてるってこと?
お前完全にusing派だろw >>396
ああ、そういやそんな機能あったね
BCLのほとんど必須の名前空間だけならありかなとも思うけど、
コード上に明示されないのはやっぱり気持ち悪いな
VBはあの有難迷惑のルート名前空間も鬱陶しいね ディクショナリーのキー取得時に dicHoge.Keys(intIndex) の様に書くと
VisualStudioでは問題無いのに、ideone上でエラーになってしまいます。
何か他に書き方があるのでしょうか? うわ何これキモい
暗黙にElementAtOrDefaultに変換するのか
教科書的には
Dictionaryは順番を持たないコレクションだからインデックスでアクセスするのは変 別にキーで要素を検索できることと要素が順序を持つことは何も矛盾しないと思うけどねw DelegateなメソッドをInvokeで呼ぶときに引数って渡せないのでしょうか? VB久しぶりに触る機会があったけどc#よりちょびっとインテリセンスが馬鹿じゃないか?って感じた >>411
気のせいだよ。
それより末尾に";"つける癖から早く卒業しましょう。 すぐ上の話題で答え出てるじゃん
ソースのトップレベルに出現する可能性のある識別子の数がC#に比べて遥かに多いからだよ
モジュールと既定のインポートのせい 誰かいる? 質問良いですか?
今RichTextBox派生のカスタムコントロール作ってて、
ちょっと詰まってる所があるから詳しい人教えてほしい 質問いいですか?と聞いておきながら質問しないアホ発見 誰も居ないのかと思った。質問して良いなら質問させてもらいます
当方、数か月前からVB.NETを始めた初心者なので、
コードが意味不明とか手法が悪いとかあれば、それも含めて指摘頂けるとありがたいです
RichTextBoxにOnPaintで文字を描写しようとして試行錯誤してるんですが、
WndProcでIMEを監視して、変換が確定するまでの間OnPaintが動作しないようにする事で、
都度TextChangedで日本語の文字入力の確定はされないようにできたんだけど、
今度はIMEに入力中の文字が真っ白で表示されない
なので、入力中の文字を表示するのに、
ImmGetCompositionStringで取得した文字をDrawStringで書いてみようかなと思っているのですが
取得が上手くできません WndProc内で、
Select Case m.Msg
Case WM_IME_STARTCOMPOSITION
ForIME = True
Case WM_IME_ENDCOMPOSITION
ForIME = False
Case WM_IME_COMPOSITION
If (CUInt(m.LParam) And CUInt(GCS_COMPSTR)) > 0 Then
Dim intLength As Integer
Dim Imc As IntPtr = ImmGetContext(Handle)
intLength = ImmGetCompositionString(Imc, GCS_COMPSTR, Nothing, 0)
Dim IMEstr As StringBuilder = New StringBuilder(intLength)
ImmGetCompositionString(Imc, GCS_COMPSTR, IMEstr, IMEstr.Capacity)
ImmReleaseContext(Handle, Imc)
End If
End Select
こんなかんじで書いてみているのですが、
intLength = ImmGetCompositionString(Imc, GCS_COMPSTR, Nothing, 0)
↑この部分でDLL 'imm32.dll' の 'ImmGetCompositionString' というエントリ ポイントが見つかりません。というエラーが出てしまいます。 ImmGetCompositionStringは、
Private Declare Function ImmGetCompositionString Lib "imm32.dll" (ByVal hIMC As Integer, ByVal dwIndex As Integer, ByVal lpBuf As StringBuilder, ByVal dwBufLen As Integer) As Integer
と宣言しています。 >>419
テキトーに答えるけどとりあえずハンドルはIntPtrでないとダメでしょう 他の、ImmGetContext等のhWndが入る部分はIntPtrにしているのですが……(+_+)
Private Declare Function ImmGetCompositionString Lib "imm32.dll" (ByVal hIMC As IntPtr, ByVal dwIndex As Integer, ByVal lpBuf As StringBuilder, ByVal dwBufLen As Integer) As Integer
これでもエラーが出るみたいです やばい寝落ちそう……
質問板は出した質問は絶対閉めろというルールがある場所多いですがここはどうなんですかね?
1時間くらいは粘りたかったけど、眠いのでいったん引き上げます
もう一回試行錯誤して、どうしても駄目ならまた改めて来ます
>>420さん答えてくれてありがとう Windows NT/2000 は Unicode 版と ANSI 版を実装 そもそも「エントリ ポイントが見つかりません」の意味分かってる? そもそもRichTextBoxにOnPaintで文字を描写って意味がわからん
それRichTextBox使う意味あるのか? 近年、若者のエラーメッセージ離れが深刻な問題になっています おはよう
うーん、わかるかどうかと言われれば微妙なので調べながらやってんですが、
スペルミスかなと思ったけど違うみたいで
関数の大文字小文字の違いって可能性もあるんですね。
後で時間できたら見てみよう……
>>425
ルーラや行番号や空白や改行等の特殊文字が表示されて、
かつ文字色も変えられるようなテキストエディタが作りたくて
普通は違うのでやるんですかね? 例えばPictureBoxに描くとかですか?
もっと効率良い方法とかってあります? オープンソースのエディタのソース読んだ?
話はそれからだ >>427
imm32.dllの中にImmGetCompositionStringが無いよって言ってるんだから
ImmGetCompositionStringAかImmGetCompositionStringW探せって言ってるんだけど… Declare Function ImmGetCompositionString Lib "IMM32" Alias "ImmGetCompositionStringA" (ByVal hIMC As Integer, ByVal dwIndex As Integer, ByVal lpBuf As StringBuilder, ByVal dwBufLen As Integer) As Integer
に変えたら解決しました。ありがとうございます(*^-^*)
>>428
なるほど、確かにそうやって勉強できますね!
探してみます。ありがとう ん?
いちいちAとかWとかつけなくても自動的にUnicodeバージョンが選択されるように
なってるはずだと思ったけど、VBは違うのか? DllImport使わずにDeclareなんてVBのレガシー機能使ってるからかな。
ちなみに、デフォではANSIバージョンが選択されるんだな記憶違いだった わざわざAliasなんて付けるから自動選択が働かない
なんでか知らんけどDeclareのサンプルはほとんどAlias付けてるんだよな
VB6だと必須だったのかね? あ、ごめん
Declare Autoにした場合のみだったのね テキストボックスとかコントロールをコピーしたいんだけど、簡単にできませんかね? データベースから大量のデータを取得するときってDataTableとDataReaderどっちがいいの? DataTableはオンメモリだから処理できるデータ量には限界があるし、
DataTable.Loadだと全部のロードが終わるまで処理を始められないので
ロード中のIO待ちの時間が無駄になる。
もし大量データ処理時のメモリ使用量やスループットが問題になっているなら
DataReaderでストリーミング処理することで性能を大幅に改善できるはず。 youtubeを開くと
一番上の検索ボックスがさ
入力無しだとグレイ文字で検索って表示されてて
(この検索文字にカーソルは移動しない)
何かを入力するとグレイ文字が消える
これってどうやって実装するんすかね?
パッと思いつかんのだが。。。 パッと思いつかん時はジックリ考えろ
それでも思いつかんかったらソープ行け >>446
ありがとう
知らんかったわ
勉強になった
vbでも実装できないかな? 時々テキストボックスを監視して、空の時だけ重ねた別のテキストプレーンにSearchとか表示させるとか…
他にも色々方法はあるやろ 言った手前
Private Sub TextBox1_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBox1.TextChanged
If textBox1.Text = "" Then
textBlock1.Text = "Search"
Else
textBlock1.Text = ""
End If
End Sub カレットが入るまでは淡色の文字表示しとってカレットが入ったら背景画像に差し替える
文字が入ったら白背景とかw データベースをアクセスするプログラムってACCESS以外は、埋め込みSQLとC言語を使ってUNIX上でしかやったこと無いロートルですが、
VB.NETでDBアクセスって今は何が主流なん?
ADO.NET関係の書籍って、アマゾンでも結構古いのが多いんだけど、ADO.NETって過去の遺物なん? SQLServerならばADO.NET
OracleならODP.NETだな ADO.NETは過去の遺物だけど現役だよ
新機能の拡張が期待できないってだけ
Entity FrameworkやサードのフレームワークもADO.NETに依存してる
ADO.NETは抽象的なフレームワークで実装はプロバイダごとに異なる
MSならSqlClient、OracleならODP.NET、ポスグレならNpgsql
ODBCドライバやOleDbドライバ用の実装もある >>441
コピーできましたが、コンボボックスのデータソースなどがコピーされませんでした。
完璧に同じ物をコピーすることって簡単にできないでしょうか? >>452>>453
d。
かなり古い書籍だけど教科書としては十分といことですね。
何冊か尼でポチってみます。 今時ADO.NETなんて括りに意味はないぞ
Entity FrameworkとかもADO.NETに含まれているらしく、
もはや「.NETのデータベース関連の機能」というだけのふわっとした総称でしかない
単純に低レベルAPI使って普通にSQL投げたいだけならDbConnectionのあたりを適当にググれば十分 >>457
トランザクションもできるんですね。
今やろうとしてるのには十分そうです ストアドパッケージ使ってるとEntity Frameworkを使う気になれない VBに限らずだけど、ORMっていうの?オブジェクトに対してSQL生成してくれる
機能あるけど、SQL書かないってそんなにメリットあるんですかね?
複雑なSELECT文ならORMでは対応しずらいので結局SQL書くだろうし、その他の
INSERT・UPDATE・DELETE・MERGEなんてバリエーションが限られるだろうから、
テーブル名と列名さえあれば、ExcelVBAとかVBSとか自作VBツールとかで自動生成可能なはず。
「SQL書いてないけど、Insertできたよ!」っていうコーディングの感覚は
実際にやってみて新鮮だったけど、Insert文ぐらい書けよ、とも思う。 >>460
DRY
ツールで自動生成するんならORMでもいい、生成されたSQLを管理しなくて済む、と考えることもできる
自動生成は生成物を直接弄らないことを徹底できるならいいけど、大抵は自動生成コードが独り歩きして破綻する
そうして変更時の修正箇所がどんどん増えてくんだよ 460です。
>>462
すみません、「自作ツールで自動生成」って紛らわしいこと書いちゃったけど、
VB側にSQLを記述する(=SQLを構築するのSharedなFunctionをたくさん作る)ってのが
前提にあって、INSERTとかは手打ちするのもアレだから自作ツールにSQL生成させて
それをVBなりPHPなりJavaなりで使えるようにテキストエディタのキーマクロでも使って編集し、
そいつをコピペする、ってことです。
なので、「SQLを管理しなくて済む」というより「しっかり管理したい」
ということなんですね。
で、この手順なら(Select以外の)SQLをPG言語側のソースに落とし込むのに
少なくとも手打ちよりかはスムーズにできるので、今更言語側でブラックボックス化
してもらう必要ないのに、と思うわけであります。
まぁうちの案件規模が小さいからそう思えるのかも。 >>463
世の中には、コードの重複を極力避けて変更しやすくするという開発スタイルもあるんだよ
VBにあるかは疑問ではあるけど 最初のだけ自動生成すればええんやで
修正時は全部手で作ればええんや ORMの意義はSQLコマンドを生成することよりもむしろ
テーブルの行とオブジェクトをマッピングすることにある
いちいちカラムとプロパティの対応付けを猿のように手書きしなくても
自動でやってくれるツールだと割り切って使えば悪いもんじゃない EFって綺麗にモデリングされてる前提じゃないの?
正規化やキー設定もまともにできない我々日本人には厳しいと思う
ダラダラ残業して腐ったスキーマに愚痴言いながら頭悪いSQL書いてDapperで手軽にタイプセーフにするぐらいがちょうどいいよ >>466
>いちいちカラムとプロパティの対応付けを猿のように手書きしなくても
これに関してはリフレクションを使えば解決するかなと。 >>468
クエリもマッピングも自動化したら、それはもうORMだろ
お前は自分自身でORMが必要という結論に達したわけだ >>460
ORMは、RDBのデータをオブジェクトとして使うためのものだ
SQL書かなくていいのは必要な結果に過ぎない
つかインピーダンスミスマッチでググれ めんどくさいからシリアライズしてBlobにぶち込んでやる C#スレのVBキチガイはよ引き取って
VB.NETerってガイジしかいないのか? はい
ガイジしかいないので
こっちには来ない方が身のためですよ ああああああああああああああああああああああああああああ
あいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいい
うううううううううううううううううううううううううううううううううううううううううううううううう
ええええええええええええええええええええええええええええええええええええええええええええええ ああああああああああああああああああああああああああああああああああああ あああああああああああああああああああああああああああああああああああああああああ
いいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいい
うううううううううううううううううううううううううううううううううううううううううううううううううううううううう
ええええええええええええええええええええええええええええええええええええええええええええ
おおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお
かかかかかかかかかかかかかかかかかかかかかかかかかかかかかかかかかかかかかか
きききききききききききききききききききききききききききききききききききききききききききき
くくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくく
けけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけけ
こここここここここここここここここここここここここここここここここここここここここここここここ
http://http://http://http://http://http://http://http://http://http://http://http://http://http:// あああああああああああああああああああああああああああああああああああああああああ
いいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいいい
うううううううううううううううううううううううううううううううううううううううううううううううううううううううう
ええええええええええええええええええええええええええええええええええええええええええええ
おおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお My.Computer.FileSystem.WriteAllText 連続で使うとだめなのかなぁ。
30行目あたりでロックかかったまま、削除もできない。 Fileクラスの方のWriteAllTextを使ってみたら?
Myは基本的に糞なので、使う前に標準の.NETのAPIで同じようなのがないか確認したほうがいいよ Fileクラス側を使ったらうまくいった!
今回はたまたま見つけたからいいけど、見逃してたらわからないかも・・ VB2010で作ったやつが↓の3ソフトでことごとくウィルス判定されるんだが・・・どういうこと?
Bkav:[.NET executable]
CrowdStrike Falcon:(ML)malicious_confidence_100% (D)
Qihoo-360:HEUR/QVM03.0.0000.Malware.Gen スリープからの復旧をSystemEvents.PowerModeChangedイベントで取得してるんだけど
Windows7やWindows8.1のデスクトップPCでは正常に動作するけどWindows8.1版のSurface Pro3だと動作しない
解決方法ご存じないですか? datareaderで数万件のデータをデータベースから取得したいんですが数十秒くらいかかってしまいます
どうにかはやくできないでしょうか? 単純なSELECTなんですよ
30000件で15秒もかかってしまいます
最後までread回しただけなのに… ディスクやネットワークが糞なんだろ
あと見落としやすいのがDBサーバーのメモリ量
繰り返し読むならキャッシュヒット率が全然違ってくる
いずれにしてもVB関係ない まずはVBを介さずにDBクライアントを使って直接コマンド実行してアンロードしてみたらどうだ
それでも遅かったらVB関係ないとわかるし、遅くなかったらVBでの読み方がまずいんだろう
一番にその程度の切り分けはやれよ ListViewのアイテムをすべて選択するコードなんですが
5万件くらいで重いのですが軽くする方法は無いものでしょうか。
For i As Integer = 0 To lvMain.Count - 1
lvMain.SelectedIndices.Add(i)
Next >>497
前提がおかしい
全件に対して処理をすることが最初から想定されてるんなら全件処理のコマンドを用意しとけば済む話だろう
ListViewに読み込む必要も選択する必要もない >>497
lvMain.BeginUpdate() 〜 lvMain.EndUpdate() で囲えば多少改善するかもしれない
それでもダメなら VirtualMode を使う >>499
残念ながらBeginUpdate()では改善しませんでした。
ListViewは既にVirtualModeです。
どうもSendMessageでLVM_SETITEMSTATEを送ってやればよさそうという
ところまで来ました。 LVM_SETITEMSTATEをSendMessageで一瞬で全選択できるようになりました。 全選択なんて組み込みのメソッドで用意されててもよさそうなものだけどないんだねw
今まで気づかなかった ふらっとC#スレの質問見てちょっと思ったんんだけど、
C#ではメソッドの戻り値に属性を適用する明示的な書き方があるけど、
VBではこれどうやって書くんだっけ?
https://msdn.microsoft.com/ja-jp/library/b3787ac0.aspx >>503
https://msdn.microsoft.com/ja-jp/library/z0w1kczw(v=vs.120).aspx
書き方はC#と同じだな
ただし、戻り値に属性指定とかNot supportedらしい
そもそも戻り値はメソッド内で生成されるんだから、属性を呼び出し側で指定できるのがおかしな気がする 経過時間を設定したContent.Timeで割って余りが0の時にReload()を実行するようになってるんですが、
Reload()を何回も実行するんです。
minuteをContent.Timeで割った回数実行してしまうようなんですよね。
何かおかしいでしょうか?
Sub _Check()
'1分過ぎた
minute += 1
'すべてのページをチェック
For Each Content As Contents In List
'指定した時間が過ぎていたら
If minute Mod Content.Time = 0 Then
'確認=>表示 再生
If Content.ReLoad() Then >>506
補足ですけど、minuteが1進む毎(1分)に、minuteをContent.Timeで割った回数実行してしまうみたいです。 >>508
私がコピペした部分じゃ足りないですか??
じゅうぶんだと思うんですが。 そこで足りると思うんなら
ステップ実行でわかるだろうよ >>510
ステップ実行なんてのがあるなんて知りませんでした。
ありがとうやってみます。 dllのロードに関して質問がございます。
---------- ディレクトリ構成 -------------------------------------------------------
[1]C:\AppDir\Main.exe 実行ファイル
[2]C:\AppDir\Parts.dll 実行ファイルから参照設定される
[3]C:\AppDir\SubDir1\Function.dll [1]の実行ファイルからAssembly.LoadFromで呼ばれる
[4]C:\AppDir\SubDir1\Parts.dll [3]から参照設定される
[5]C:\AppDir\SubDir2\Function.dll [1]の実行ファイルからAssembly.LoadFromで呼ばれる
[6]C:\AppDir\SubDir2\Parts.dll [5]から参照設定される
--------------------------------------------------------------------------------
[3]のdllと[5]のdllを実行ファイルで選択した内容によって切り替えてロードするのですが、
[4]と[6]のdllを参照せずに、実行ファイル起動時に自動でロードされる[2]のParts.dllを読み込みに行きます。
機能追加やデータ構造の変更に伴うメソッドの修正で[2]と[4]と[6]の内容が一致していない場合に、
MissingMemberExceptionが発生してしまいます。
[2]のParts.dll に修正が発生した段階で、[4]と[6]をビルドし直して配布する必要があり、
出来れば[2]のParts.dll の修正と切り離して管理したいと考えております。
既に実行ファイル起動時に[2]がロードされている状態で、
[3]をロードする場合は[4]を、[5]をロードする場合は[6]を参照するような方法はございますでしょうか? >>514
ありがとうございます。
プラグインという発想はなかったので、
MEFについて知識が乏しいので調べて見ます。 シリアル通信で受信処理について教えてください
パケット構造が固定長で"STX" + 10BYTE + "ETX"の12バイト構造となっています
ReadByte()で1バイトずつ取得して配列に格納しているのですが、
連続受信中何かの拍子に配列がずれて1バイト目が"STX"や12バイト目が"ETX"とならない場合があります
こうなった場合、以降の受信も配列が崩れて処理ができなくなります
一般的にどのような対策をするのでしょうか
配列の1バイト目、12バイト目が"STX","ETX"でなければ何か処理をすればよいのだと思いますが・・・ 1バイト目とか12バイト目とか意識するのがまずいのでは?
STXが来たらバッファに詰めていくETXが来たらそれを取り出すで
問題ないと思う。 >>518
単純なステートマシンで対処できるでしょw
っていうか、教えられなくてもそれぐらいのこと思いつくようでないと
実用的なプログラムなんて何も書けないよw 何バイト目かを意識するのがまずいのもあると思うけど
そういうのってエラー検知して再送じゃないの? >>519
それにしたってバッファは無限なわけじゃないし
ETXが来るかバッファをオーバーしたら、 だな
バッファオーバーのチェックはさぼらない癖つけとくほうがいいぞ
>>521
>>518はエラー検知が出来なくて困ってるわけだが >>522
え?1バイト目がSTXじゃなくても検知できないの?
BCCのチェックだけの話じゃないよ まぁSTX〜ETXまで精々数百バイトだろうし、大げさに騒ぐほどじゃないな
ETXの後ろにBCCあるタイプだとして
俺がよく使うのは System.Collections.ObjectModel.Collection(Of Byte) なバッファ用意しといて
1.ReadByteの内容がSTXだったら バッファ.Clear した上で ReadByteの内容(STX)をAdd
2.STX以外だったら
2-1.バッファの最後尾が ETX だったら、今きたのはチェックサムと思って ACK/NCK 返しつつメイン処理へ受け渡し
2-2 バッファの最後尾が ETX じゃなかったら、ケツに Add × 2.STX以外だったら
○ 2.STX以外で、かつバッファの先頭は STX だったら
○ 3.STX以外で、かつバッファの先頭は STX 以外だったらゴミデータとしてスルー >>524
なんでCollection?
Collectionはコレクションクラスを自作するときに使うもので、普通、一般的に使われる動的配列の実装はList(Of T)だよ なんかアホな議論してるけど、上にも書いたが必要なのは質問者が
ステートマシンという超簡単な概念を一つ覚えて使う、それだけ。 >>527
List(Of T)の方が速いし軽い
というかCollection(Of T)は実装を全部List(Of T)に丸投げしてる
継承してメソッドをオーバーライドすることで要素の追加削除時に独自の処理を入れられるように
いくつか拡張ポイントを追加してあるだけ
継承しないなら何の意味もない、むしろ誤解を招くだけだから使わない方がいい
List(Of T)は後で独自の処理を入れたくなったときに実装変えられないからクラス外に公開するべきではないというのもあるけど、
それを考慮するならCollection(Of T)ではなく IList(Of T) を使ったほうがいいし VBerにとって、VBが輝いていた時代を共に駆け抜けた旧友を想起させる特別な名前、それがCollection
気持ちは分かるが.NETのCollectionは彼とは何の関係もない別人なんだ
もういい加減過去に拘るのはやめて前へ進もう ステートマシンとかいう概念を知らなくても普通は思いつくけどね 質問者がデータは10バイトの固定長だって言ってるんだから
Listを使う必要もなければ、STXだのETXだの本来不要なゴミを取っておく必要もない
なんかしょうもない話してるよな本当 MSAMでCOMポートからチマチマデータを取ってた世代には(ry 簡易的にずれてたらETX来るまで1バイトずつ取り込んで読み捨てすればいいんじゃね? タプルっていう存在を今、初めて知ったんだけど。
複数の値を返すのはいいけど・・・
こんなんじゃなーいって思ったのは俺だけかな? Microsoftも見限った感あるし流石にもうそろそろ消滅の流れじゃないか バッファがの処理が追い付かないときの為のフロー制御だよな C++ならともかく、VB.NETとC#の違いなんて、東北弁と九州弁の違いでしかない 今日見た関数が戻り値の型がBooleanで条件によってはTrueを返す、という関数でした
ただその条件分岐に引っかからなかった場合どこにもFalseを返すとは書いてませんでした
自分で試してみたところその場合はFalseになったのですが、これは言語仕様
がそうなっているということですか?
可読性はともかく特に使っても問題ないでしょうか? >>545
これは最初に読んだんですが既定値とやらと戻り値の関係がいまいちわかりませんでした
ただそう言われるなら問題なさそうですね
ありがとうございます 転職の為にC#覚えたらVB.NET使う会社だったでござる VB2010で質問です
いくつかのフォームで構成されるフォームアプリケーションを作ろうとしているのですが、プログラムの性質上
複数のフォームにおいて共通した処理を行うことがしばしばあります
そこでそれらの処理に使う変数や関数を特定のフォームかクラスに記述して、各フォームから呼び出して
使おうかと思ったのですが、かなり計算が多いプログラムなだけに呼び出しのオーバーヘッドが気になっています。
そこで知りたいのですが
1. 共通する変数や関数をどこかのフォームやクラスで宣言して、他のフォームから呼び出す
2. 各フォームで同じ名前の変数や関数を宣言してそのフォーム内で使う
上記2つのどちらが性能的には有利なのでしょうか?
もし個々のフォーム内でそれぞれ定義する方が高速なのであれば、コードが重複して無駄ができるのは承知の上で
2の方法を使うのもありかなと思っているのですが・・・
1の方が高速あるいは両者に速度差がないのであれば、コードが読みやすくなるので1のやり方にしたいと思ってます
あまりオブジェクト指向もよく理解できてないのですが教えて貰えると有難いです 呼び出しのオーバーヘッドなんか事実上ゼロだよゼロ
ラベルの文字列を書き換える処理とかに比べりゃ地球全体の中の一粒の砂レベルで全く完全に無視できる >>551
どうもです
ベクトルの加減算や回転といった処理を数百回行い、それを1秒あたり1万〜十数万回
ループで繰り返すという処理だったので、呼び出しにある程度オーバーヘッドがあると
性能に影響してくるかなと思ったもので・・・
オーバーヘッドが無視できるレベルなのであれば1でいってみようと思います 無視できるというか、メソッド呼び出しやフィールドへのアクセスにおいて
クラスを跨るかどうかはオーバーヘッドの大小には直接影響しない 了解です
気にするだけ無駄なので分かりやすいコードで書くのがいいってことですね
>>554
計算部分をCでDLL書いてそっちに追い出すのも考えてはいますが
データの受け渡しがかなり面倒そうなのでとりあえずはVBで書いてみます >>556
Cはコマンドプロンプトで動くコンソールアプリなら作ったことがあるんですが、
フォームを使うとなるとユーザーインターフェースの作り方がさっぱりなもので・・・ >>557
俺も、XView(Solaris2.3)とか、PresentationManager(MS-OS/2V1.21)ならC言語で組んだことあるけど、
Windowsなんて、Access以外で画面作ったことね〜ですだ・・・(;_;) すいません教えてください。
テキストボックスに9:00と入れてstring型の変数に格納した後ラベルコントロールで表示すると
9になっちゃいます。そのまま9:00と表示するにはどうすればいいですか? 普通にやればそんなことならんから
普通じゃないことやってるんだろう ちょいと教えてくださいな
ADODB.RecordsetをLoopで更新処理
をADO.NETに変換したいんですが
DataSet.Tables.Count=1
なレコードセットなら
直接
Adapter.Fill(DataTable)
Adapter.Update(DataTable)
しちゃって良いもんなの?
DataSet経由しないとダメ? DataSetじゃないと駄目ならなんでDataTableを引数に取るオーバーロードが
用意されてるのかって話になってしまう UIデザインに拘りたくて色々やってるけど、自分の思い通りのデザインにするのに四苦八苦
かと言ってマイクロソフトのダサいデザインは美意識が許さない。
何か良いサイトか本あれば教えてください。 >>564
とか言ってるやつのデザインは
独自性が強すぎて逆に使いづらかったりする。 どうせUIのデザインと言うより昔流行ったスキンで見た目を派手にするみたいなのがやりたいんだろ みんなMicrosoftのスタートボタンは必要って言ってるんだから
そのまま使えばいい。
アップルの真似してなくしたり隠したりするのはオカシイ。 すいません教えてください
現在就職活動中でプログラマーを目指しているんですが、希望している会社が使用している主な開発言語が
VB.NETらしいのですが、将来的な需要はどうなんでしょうか?雲行き怪しいですか? >>570
やめとけ
VB.NET自体の将来はともかく、君がエンジニアとして成長する上で良い環境とは言えない 将来的な需要のある言語なんて誰もわからないし、
この業界は進化(変化)が激しいから、最初に何やろうがあんまり関係ない >>571
最初にvbを触るのはまずいのでしょうか? 最初に.NETから学ぶって割とめんどくさそう
いや、逆に素直に受け入れられるのか? >>574
頭悪くなるよ
言語がどうこうじゃなく、環境が >>570
希望する企業に就職する事 < 他の言語を使う、なら他社へ
10年20年後に仕事で使う言語が幾つ残っているのか
そもそもPGという仕事が残っているのか >>576
VBを使う環境がなぜ頭が悪くなることに繋がるのか
かなり気になるので教えてください >>577
その企業は地元で自社内開発をしている会社で教育体制も整っている会社なので
自分としてはすごくポイントが高いんですが、使う言語がVBだけというのが不安で踏み切れずにいます
将来を考えるのであれば都内の客先常駐系で経験を積んでいく方が良いのでしょうか・・ VB使ったら頭悪くなるとかありえんけど、まあ、
企業が何であえてC#じゃなくてVB使ってるのかは気になるところではあるね。
何にしろ、冷たいようだけど自分の人生は自分で考えるしかないよw
誰にとっても地雷の会社はあっても誰にとってもよい会社なんてないし。 ちなみに、俺の前の会社もVB使ってたけど、
.NET以前はVB6使ってたから.NET移行時にVBの方が容易だろうってことで決めたようだったね。
さすがに2008になってあまりにC#と差がついちゃったんでC#に変えてもらったけど VB使っているところはVB6からの流れが大部分だと思うよ
おそらく学習コストと意欲の問題で単純に移行する気がないだけ
今はVBもC#も隔たりがなくなってきたからどっちでもいいと思うけど
新たに始めるならC#のほうが優位だよね 言語なんて一つ極めれば他の言語は応用でかなり対応可能
現在のVBとC#なら方言の違いみあいなものだから、この二択なら悩むことない
そもそも仕事以外でスキル向上すればいいだけだし >>583
極めてない人がそういう事言っても全然説得力ないですけど >>583
自分初学者であまり詳しくないのですがプログラミング言語というのは
細かい部分はそれぞれの言語で違うけど大部分はどの言語も共通して似たようなものだから
一つを極めてしまえば、他の言語を新たに学ぶときもさほど苦労はしない、という解釈でいいですか? スッキリわかる Java入門 第2版、2014
この本を3回読めば、C# も出来るようになる
たのしいRuby 第5版、2016
この本を3回読めば、Python, JavaScript, Groovy も出来るようになる
この2冊が、言語の基本 >>586
そう
大抵の人は新しい環境にもすぐ対応するよ
下地なしでは短期間で習得難しいけど下地あればなんとかなる 客先常駐で技術を磨ける人材なら独学でも勉強できるでしょうね VBとC#でどっちを勉強するか迷ってVBAにも流用出来そうだからと結局VBに
WPF始めた途端、C#に止む無く移行
英語ペラペラならVBでも行けると思うが、出来ないならC#だな〜
参考になるサイトや文献の量が違いすぎる 両方やってるけど、方言レベルの違いで、VBもC#も大差ないと思うが C#とVB.NETがアメリカ英語とイギリス英語ならVBAはラテン語ぐらいの印象 変数宣言はVBのほうが個人的にはシックリくるかな
型が先ってのが、どうも嫌。
あと、宣言して即座にnewするとき、VBのほうがキレイだと思う
全体的にC#のほうがコード量(横も縦も)が増える感じが。 C#もvarができてからnew代入の記述は楽になったと思うが コード量はC#のほうが少なくない?
VBのラムダ式はもうちょいシンプルにならないのかね ああ、俺はVBのときはWITHを頻繁に使うから、かなり短くなってるのか
for() はC#のほうが好きだが >>592
リファレンスの量と質が比べ物にならない ラムダ式にFunction()とかふざけてんのかねホントに
VBとPHPくらいだろそんなの あのFunctionは辛いわ
アロー式で書かせて欲しい
リファレンスは何で書かれててもあんまり気にならないかな
どっちみちやること変わらないし .NET Core対応もC#に比べて周回遅れだけどな 2008の段階でVBに失望してC#に乗り換えた人は多いと思う
俺もその一人 >>598
今時C#でforなんて滅多に使わないだろ >>604
なわけないでしょw
コレクションを列挙するだけがループじゃないよww ループは悪なの?
LINQが高速ならいいけど必ずしもそうじゃないし そういうことはDataTable遊びをやめてから言いなさい >>607
ループが悪なのではなく、LINQが選択肢にすら上がらないプログラマーが悪なのです
速度にこだわりたいならforでいい
が、それだと極端な話ForEachも使うなという話になってくる
かのドナルド・クヌース氏の言うように「早まった最適化は諸悪の根源だ」と考えるべき
チューニングはボトルネックが判明してからでも遅くはないさ ループでいいものをなんでもLINQ使いたがる事が早まった最適化なんだけどな 手続き型と宣言型の論争は泥沼になるからしない
LINQを早まった最適化としてループにするならそれはそれで良し
天秤にかける以前に、そもそもLINQを知らない現場コーダーが珍しくないのが問題
LINQっつーか新しい知識に対する貪欲さが薄い人が多い気もしなくもない VB派だけど
.Net Coreでは思い切ってVBをC#に吸収合併してほしかったな
そうすればC#に移行するいい機会になったのに >>611
現実の仕事では枝葉末節の知識にばかり興味が向かってるお前みたいな奴の方が問題になるんだよ >>615
往々にしてこうなっちゃうのがVBから入ることの最大の問題だよなあ
VBから入ること自体はいいとしても、C系アレルギーになる前にどれでもいいから必ずC系言語に触れておくべき LINQで完結するのもないとは言えないが
基本ループだけど、細かい分岐条件がある、って要件である場合が殆どだと思うが
if 使ってもいいのに、やたら三項演算子に拘る人に通じるものがあるな
自分の書いたコードを少しでも難読化させたい的な
(それが自分の技術力のアピールにもなると勘違いしてる系) >>616
最初はFortran次はRPG3でVBA→VB.net >>617
そうゆう人いるね
最悪なのは修正させると隣接コードを自分流に書き換えてしまう configに定義してあるEndponintBehaviorをコードで取得する方法ってありますでしょうか? Listクラスとかのインデクサって独自のクラスで実装できますか? >>623
list(0) とか list.Item(0) ってできるようにしたいってことなら既定のプロパティ
https://msdn.microsoft.com/ja-jp/library/az06zx4y(v=vs.90).aspx PDFに枠線付きの表形式で記載されている商品情報(列は商品番号, 名称, 規格, 金額, メーカー名)があり、
そのPDFを読み込みファイルとして指定した結果をDataGridView等で表示し編集したいのですが、
それに特化したライブラリ等ご存知の方いらっしゃいますか? LANでつながってる別のパソコンのハードデスクの空き容量取得できないのかしら 質問させてください。
ある有償の印刷ツールを使用し、帳票のプレビュー画面、印刷処理を実装しようとしています。
フォームから印刷用の処理(フォルダの取得とか)を行うクラスファイルを呼び出し、クラスファイル内で帳票ツールを参照しイベントを紐付けてプレビュー画面を表示することが出来ました。
しかし、クラスファイル内でプレビュー画面から印刷処理後、オブジェクト参照がインスタンスに設定されてない、とエラーになりました。
プレビュー表示、印刷処理のイベント自体はクラスファイルにイベントを紐付けてあります。
プレビューから印刷ボタン押下時、紐付けた印刷処理のイベントを呼び出し、プレビュー画面はクローズするようにしています。
(プレビュー画面はクローズしなければ、オブジェクト〜のエラーにはなりません)
クラスファイル内で紐付けたイベントをクローズした場合、クラスファイルごと強制終了?してしまうのでしょうか…
初心者で考えが回らず、困っています…誰か助けていただけませんでしょうか もしかしてなのですが、プレビュー画面はクラスファイルのファンクション内で、帳票ツールのイベントを呼び出して表示しています。
しかし印刷処理は帳票ツールのボタン押下イベントとして、イベントハンドラを追加してクラスファイル内に新しいメソッドとして追加しています。
ということは、もしや帳票プレビュー画面から印刷処理を呼び出した時点でクラスファイル自体は終了状態でしょうか? 終了状態とかはNullReferenceExceptionの範疇ではない
デバッガで動かしてたら例外出た時点でブレイクして例外出たところが表示されるだろ
何がNothingになってるのか自動変数ウィンドウとかで確認 >631
オブジェクトモデルしだい
製品名からエスパーしろってことか
有償製品ならサポートあるだろ テキストファイルの読み込みとフォルダ一覧取得とファイル一覧取得
をネットで調べてコピペして
またしばらくして忘れて調べてコピペ
するを繰り返して20年経ってこれらしか知識が付かない場合なにすれば 別にいいんじゃね
また必要になった時に、検索してコピペすればいいんだから 俺も、ネットがないころは本を買って熟読して覚えたけど
今はネットからコピペしちゃうから全然覚えられない罠 コピペした内容を、全て理解して貼り付けてるならよいけど、
理解せず動いたからヨシにしている場合はマズイ 必要なのは「どう動く」かであり
「なぜ動く」かではない 質問掲示板で解答者がソース貼ると怒るやついるしなw
「為にならない」って
質問者は「お勉強」しに来てるんじゃねーんだよw >>640
ヒント:
とかいうやつもなw
教師でもやってろといいたい >>640
検索して知恵袋が引っ掛かって見てみると
回答じゃなくてお説教が書かれてたりすると
モニターにマウス投げつけたくなるよね プロジェクトで使用するVBのバージョンってどうやって決まるんですか?
同じプロジェクト内でも、.vbではvb14の機能が使えるのに、.vbhtmlで使おうとするとvb12ではサポートされていません、って表示されてしまいます。 質問です。DataTableの値をList型のクラスに変換したいです。クラスは別のクラスのインスタンスを保持していて、その別のクラスのフィールドに値をセットしたいです。どういうやり方が一般的ですか。 地道に書く
汎用的にしたいなら列名とプロパティ名を同じにしてPropertyInfoを見ながら回す VB2010でのバイナリファイルの書き込みについての質問です
ある構造体の配列変数Record()をFileOpenとFilePutを使って
N:ファイル番号
SaveFileName:ダイアログで取得した出力ファイル名
RecordSize:配列のサイズ
N = FreeFile()
FileOpen(N, SaveFileName, OpenMode.Binary, OpenAccess.Write, OpenShare.LockReadWrite)
Seek(OpenFileNumber, 1)
For i As Long = 0 To RecordSize
FilePut(N, Record(i))
Next
FileClose(N)
といった感じで実装しています(実際にはエラー処理のためTry〜End Tryの中に記述)
通常はこの処理で問題ないんですが、既に存在しているファイルに上書きしようとした場合、既存のファイルが上書きしようとする
ファイルよりも大きいと、余った分のサイズが上書きされず前の古いファイルの内容が残ってしまいます
上書き時に既に存在するファイルを完全に置き換える(つまり古いファイルは消える)にはどうすればいいのでしょうか?
ファイルをオープンする前にSaveFileNameに該当するファイルがあるかどうか調べて、ある場合は既存のファイルを削除してから
書き込むようにすればいいんでしょうけど、何かこうスマートではない気がして・・・ さすがにVB使ってる人でもVB6の互換関数とか使ってる人はほとんどいないと思うw
まあ、構造体がそのまま読み書きできて便利かもしれないけど、
ググれば構造体とbyte()を相互変換する方法が出てくるから、
それを使ってSystem.IO使って書き直した方がいいと思うよw >>647
構造体配列とByte配列の相互変換については調べたんですが、マーシャリング云々が
自分の頭ではさっぱり理解できず・・・
もし分かりやすく解説しているサイト等があれば教えていただけないでしょうか? >>648
(1) CopyMemoryを使う
(2) VBFixedArray属性 とFieldOffset属性を使う(要は共用体にする)
(2) は本当に可能かどうか知らない。
(1)は実際にやったことあるしググればいくらでも実例出てくると思う。
構造体⇔Byte()だけではなく構造体の配列⇔Byte()も可能だし、こっちの方がいいかもね。 '100行書く
For i = 0 to 100
TextBox1.Text = "VB最強"
Next >>651
'100行書く
For i = 0 to 100
TextBox1.Text &= "VB最強" &vbNewLine
Next for (i=1;i<=1000;i++) {
fprintf(stdaux,"はじめてのC\n");
} カウンタ用の変数に、i、j、k、l、m、nを使う奴はFortrun出身者 dictionary ( of integer, string) のofってなんですか? https://msdn.microsoft.com/ja-jp/library/067b2z78(v=vs.90).aspx
>Of 句を使用すると、ジェネリックであるクラス、構造体、インターフェイス、デリゲート、またはプロシージャに型パラメータを定義できます。 >>659
VBでジェネリックを表す表現
正確な名称はしらん >660
良い資料ありがとう。意味わかりました。ofは両方の引数にかかるんだ。 片方が型引数でもう片方は型引数でない何か、ってものが存在しないんだったら1つで十分でしょ Using the Of Keyword
The following code example uses the Of keyword to define the outline of a class that takes two type parameters.
It constrains the keyType parameter by the IComparable interface, which means the consuming code must supply
a type argument that implements IComparable. This is necessary so that the add procedure can call the System.
IComparable.CompareTo method.
For more information on constraints, see Type List.
Ofキーワードの使い方について
次のコード例はOfキーワードを使っているが、それは二つのタイプのパラメータを取るクラスの外形を定義している。
IComparableインターフェースのKeyTypeパラメータを含むが、ここで使われるコードにはIComparableを実装した引数を
あてなくてはならないということを意味する。これが必要なのはadd関数がシステムをコールのIComarable.CompareToを実行
できるようにするためである。さらに詳しくはListの項目を見ること
Public Class Dictionary(Of entryType, keyType As IComparable)
Public Sub add(ByVal e As entryType, ByVal k As keyType)
Dim dk As keyType
If k.CompareTo(dk) = 0 Then
End If
End Sub
Public Function find(ByVal k As keyType) As entryType
End Function
End Class 同じプロジェクト内にForm2を生成すると
Form1から
Form2.showdialog()
で呼び出すことができる。しかしForm2を立ち上げる時に初期化ファイルをセットしたい
そこでForm2に次のコードを付け加える。
sub New( inifile as string)
INIFILE = inifile
end sub
こうするとForm2.showdialog()が立ち上がらない。そこで
dim fm as new Form2.new(inifile)
fm.showdialog()
のようにすると立ち上がるけれども、Form2上のコントロールとかが全く表示されない。
これは何故なのだろう。 >>667
Ofはともかく、型制約にAs使うの解りづらすぎるよな
C#みたいに (Of T) Where T Implements IComparable でよかったのに
まあVBerのレベルを考えるとあまり多用される機能ではないという判断で
文法への影響の少ない構文にしたのかもね dim strA as string
dim dt as integer = convert.toint16(strA)
みたいな方法でいつもinteger 変換してるけど非常にめんどくさい。stringに機能を追加して
dt = strA.toint16
にすることはできないんですか? やる方法があれば教えてください。 >>670
もともとVBのコンセプトは英語で読めるってことだからむしろasでいい。
英語の意味的にはばっちり合ってる
whereだけでは英語として意味不明だし、implementsなんて付けちゃうとStruce, Class, Newの制約が
意味不明になる
>>671
どこが面倒くさいのかまったく理解できんなあ ちなみにWindowsのメモ帳でUnicode保存するときわ
UTF16 リトルインディアン BOM付
マメな >>672
対称性がないと普通の人はめんどくさいはず。
つまり
c = a.tostring
a = c.tointeger
これが対称性
気にならないとしたら精神力が極めて強いとか、かなり特殊な人だと思う。
英語に詳しそうだけど、英語のようなある意味複雑怪奇な言語をマスターできている
としたら相当根性があるね。
>>673
そういうのがあるとは知らなかった。ありがとう。 >>675
対称性()を尊重してToString持った型全てに対してString.ToXXXを用意しろということ?
一体いくつあると思ってんの? つかtostringはobjectから継承してんだからobjectに実装するだけだが
全く意味は無いな 並行移動
c0 = a0.tostring : a0 = c0.tointeger
c1 = a1.tostring : a1 = c1.tointeger
回転
c = a.tostring : a = c.tointeger
a = c.tointeger : c = a.tostring 数値に限らず ToString ⇔ Parse でしょ Parseは解析だからもう少し機能があってしかるべき言葉だろうな。toStringに対応する
言葉ではないな。まあ命名は大変だから仕方ないけど。 汎用的オブジェクトの保存と取り出し機能を探してるんだが例えば
1.クラスインスタンスのデータだけ(dictionary,配列なども丸ごと)をテキスト形式でファイル保存して
2.テキストエディターでそれを編集する。
3.編集したものを再度クラスインスタンスに読み込みをする
こんなことをしたいのだけど、なんかよい方法はない? XMLとかめんどくさくて使ったことないんだが、専用エディタとかで使うんだろうか?
一旦簡易形式に変換して編集してまたもとに戻すのかな?
XML−−>変換 マークダウン エディットーーー>変換ーー>XML どんな規模のデータを想定するかによるが
普通はテキストエディタでそのまま書き換える コレクションとかディクショナリーはJSONでは無理では? >>691
いくらVBerとはいえ無知にも程がある
JSONなら[ ... ] がコレクションで { ... } がディクショナリ >>666
なんでそんなことしたいのかも書いたほうがいいと思うぞ >>692
無知には程なんてないからね。君もこの程度のことを知らないのだからやはり無知だな。でも無知なんてものは
知れば一瞬にして終わる。だから恥ずべきことではない。ところで
>JSONなら[ ... ] がコレクションで { ... } がディクショナリ
これは勝手に君かもしくは君がしっている閉鎖的集団内で通じる規則として勝手に決めたフォーマットだろ、これを
サポートするVBのコマンドはない。
Dictionaryを適当に展開してこのようなフォーマットで保存すればよいということだね。
そういうことなら、そうだと説明しないと解らない。こちらは想像力だけで判断しているんだが、、 IEnumerableの拡張メソッドを作った時に
IEnumerableを継承したCollectionとかListは対象にならないの?
CollectionとかListで同様に拡張メソッドを作るか
AsEnumerableでIEnumerableにすればやりたいことはできるけど・・・ 各クラス/インターフェイスがジェネリックなのかそうでないのか
はっきりしてくれないとわけわからんが
普通はできるのでなんかおかしいこと書いてるんだろう >>696
あーごめんなさい。できますね。
IEnumerableに拡張メソッドをどんどん追加するとインテリセンスの候補がいっぱい出てきちゃって
自分で作ったやつがわからなくなるからとあるサイトをみて
Items.ToExtension.XXXみたいになるようにしていたんですがこれが原因でした。 >>694
>これは勝手に君かもしくは君がしっている閉鎖的集団内で通じる規則として勝手に決めたフォーマットだろ、これをサポートするVBのコマンドはない。
間違い。JSONの配列やマップをそれぞれリスト型やディクショナリ型とマッピングすることは一般的である。
実際、WCFのJSONシリアライズはそういう仕様だし、.NETにおいてJSONを扱うライブラリのデファクトスタンダードであるJSON.NETもそう。
知らないのが悪いんじゃなくて、そうやって知らないのに思い込みで物をいうからバカにされるんだよ。 >>699
そうだな。
そういうふうにキーワードなどの根拠となる事実を上げて説明する。そうすると確認することができるから君に誤りがある場合にもより正確にそれを指摘できる。
根拠が示されないと残念ながら指摘もあいまいになる。
因みに>>700こういう輩はシッタカが殆どで正確に表現する能力がない。まあ名誉回復の為に699の発言に於いて抜けている重要事項を追加説明できるか
どうかチャンスをやろう。それができないなら単なるシッタカ。 >>701
いやーJSON知らなかったっていうのは別にいいと思うよ
でも>>694みたいなレスはさすがに恥ずかしい
”JSON”でググればすぐ分かることなんだから
ちゃんと謝っとこうね 俺の知ってるソフトウェア開発者っていう閉鎖的集団内ではJSONの基本フォーマットは常識なのよ
日本人っていう閉鎖的集団内で47都道府県名が常識なのと同じレベル
その常識に対してシッタカとか言われても、はあぁ?ってなるわ
恥の上塗りを重ねる前に“JSON”でググれよな
俺の環境だと↓これがトップヒット
http://www.json.org/
もしググったにもかかわらず>>694みたいなレスしてんなら
プログラム書く前にもっと基礎を勉強したほうがいいよ {"a":124, "b":[3,4,5], "c": {"x":123, "y":"abcde", "z":true}}
aは整数だからDictionary(Of String, Integer)?違います
bは整数リストだからDictionary(Of String, List(Of Integer))?違います
cはDictionary(Of String, Dictionary(Of String, ???????))
VBではJSONは無理ですね >>705
cはDictionary(Of String, Dictionary(Of String, Object))
JSONだけじゃなくVBも勉強したほうがいいみたいね
すべての型をそのままJSONにできるわけでも
すべてのJSONを任意の言語の型にそのままマッピングできるわけでもないけど
それはどんなデータフォーマットだって同じだから
VBだけJSONは無理なんてことはありえない >>706
お前の場合は根拠をしめした説明が何もない。単なる罵りだけ。品性も論理性も知性もない。それでは駄目だな。
説明力がまるでない。だからシッタカと判断される。
しかし今回はこの JSON定義 サイトを示してきたことは褒めておこう。
http://www.json.org/
でもこのサイト最初から間違ってるじゃん。最初の図はobjectじゃないな。これはmemberの定義だよな。
intrduceで出鱈目もいいとこだな。
これ見たら表現力全然ないフォーマットだなと思ってしまう。最悪の紹介だな。 >>707
objectってのはJavaScript用語な
JavaScriptのobjectはプロパティのコレクションで
プロパティはKeyValueペア、つまりobjectはディクショナリ相当なの
JSONのJから勉強して
まあとにかくガンバレよ >すべての型をそのままJSONにできるわけでも
>すべてのJSONを任意の言語の型にそのままマッピングできるわけでもないけど
JSONの定義が大体分かったところで、それをVB.netで実現するライブラリが用意されているかどうかだな。
Jsonは汎用フォーマットだから、Dictionaryの保存ができるかできないかというならできるに決まってる。
問題は手軽にできるようにライブラリによってサポートされているかどうかだ。
.NET Framwork標準 DataContactJsonSerializer
CodePlex 公開 DynamicJson
CodePlex公開 Json.net
有名なところでこのくらい。ライブラリがある。
まあJson.netはDictionaryもそこそこサポートできている。後の二つは正確には調べていないが多分駄目だろうな。 >>708
それがシッタカだっていうの。これはバッカス記法だからJavaScrit以前の問題だ。
明らかに誤りだよ。 >>710
シンタックスダイアグラムはバッカス記法じゃねーわ
いい加減にしろよww
間違ってもないとこを間違ってるとか言いはって
何回恥の上塗りしたら気が済むねん
VBにJSONは無理なんじゃなく
君みたいなVBerにはJSON無理 JSONは外側をobjectにする必要はないので
true
の値ひとつでもJSONとして成立しますしですしおすし ID:nD3v/vvZはもう引っ込みがつかないんだからやめてやれよ
泣きながら腕グルグル回して飛びかかってくるぞ >>711
おっ、よく気が付いたな。些末な言葉尻には気が付いても、「間違いがある」という本質は
解らんのかな?
しかしSyntaxDiagramの基底にはバッカスがあるんだよ。
Syntax diagrams (or railroad diagrams) are a way to represent a context-free grammar.
They represent a graphical alternative to Backus–Naur form or to EBNF as metalanguages.
Early books using syntax diagrams include the "Pascal User ... WIKI >間違ってもないとこを間違ってるとか言いはって 何回恥の上塗りしたら気が済むねん
間違いが分からないとするとBNFの内容を理解してなくて字面だけを記憶してるだけだろうな。
それでは駄目だな。多く知っているようでもその知っている知識はガラクタだな。
ここにあるダイアグラムではobjectを
object
{"aa": xx , "bb": yy, "" : "zz", ..... }と定義している。これでは全く不完全だな。
array以下はあってるな。
この説明ではVBのDictionaryは表現できない。
ディクショナリでは
dictionaryName : { "key0" : xx, "key1": yy, "key2" : zz} こういう構造が必要だ。
でさらにDiagramをよく見るとValueにObjectを含んでいる。そういうことかValueの中のObjectを見落としていたのか?
ということで、間違いではなくてそれは「Valueの中のObjectの再帰定義を見落としていますよ。」って指摘ができれば
かなり賢い。知識はガラクタではないということになる。しかしこういう筋の通った説明ができないで喚くだけでは駄目だな。
分かっていたかどうかも怪しい。確率50%で外れてるが、たまたま当たった。w
もう一つ言えばこのDiagramの書き方も直観的に間違いを誘発するような駄目な記述だな。ObjectをValueの中で再帰定義する
なら特徴的に書かないと読む方は見落とす。表現の基本がなってない。 繰り返し言うが説明や根拠の乏しい主張は無意味だ。丁寧に説明する癖をつけないと賢くならない。
説明をすると、仮に間違っていても説明の過程で正しい解にたどり着く。もし正しい解にたどり着けない
にしても、誰か親切な人から訂正をしてもらえる。
説明をしないで罵るのは最悪だ。そういう癖のある人は常にそういう脳の使い方をしているので脳が
機能しなくなる。 >>709
今時CodePlexって、まさかgithubもnugetも知らないの?
まあJSONとは違ってVBerの半分くらいは知らなそうだからムキになる必要はないぞw >>720
やめてくれ
せっかくこのままVBがフェードアウトしてくれるところだったのに 1分毎にSub _Check()を1回実行させたいんですが、実際動かしてみると
1分後にSub _Check()を1回実行、2分後にSub _Check()を2回実行、3分後に3回・・
って感じでどんどん実行回数が増えていってしまいます。
ネットで以前拾ったフリーの物をいじっていて、以下のようになっているのですが
どうやったら1分毎に1回だけ実行させるように変えられますか?
ビルドの仕方が悪いとかありますか?
Sub aaa
AddHandler Timer.Tick, AddressOf Check
Timer.Interval = 60 * 1000
Timer.Enabled = True
End Sub
Sub Check()
AddHandler BackGround.DoWork, AddressOf _Check
AddHandler BackGround.RunWorkerCompleted, AddressOf Balloon_Show
If BackGround.IsBusy Then
Return
End If
BackGround.RunWorkerAsync()
End Sub
Sub _Check()
MsgBox("チェック")
End Sub ぱっと見ただけで言うけど
一分ごとにAddHandlerしてるからじゃね? 722ですけど
1分毎にAddHandlerするとどうおかしいんですか?
どう変えたら良いか何かヒントだけでも教えてもらえませんか。
723見てから考えたり検索したりしてみたんですけどやっぱり分からなくて。。
自分かなりプログラミングの知識が無い人間なもので。。 722です。
他でも聞いてみたらこうだったみたいです。
Sub aaa
AddHandler Timer.Tick, AddressOf Check
Timer.Interval = 60 * 1000
Timer.Enabled = True
AddHandler BackGround.DoWork, AddressOf _Check
AddHandler BackGround.RunWorkerCompleted, AddressOf Balloon_Show
End Sub
一分ごとにAddHandlerしてるからじゃねってこういう意味だったんですね。
結局私には理解出来なかったんですがwありがとうございました。 PC(VB.NET)でLAN接続したRasPi(Win10 iot core)のGPIOの制御をしたいのですが、どうしたら宜しいでしょうか。 先日2003があったので始めた初心者です
wavファイルをPlaySyncで再生したいのですが、再生が終わり次第次々他のwavファイルを再生していくということと、
繰り返し処理をする度再生するwavファイルの変更(パスで入力しています)をするということはどうやったら可能でしょうか? まずその2003とかいうゴミは捨てろ
今のVSは最新版が無料で配布されている 間違えましたすいません2013professionalです >>726
ラズパイは、Python じゃないの? >>727
直行する問題は分けて考えよう
まずファイルパスを変えながらファイルパスをコンソールに出力していくプログラムを作る
コンソールに出力するところをPlaySyncに置き換える
これだけのこと >>731
ありがとうございました
そのプログラムの書き方もわかりませんし、色々試してみましたが複数の音声ファイルを順に再生していくことさえできなかったので、諦めようかと思います >>727
>再生が終わり次第、次々他のwavファイルを再生していく
これは、再生アプリの方で、曲が終わったタイミングで、
こちらのプログラムのコールバック関数を呼んでもらう
つまり、非同期処理だから、初心者ができる訳ない
JavaScript などで、非同期処理に慣れていないと、できない >>734
PlaySyncだから再生終了までブロックする。非同期処理は必要ない。
もちろん現実には非同期処理をしないと再生終了までUIがフリーズするビチグソになるが、
一応の要件は満たせる ワーカースレッドの中でやればいいじゃん
スレッドにはキューでくべてやれば どっちにしても同期で順に再生することができないというなら
手の施しようがない WCFサービス参照を追加するときに、型の再利用を考えています。
その型のアセンブリ名とプロジェクト名が異なると、WCFサービス参照を追加したときに、アセンブリ名で参照が追加され、エラーになります。
すでにプロジェクト参照が追加されているので、新しく追加されたアセンブリ参照を削除するとエラーが解決されます。
これってバグなのでしょうか? すみません、未練たらしいのですが基本的なことだけ教えていただけませんか?
>>733のURLのコードをPlaySyncに変えただけのものに、player.PlaySyncに続けて、
PlaySound("別のファイル")
player = New System.Media.SoundPlayer(waveFile)
player.PlaySync
と挿入すると、2つ目のファイルが延々と再生され続けてしまいます
その後にStopSoundなど入れても意味がないので根本的なところがわかっていないと思うのですが、どこがおかしいでしょうか
できれば簡単に教えていただきたいです… >>730
WebIOPiならできたのですが、そこをなんとか・・ webbrowserコントロールでページ内のテキストボックスに数値を入れたいのですが、そのテキストボックスのIDが表示されるたびに変化してしまうので、取得出来ずnullexceptionになってしまいます。
idはnumber_**********という感じで表示の度に_以降の数値が増えます。
出来る方法があれば教えてください。 id以外で探すしかないんじゃない? bodyの3番目のdivの2番目のinput、とかそういう風なのとか
number_って接頭辞のidがそのページで1つだけなら全input要素の中でidの先頭がnumber_で始まるの探すとか >>742
ありがとうございます。
明日、会社で検証してみます。 VB6のプログラムを.NETに移せと言われてます。
当方、最近やっとVB6をちょっと理解したばかり。
VB6のモジュール内に、変数やらエクセル操作のプロシージャがあるのですが、
これはどこに移せばいいですか?
フォームに移すと多すぎなので、見やすいようにわけれればいいのですが。 とりあえず移植なら同じようにモジュールに書けばいいわけだが >>745
ありがとうございます。
わからなくて色々見ていたら、モジュールは使わずクラスに書くとか、
エクセルの操作では、COMの解放やらインスタンス生成とか、
もう??だらけでした。
とりあえずは、現行と同じモジュールで大丈夫と聞いてホッとしました。 もう恐らくデスクトップがなくなるまでVb6ランタイムはサポートされそうな気がするけどねw 噂だけどペンタゴンにあるシステムでVB6の物があるからサポート切れないとか windowsが10で終わるのはvb6切るためという噂がある
でもwindowsブランド捨てたらMSのOS事業も終わるだろうから老醜を晒してモダン化諦めたwindows作るかもな 昔VB厨で、最近までVB離れてUNIX、Linux、VC++、C#やってきたけど、
最近、VBAマクロ移植の話があって、VB.net触ってみた。
書式がちょっとVBっぽいだけで、構造は、C#のままだよなぁ。
VB互換の便利関数が使えるといっても、C#でも参照できるクラスだし。
VB並に強力な、オブジェクトメンバーの追跡できる機能がVSにあれば
いいんだけど、結局知らないモジュールのリファクタリングは手でやらなきゃいけないし。
常時Dynamicで全行ステップ実行とかできれば使いどころあるんだけどなぁ。 VBAなんかをやってた者だが、簡易にデータベースにアクセスするプログラムを書いてみた。
簡易な奴なのでAccessベースで接続するんだが、32bitと64bitで問題になってる。
×86CPU向けに作れば32bit、AnyCPU向けに作れば64bitに対応できるようだけど、インストールするマシンにAccessが入ってるとそのAccessが64bitか32bitかに左右されてしまう。(Accessと異なるbitのエンジンはインストール出来ない。)
これってどうにもならないのか?
2通りで作るしかない?
データベース変えるしかないのかな。 割り算の余りの求め方がわからなくてググっちゃったw >>754
やっぱそうなるよね。
出来ればMSでどうにかしたいんだ。
ワケありでね。
Accessベースが駄目ならテキストベースも考えたんだけど、これ64bit駄目だよね。
やっぱり2通りで作るしかないか。 >>755
SQL Server Compactは?
マネージドだからいけそうだけど もうJET&mdbでx86固定にすればいいんじゃね >>756
情報ありがとう。
調べてみたら良さそう。
これで組んでみる。
>>757
×86限定ならJETでもACEでもいけるだろうね。
というか、ACEではいけてる。
気になったのは、こんな制限が残ってるんだということ。
VBAをやってた者からするとOfficeのbitは同じだから気付かなかった。 Windows 64bit - Office 64bit - ACE 64bitならAnyCPU/x64でOK
Windows 32bit - Office 32bit - ACE 32bitならx86でOK
になってACEじゃどうにもならんはずだけどそうでもなかったっけ? あ、下段違う
Windows 64bit - Office 32bit - ACE 32bitならx86でOK
だ
Windows 32bit - Office 32bit - ACE 32bitならAnyCPU/x86でOKだな >>752
ACEの32ビットと64ビットが同居できない
.NETの問題じゃないのでどうにもできないな
OFFICEが32と64とで別なんだから、32ビット用と64ビット用分けるしかねえんじゃね
つか64ビットのACCESS使ってるとこ見た事ないけどな
>>760
Office(ACEドライバ) 64bit 使いたいって話じゃないのかね >>761
そう。
正にこれ。
実は作ってたのがVBEのアドインで、昔のAPIViewerみたいなのだったんで、Officeがインストールされてる環境が前提だった。
初めて.netで組んでみたけどコードの部分は感覚的に分かりやすいね。
元々似てるし。
http://imgur.com/9gzQbNy.jpg >>752
うちの会社のSEなら問答無用でAccessを32ビットに統一させるな
そもそも、7まではOSは32ビットにしろ!なのでOfficeも(64ビットOSでも)32ビット強制
まあ、そういう解決方法もあると言うことで 64officeだと32で開発したものが動かないからだろう 64bit版Officeにするメリットがあるかどうかだろ 不特定多数にバラ撒くアプリだと無理だけど
たとえばx32なOfficeの入ってる環境にx64のACEを強制インストする方法があったと思う AnyCPUなDLLにして、オフィスから呼んでもらうのはどうだろう
それならオフィスと同じビット数で動くんじゃね >>768
そういう認識も無く不特定多数にばら撒いて混乱するのがVB開発の醍醐味 昔のライブラリで、On Error Resume Next を前提にしたるCOMモジュールを扱うときなんかは、VB.netは便利。
C#でも似たような制御できればいいのに。 3次元配列A(x,y,z)をエクセルに
1シート毎にA(1,y,z),A(2,y,z),A(3,y,z)…としたいのですが、
1データずつ書き込むとすごく時間がかかるので、2次配列B1(y,z),A2(y,z)…の形で出力したいです。
この場合、二次配列の宣言文はどう書いたらいいのですか? 775ですが、わかりずらくてすみません。一次配列だとA(10)で10個の配列を宣言できますが、
二次だとA(10)(100,100)と書くと受け付けてくれませんでした。どのように書けばいいのでしょうか?
また、今は3次元配列から、1点ごと移して、1シート分ごとの二次配列を作ろうと思ってますが、
もっとスマートな方法があったら教えてください。 VB側であらかじめ二次元配列に変換すればいいでしょ >>777
そうなんです。VB側で二次配列に変換します。その時の二次配列名をA1,A2,A3…としたいのですが、
どうやって宣言したらいいのでしょう?個数は都度変わります。
>>778
ダメな理由は、私が超初心者だからです。Rangeオブジェクト、調べます。 Object型の二次元配列の配列は
Dim arr(n)(,) As Object
For i As Integer = 0 To n - 1
ReDim arr(i)(x, y)
Next >>779
VBAならコレクションで簡単に出来ると思う。どうしてもVB.Netでやらなければいけないならアレだが。
因みに、エクセルはシートに書き込む時ループじゃ遅くなるから二次元配列で
Range("A1").Resize(Ubound(2DArray,1),Ubound(2DArray,2)) = 2DArrayとやるとそこそこ高速に書き込める >>774
そうそう。
制御系のシステムとかでも、その時点でできることできないことがゴッチャになってるライブラリがある。
エラー前提でリリースされてるライブラリもあって、そういう前提だとResume NextがないとTryのブロック
記述がものすごく複雑になる。ぶっちゃけ、機械の挙動を、プログラムから先読みしないといけなくなる。
そういう前提のライブラリを利用するとき、いまVBはスタンダードじゃないけど、vb.netなら、VBと同じく、
Resume Next使えるからうれしい。 上の初心者です。お陰様で無事解決して先に進めました。
Do〜Loopで計算させて、ある数値の変化を見ながら中断。データをエクセルに出力、
その後また計算を再開させたいのですが。ボタンは、中断・再開・出力(終了も必要かも)
調べていたらBackgroudworkerっていうのが出てきたんですが、中断・再開、そして
その間にデータ出力って無理ですか?ほかの方法でもいいので教えて下さい。 繰り返し数値計算するプログラムを作って動くようになったんですけど、
途中でNaNが出てしまいます(NaNが出ても止まらない)
どうして出たのか突き止めたいのですが、どうやったらいいのでしょう?
デバッグのブレークポイントの設定でi=NaN,i==NaNとか入れてみたんですが、
式が良くないようで働きません。 vb.netとoracledbのプログラマが急に退職になったので、引き継ぎがないままで、私が保守をすることになりました。
15年前にVBを1つ作った経験しかないのに、任されてしまって、とても焦ってます。
vb.netとoracledbを基本から勉強をしたいのですが、いい入門書があれば紹介して頂けないでしょうか。
どうぞよろしくお願いします。 >>789
ちと古いが
VB.NETによるOracleアプリケーション開発技法 2005/4
山田 健一 (著)
俺も似た境遇でvb+oracleの開発をうん年前にするハメになったので
上記の本をアマで購入
でもトップが心変わりが激しいので開発は幸か不幸かお蔵入りw
で、odp.netをvb2013にインストールするんだけど
なぜかこれがなかなか入ってくれなくて手こずった記憶がある
上記の本(は古いから)よりネットのほうが情報あるんじゃね? すまん
こっちだったわ
Oracle+.NETプログラミング・バイブル―ODP.NETによる強力開発環境 単行本 ? 2005/9
日本オラクル (著) >>791
>>792
ありがとうございます。
早速、買って読んでみます。
古い本でも何でも勉強するしかありません。
10年以上前に導入したVB.netとoracledbのシステムらしいのですが
勉強やテストするテスト環境もありません。
SEもプログラマもいなくなったので誰にも聞けません。 >>791
>>792
もう少し教えてください。
この本に付属しているCDROMには、勉強するための環境一式が含まれているのでしょうか?
またそれらはWindows10でも動くのでしょうか?
Windows7もあるのですが、ハードディスクが30GBしかないです。
本は中古しかなかったので到着には1週間近くかかるようです。 >>794
CD-ROMは使わなかったな
環境はオラクルのホームページからdownloadしたよ(当時は要メール登録、無料)
なんかどれインスコしていいんか分からんかった記憶が…
環境はWindows8か8.1のVb2013
Windows10はわかりません
手さぐり状態の時に先にも書いたように鶴の一声でポシャったw 前に勤めていたスーパーの社長に新店オープンの検討会議に出るように言われ、なんで俺のような水産部担当者風情が
そんなのに呼ばれるんだろうと思ったら社長から「お前、面接でプログラミングが趣味って言ってただろ?POSシステム作れや」と
言われ目が点になった。「いえ、自分のはあくまで趣味程度でして」と言ったら「なんだ?嫌なのかぁ」と言われ困惑した。
スーパーのPOSシステムってのは東芝TECのほぼ独占状態で新店オープンなんかだと表現は悪いが吹っ掛けてくるらしく、
営業が一日張り付いただけで本来の料金の他に日当、メシ代、泊まりになった場合はホテル代まで持つのが業界の習慣らしく
300坪程度の店を出すのにPOSレジシステムの構築で一千万近くかかるとか。
それを従業員にやらせれば浮くじゃねえか、と考えたんだろうな。俺は「魚屋がシステム作ったらおかしいでしょ社長!」と逃げ回って
難を逃れたが(逆立ちしても無理っス)
元IBMの営業やってた総務の課長がやらされる羽目になり、開店時には従業員一同社長とこの元IBMを呪ったよWW
開店と同時にレジのおばはん達から「どれもこれも登録されてないじゃん!このバカ!」と怒号が響き、大笑いしていたら
水産物でも加工品のバーコード付きのものが全て「登録無し」と出るとババアどもからレーザービームを浴びて笑ってられなくなった。
元IBMの課長に文句言ったら「あはは、排他処理だよね、そうか、思い出した」とか言って平然としてるし。
神経が図太くねえとシステム担当なんてやってられないんだろうな >>796
昔、POS関連の仕事してたことが有ったけど、出来が良ければそのPOSアプリを一般に売れば良いんじゃね。
実際、蕎麦屋が自分の為に作ったPOSアプリ売ってたことが有った。
他にも全然開発会社じゃない所が自分用に作ったPOSアプリの出来が良かったので売ってる事例を幾つか見たことがある。 どう考えても「出来が良ければ」なんて言えない内容だと思うんだが どう考えてもコピペにしか見えんけどググても出てこないから
本当に書いてるんだな。
神経図太いって、それこんな開業も入れない文章書く奴のことだろw
それと、一応昔からTECの他にNCRって会社が大手であったはず。
今は普通にNECや富士通もWindowsやLinuxベースのPOSレジ作ってる
それから、ソフトはその元IBMのオッサンが作るとしてハードはどうしたんだよ。
そのオッサンがハードから作ったのかw
作れる訳ねえだろw
デタラメ書くにも程がある。 EPSONからプリンタとカスタマーディスプレイ買ってパソコンあれば出来る。
ついでに昔は制御方法も教えて貰えた。
他にもシャープとかカシオとかハードだけ買えた気がする。
あと、NCRは日本ではそれほど大手じゃなかった印象だな。
TEC、富士通、NEC、IBMの順ってのが俺の印象。
NCRはその次ぐらい。
あくまで俺の印象だし、今はどうなってるのか知らんけど。 cとJavaの開発経験があるけど、.NETで初めて開発刷ることになりました。だいたい3ヶ月やれば開発に参加できますか? それはあなた自身の学習能力とチームが求める能力の関数でしょう こんな答えようのない事を他人に尋ねてくる上に、文章の推敲も出来ないやつは
ハナっから開発メンバーに入れたくないな>>803 >>803
ドットネッターて>>804,805みたいな無能ばかりだから3ヶ月どころか3時間あればエースプログラマーになれると思うよ 質問失礼します。
現在、SQLserverからDataReaderにテーブルデータを取得してDataGridViewにテーブルデータを表示させているものがあります。
DataGridViewではなくExcelに出力させて欲しいという要望があり、対応しようとしているのですが、DataRederの内容を2次元配列に入れる事が出来ず困っています。
やりたい事
DataReaderの内容を2次元配列に格納し、指定したExcelファイルに一括で書き込み。
よろしくお願いします。 datatableから出力させた方が楽なんじゃないかな。。 >>811
申し訳ありませんが、やり方を教えて下さい。
現状のコードは
datareader=command.ExecuteReader()
While datareader.read
‘データグリッドビューへ出力
End While
なのですが、AdapterとDatasetを作ってDataTableに格納して、Excel出力するイメージですか? dataadapter.fill(datatable)じゃダメなの >>811
>>813
ありがとうございます。希望通り動作させる事が出来ました。
また、よろしくお願いします。 visualstudio2013、.net4.6で、ZipFileクラスは出るのにZipFileExtensionsクラスが出てこないんですが原因わかりませんかね?
参照にSystem.IO.Compression.FileSystem は追加してます。 EditorBrowsable 属性で Never が指定されているからインテリセンスには出てこない
ZipFileExtensions と入力した後に . (ドット)を入力したら出てくるけど、拡張メソッド提供用のクラスなので、
dim archive as ZipArchive
archive.CreateEntryFromFile ( ... )
みたいに拡張メソッドとして使用したほうがいい 約10数年ぶりにこのスレに戻ってきた…
実に.NET1.1以来…
pingクラスを非同期「Ping.SendAsync」で使ってインターネットの速度低下を計測したくて
タイムアウトでイベントを拾いたいんだけど
タイムアウトの時間を20msにしてもタイムアウトイベントが起きない
イベントがcompleteで帰ってくるので21ms以上かかっても正常で戻ってくる
ちなみにdobonでサンプルを参考にした
タイムアウトイベント拾えたひといたらお知恵拝借したい >>817
https://msdn.microsoft.com/ja-jp/library/ms144961(v=vs.100).aspx
> timeout に指定した数値が非常に小さい場合、timeout のミリ秒数が経過した後に Ping の応答が受信されることもあります。
これじゃない? >>818
早速サンクスです
どうもこれが原因っぽいですね…
100ms超えるようだとログに残したかったので
毎度応答時間チェックしてみることにします
私事だけどWindows10で.NET1.1が動かないから
昔作った業務アプリを作り直さないといけない…
クリレポ動くんだろうか… >>816
そういうことだったんですね
ありがとうございます
勉強になりました 暗黙の型変換の挙動ってどこで制御しているんでしょうか
decimal d = 1
String s = "hoge "
s = s & d
この時のdって暗黙の型変換?がされていると思うのですが、
decimalの実装を見てもどこでこの挙動が制御されているのかわかりません Option Strict のこと?
ttps://msdn.microsoft.com/ja-jp/library/dd314347.aspx
あとはアンパサンドオペレーターあたりじゃない?
ttps://docs.microsoft.com/ja-jp/dotnet/visual-basic/language-reference/operators/concatenation-operator 雑魚プログラマなんだけどプロパティについて聞きたい
普通↓の@の形式だと思うんだけど
似たようなことしたいときにAとかBの形式より@が良いの?
@----------ここから
メンバ変数 _A
プロパティ A
’_Aをsetとgetする処理
@----------ここまで
A----------ここから
メンバ変数 _A
プロシージャ setA(引数B)
’_Aに引数Bを代入する処理
ファンクション getA
’_Aを返す処理
A----------ここまで
B----------ここから
プロパティ A
プロシージャ setA(引数B)
’Aに引数Bを代入する処理
ファンクション getA
’Aを返す処理
B----------ここまで プロパティを宣言すると、コンパイラは中間言語にgetterとsetterのメソッドを作る。だから意味ないです。普通の?の形式を使えばいい。 >>821
暗黙の変換やってるのはコンパイラじゃね
>>827
定義するのを(定義)切るとか言うことがあるなぁ。変数切るは変数定義するってことだな
通じる人のほうが多い気がするけど、おっさんだけかもしれんw
語源はしらん >>829
では変数の宣言と定義の違いを簡単に説明してくれ >>830
コンパイラのために行うのが宣言
リンカのために行うのが定義
分かれてない言語の場合は宣言と定義を一度に行う >リンカのために行うのが定義
ピンとこないな
アロケーションとは違くて? >>822
ありがとうございます
アンパサンドオペレーターでできるかと思ったのですが、
Stringは継承できないしdecimalは構造体だしでダメっぽいです
諦めました >>833
何言ってるのかよく分からんけど、.NETのオブジェクトはすべてToStringメソッドを持ってるので、
s &= d
は
s &= d.ToString
と同じ、これはC#でも同じ &をオーバーロードして、
s &=d だけで s &= format(d, "0.00###")
みたいな挙動をさせるのが目的でした
今は確認できないのですが、ToStringをオーバーロードすれば出来るのか後ほど確認してみます
ありがとうございます >>835
そんなこのできないと思うけどできたとしてもやらない方がいいと思うよ。
コードを読む立場になって考えてみ?
s &=d
が実は、
s &= format(d, "0.00###")
と同じ働きをするって普通は誰も思わないからそのコードを読んだ人(数か月語の書いた本人含む)
は絶対混乱するよ よろしくない方法だというのは承知しつつ個人用なのでやってみるつもりでした
とはいえそもそも出来ないようで
Stringクラスが継承不可になってるのはそういうのまで考えられてるのかな それはdの方を独自クラス(構造体)にすれば良いんじゃね
継承出来ないようなら暗黙的に変換できる型を作れば良いんじゃね ちょっと文字数減らすために変な小細工しない方がいいと思うよ
こんなのせいぜいマジックストリングを無くす程度で十分でしょ
Const DecimalFormat as String = "0.00###"
....
s &= d.ToString(DecimalFormat) >>834
ちょっと気になったんだが、VB.NETの暗黙の型変換で呼ばれるのは、CType関数じゃないかと
暗黙の変換はStringに限るわけじゃないから、StringのときだけToStrring呼ぶような事はないんじゃね
CTypeは値に忠実に返すべきだが、ToStringは説明的な文字列付加するとかあり得る話だし >>840
あ、VBの&はC#の+演算子と違って自動的にToString呼ばれないみたいだね。
文字列&hogeの場合はhogeにStringへの暗黙変換が定義されてないとダメなのか
変なところでVBの方が厳しいな
https://msdn.microsoft.com/ja-jp/library/k1a63xkz(v=vs.100).aspx
https://msdn.microsoft.com/ja-jp/library/wfx50zyk(v=vs.100).aspx 勢いで>>838実装してみた
https://ideone.com/l0VRiT
ideoneってVB.NETの動作なんだか怪しいな
バージョンの新しい方はなんだか動かないし、古い方は自動実装プロパティ使えねぇ
一応言っとくけど、たんにDecimalの表示時にフォーマット指定がめんどくさいとか
その程度の理由でやるような事じゃないからな
じゃあ夜中に何やってんだ俺w >>841
VBの&は文字列連結専用の演算子だからな
実はVBでも+で文字列連結できる
その場合の数値加算か文字列連携かの判断と実行内容がC#と同じかはしらん
まあ、暗黙の変換は予期せぬ結果をまねきかねんから注意しろってことだな 退位の話題がニュースにあったんだけど
.NET1.1で新元号のアップデート来るかな… >>844
元号ってOSから引っ張ってきてるんじゃないかなぁ
OSが対応されればそれで行ける気がするけど、1.1動くOSってどこまでだっけ
未だに1.1のシステム抱えてる身としては他人事ではない >>846
Windows10は1.1が動かない(とされてる)
業務ソフト納入してる客先でPC機器類納入してる別の会社が勝手にWindows10に変えようとして
慌てて一台リースを延期してもらった
>>847
2.0でビルドしたものが4.0で動いたというのが興味深い 2.0以降はいちおう上位互換考慮されてるはずだからなぁ
OSもフレームワークもサポート切れだから、アプリもサポートできません
アプリバージョンアップしてください(もちろん有償で!)
こう言って通れば良いんだがなぁ コマンドプロンプトで実行するプログラムで、C言語のsystem()関数と同様の関数ありますか。
Processクラスは別画面で起動します。同じ画面で実行したいもんで。 >>851
UseShellExecute = False にしてみたら? Class clsMai
Public Text As String = ""
Public size As Integer = 0
End Class
Dim lm As New List(Of clsMai)
このとき
dim sum as integer = 0
dim dt as new clsMai
dt.text = "aaa"
dt.size= 10
lm.add(dt)
lm.sum += dt.size
最初はListだったんだがSumが追加したい。こういう時にはlmはどういうように定義するのがいい? Class clschkMai
Inherits List(Of clschkMaisu)
Public sum As Integer
End Class
これで
lm.add(dt)とやるだけで上記のlm.sum+=dt.sizeも行うようにしたいのだがやり方が分からない。 >>854
List<T>を継承じゃなくて中に持つクラスを作るだけでしょ。
あるいはsumを頻繁に使うのでなければ、LINQのSumを使った方が簡単
それと今時変なハンガリアンやめなはれw
Claass MaiList
Private _list as New List( Of Mai)
Private _sum as Integer = 0;
Public Sub Add(x As Mai)
_list.Add(x)
_sum +=x.size
End Sub
Public Property Sum as Integer
Get
return _sum
End Get
End Property
End Class おお!! そういうことか。ありがとう。 addがOverridesできないものかと悩んでた。
clsXXXって書き方は駄目なのか? 何か不都合があるんだろうか? アッ、駄目だ。継承しないとlm(3).textのようにインデクサでのアクセスができない。 >>857
インデクサ(VBは既定のプロパティと言うと思うけど)も自分で書けばいいんだよそれはwww
簡単でしょw
何でこの程度のことを思いつかないのw それはできないでしょ。 lm.lst(i).text みたいになってしまうから。これは面白くない。
lm(i).textにしたいわけだ。 アッ、List(of ss)ができるのだからできるのか? できる筈だよな。調べてみる。 ここで聞くのが適切かわからなかったんですが、ご存知の方がおられましたらお教え下さい。
症状
win10のアップデート1703へ更新した直後から、datagridview内への入力時にIMEがオンになっている場合に、最初の入力文字が2つ入力される。バックスペースで消した後は、通常通り入力できる。IMEオフ時の半角は通常通り入力可能。
例えば「は」と入力しようとした場合は「hha」と下線付きで入力されてしまいます。
開発環境では再現しないのですが、何が考えられるでしょうか?
明日、IMEのプロパティのなかの直接入力をしないのチェックを外すのを試して頂く予定ですが、他に何かこうじられる手はありませんでしょうか? csvから以下の様なデータをよみこんでDataGridViewに、キーが5件以上のレコードだけ表示したいのですが可能でしょうか?
キー,品名,重量,形状
A001,aaa,111,丸
B001,bbb,222,バツ
csvは5000レコード程になります。
キーは700種類くらいです。
宜しくお願いします。 何が分からないんだ?
CSVファイルを読み込みか?
GroupByの使い方か?
5件以上の抽出方法か?
複数Groupのフラット化か?
DataSourceプロパティか? >>868
csvからキーが5件以上重複しているものを抽出する部分です。 同時には無理
まずはCSVから全データを読み込み
そのデータをLinqかなんかで絞り込む
この2つの手順が必要 JETとかACEとかでSQL書けば同時に出来る気がしないでもないがな >>870
とりあえずcsvをデータテーブルに入れデータグリッドビューに表示は出来るのですが、Linqが難しく書けません。
教えていただけませんか?
5件以下のレコードだけ表示の間違いでした。 「GROUP BY キー」して、「HAVING 5件以下」して、「SelectMany」するだけだろ?
どこが難しいんだ? 結果的に同じになればいいんだったら処理は遅くてもやり方はいろいろあると思う。 >>873
linqで抽出した後に、データグリッドビューに表示が出来なくて何が悪いのか理解できず諦めました。
結局csvに対してsql文を書いて873さんの言う通りGroup ByとHavingで実装いたしました。
お騒がせしてしまい、すみませんでした。 datagridviewで集計処理をやりたいです。
具体的には、項目毎の小計行をdatagridviewへ追加して、最終行に総計を出したいと思っています。
Forループでやってみたのですが、小計行を追加すると最終行が変わってしまい最終行まで処理を行えません。
Doループでやってみようと考えたのですが、最終行判定方法が分かりません。
datagridviewで上記の様な集計を行う方法を教えてください。 データを行追加しながら小計や総計を出せば最終行を気にする必要はないと思いますが >>877
datatableをバインドしているのですが、datatableから1レコードづつ追加して小計行を入れる感じでしょうか? <例1>
dim a As decimal = "0.12340000"
Console.WriteLine (a)
⇒0.12340000
<例2>
dim a As decimal = 0.12340000
Console.WriteLine (a)
⇒0.1234
<理想>
dim a As decimal = "0.12340000"
Console.WriteLine (a)
⇒0.1234
理想のように出力させる方法ってないでしょうか >>879
Console.WriteLine(a.ToString("G29"))
または
Console.WriteLine("{0:G29}", a) すいません、書き方が悪かったです。
出力させると言うよりは、
dim a As decimal = "0.12340000"
の宣言後にa=0.1234と内部的に認識?させたいです。
文字列変換時のformatは使いたくありません
decimal等に一度キャストして再度decimalに戻せば消えるんでしょうか むしろ後続のゼロを保持するDecimalで勝手に後ろの0を消す
VBのエディタだかコンパイラだかに問題があるけど
Decimal.Parse(a.ToString("G29"))でもすれば 何が言いたいのか何がしたいのかさっぱりわからんけど、
そもそも文字列リテラルでdecimalを初期化するのが間違ってる Dim a As String = "0.12340000"
Dim b As Decimal = CDec(a)
これでええで Decimalって後続ゼロを保持してるとかいう仕様なんだが
実際の小数点以下桁数については、取得するメソッドとかすら用意されてないぽいよな
なんでそんな片手落ちな仕様なんだろ >>885
これで取得できるみたい
Dim a = Decimal.Parse("0.12340000")
Dim len = Decimal.GetBits(a)(3) >> 16 And &HF
Console.WriteLine(len) ' 8 関係あるようでないけどsqlserverのnumeric型に1とかを格納して1.000000になるのって防げないよね?
Decimalに代入して扱うとずっとゼロが残るもんで
ToString("G29")を全部に書き加えたんだけど、もっと頭の良い方法あったなら死にたい (1) 必要もないのにDecimalなんか使わない
(2) 必要な精度に合わせて丸めることを覚える(実数型っていうのはそうやって使う) Oracleだと後続ゼロは勝手に除去するし面倒やね >>887
SQL ServerのNumeric型は指定精度の固定小数点だし、そんなことになるか?
どうやって取得してるのか、簡単なコードあっぷしてくれ すんません、.net nativeってどうなったんですかね? >>890
datareader経由で普通に取得してた記憶がある
テーブルに格納した時点でnumericなら1.000000~みたいになるし、それがむしろ正常なのでは? Dim pic As PictureBox = New PictureBox
pic.Width = PictureBox3.Width
pic.Height = PictureBox3.Height
pic.Top = PictureBox3.Top
pic.Left = PictureBox3.Left
pic.BackColor = cs.GroupColor
こんな感じでインスタンスを作ってその位置と外形だけ複製したいのだがなんかよい方法ない? だめだ。 もっとスマートな方法はある。何か考えろ。
デリゲート使って簡単にできんか?
それとか、、、コピーモードもあるはず そんな汎用的じゃない処理がライブラリにあるわけないでしょ
世の中自分を中心に回ってるとか思ってる? PictureBOxにコピーコンストラクタを追加する。
dim pic as picturebox = new ExPictureBox(PictureBox3)
みたいなことはできんか? Class exPictureBox
Inherits PictureBox
Sub New(pp As exPictureBox)
MyClass.Width = pp.Width
MyClass.Height = pp.Height
MyClass.Top = pp.Top
MyClass.Left = pp.Left
End Sub
End Class
これをPictureBoxにキャストはできんのかなー 「継承のルールによると、派生オブジェクトは常に基本クラスの変数に代入できると規定
されています。」
できる筈だが、エラーになるな。 >>899
マジボケ?
コンストラクタの引数の型はPictureBoxにしないとダメなんじゃないの?
それから、そんなつまらん処理のためにいちいち新しい型を作るとか無駄。
せいぜい拡張メソッドでいいでしょ
Public Module Exetnsions
<Extension()> _
Public Function GetMimic(p as PictureBox) as PictureBox
....
End Function
End Module IIf(count Mod 2, leftp = GroupBox4.Left, leftp = GroupBox3.Left:top += ctl.Height
これってなにか良い方法ない? そんなものない。だから、世の中君を中心に回ってない。
ついでに言うと、それもダメ。もう全然ダメ
それ意図した通り動かないはずだからやってみ なんか廃れてるけど質問ここでいいのかな
初心者向けの本買って、
その通りにサンプルアプリ作ってるんですけど、
TextBoxコントロール入れて、fontプロパティをメイリオの16pt、
Sizeプロパティを55,55にしろってのがあるんだけど、
その通りにするとSizeが55.39に勝手になってしまって高さが55になりません
多分フォントサイズに自動的に高さを合わせてるから39に勝手になってるんだろうけど、
どうすれば高さも55になりますか? >>909
テキストボックスの右上の方にちっちゃい右向きの三角の記号あって▶そこクリックでMultiLineっていうの出てこない?
もしくはテキストボックスのプロパティからMultiLineをtrueにする VB2010使ってて最近2017使い始めたのですが、ショートカットキーでCTRL+↑してもプロシジャーの先頭に移動しません。
どなたか教えてくださいませ。 excelシートみたいなのの無償で使えるコンポーネントない? VB初心者です。
下記のコードでアプリケーション起動時に
1.データテーブルを作成
2.CSVファイルからデータテーブルへデータを読み込み
3.データテーブルのデータをデータグリッドビューへ表示
としています。ここまでは完成しています。
アプリケーション上にデータの追加ボタンbtn_add_Clickを作成してアプリケーション上からデータをリストへ追加していきたいです。
DataTableにデータを追加して、そのデータをデータグリッドビューへ表示したいのですがどのようなコードにすればいいでしょうか?
ご教示お願い致します。
入力フォームはすでに作っていて、テキストボックスA、B、C、Dとその入力されたデータをもとに内容が変わるラベルE、Dがあります。
長文すぎて書き込み拒否されるのでコードはリンク先で失礼します。
https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q13187386258 DataSourceのDataTableに追加するコードをButtonのクリックイベントに書けばいい。
DataGridViewにバインドしているから反映される。
コードからバインドされたDataGridViewには追加出来ないからSourceに追加する。 >>917
回答ありがとうございます。
いろいろ調べてDataTableに追加しようとしましたがうまくできず
DataTableと別にDataTable2をつくってDataTableと結合→DataGridViewに表示しようとしたのですがそれもでうまくできませんでした。
DataTableに追加するか
DataTable2を作成、DataTableとDataTable2を結合
のどちらかの例文を教えて頂けないでしょうか?
よろしくお願いいたします。 DGVしゃ足りないんだからそれこそエクセル(クローン)しか無いだろ
でも.NetじゃOLE出来ないしなー
(表示だけならWebBrowserで出来るみたいだけど) >>918
Dim tbl As New DataTable(“table”)
Dim row As DataRow
'1列目
row = tbl.NewRow
row("Item1") = "A1"
row("Item2") = "A2"
row("Item3") = "A3"
tbl.Rows.Add(row)
'2列目
row = tbl.NewRow
row("Item1") = "B1"
row("Item2") = "B2"
row("Item3") = "B3"
tbl.Rows.Add(row)
'途中挿入
row = tbl.NewRow
row("Item1") = "C1"
row("Item2") = "C2"
row("Item3") = "C3"
tbl.Rows.InsertAt(row, 1)
みたいな感じで出来ない? >>920
参考にして少し弄ったらできました。
ありがとうございます。
新たな壁に直面して
DataTableをCSVファイルで保存したいのですがうまくいきません。
ご教示願います。 >>922
そのコードはどうすればボタンクリックイベントにできますか? クリックイベントで、ConvertDataTableToCsvにデータテーブルとcsvのパスとヘッダーを書き込むならTrueを渡して呼び出すだけ。 >>924
パラメーターdt ,svPath,writeHeaderに対して引数が指定されていませんとエラーがでるのですがどうすればいいですか?
Private Sub btn_hozon_Click(sender As Object, e As EventArgs) Handles btn_hozon.Click
ConvertDataTableToCsv
End Sub >>925
ConvertDataTableToCsv(DataTable(“table”),”C:\test.csv”,True)
みたいにして引数を渡して呼び出せばいいです。
ファイル名やデータテーブル名などは、自分の環境に合わせて下さい。 >>926
ありがとうございます。
一応保存には成功しました。
しかし、一番最期の行が消えてしまいます(CSVに保存されていない)
どうすればいいですか? DataGridView上の特定の文字列のセルの文字色を変更したいですがやり方がわかりません。
例えば5列目1行目と5行目にAAAがあってこれを赤色、5列目3行目と4行目にBBBがあってこれを青色、といった感じで文字色変更したいです。
下記のコードでセルを選んで文字色を変えることには成功しましたがここからどのようにすれば、AAAやBBBといった文字列のセルの文字色を変更できるかがわかりません。
Me.database.Item(5, 1).Style.ForeColor = Color.Red >>930
セルの値がAAAかどうかを1セルずつチェックする すいません、ここが最適だと思ったので教えてください!!
Spread(グレープシティ社)のWindows Formのバージョン8で
右端に列を追加するにはどうすればいいですか?
右端で右クリックして列を追加すると右から2番目に追加されてしまって困っています! スレ違い
せっかく高い金払ってるんだからサポートに聞け 餅は餅屋に聞くという思考が次第に薄れてきている事を感じさせますね。 SpreadのことはGrapeCityに、VB.NETのことはマイクロソフトに聞くべし
だったら何でこのスレあるの? グレープシティっていいの?
あとエクセルなんとかってとこのが定番化だった気がする ActiveX(〜VB6)までは世話になったけど、.Net になってからGrapeCity には関わるまいと誓った。 質問させてください、2つの波形の位相差(シーター)を求めたいです。
chartコントロールに位相差の違う2つの波形を表示させてその位相差を測定したい。
例)https://blog-imgs-86-origin.fc2.com/m/0/k/m0kichiazuma416/066_01.png
最終的にはこの様な物を作りたい。
http://siesta.la.coocan.jp/zk/PwrChk2/pwrchk2.html
この作例だと、電流値と電圧値をchartコントロールに入れて、
chartコントロールに演算させて力率を出しているのだと思うのですが。
どうなんでしょうか。 >>944
とりあえずchartコントロールに何かを計算させようって発想は根本的に間違ってるw
エクセルじゃないんだからwww
chartが担うのは表示機能だけw
当たり前だけど位相差は測定値の時系列から自分で計算するコードを書くしかない。
ひょっとしてそもそも位相差が何を意味するか分かってないんじゃないの? LISTを使いたい場合、何かImportしないとダメでしたっけ?
Dim a As New List
ってところで'List' is not declaredってエラーが出る System.Collections.Generic VBは ; と { } がいらない所がほんと好き
JavaC#で } が続くのを見るとストレスがマッハ
なので明日からパイソン使います >>950
老眼になってから{}の区別つかないのでますますc系が嫌いにw >>951
今は老眼だが、Fortran77をカード穿孔機でプログラムを書いて読ませ込んでいた学生(高専)時代、
l(小文字のエル)、I(大文字のアイ)、1(数字のいち)が見分けづらく、デバッグに難儀した思い出。 ベテラン氏おつであります
まだ現役のプログラマーやってるの? 教えて欲しいのですが
google chromeで任意のページを開いて2分後に閉じるってどうすれば良いですか? >>955
私も高専だったがokitacとtosbacだったw 両方紙テープだったがtosbacは高速光紙テープリーダーだった
なのでテープ詰まり起こすとほぼ切れたw >>958
HITAC 8000シリーズのどれかだったと記憶。(HITAC10は完全に置物状態)
3年生のとき、PC実習室が出来てEPSON PC-286が導入され、HITACは教師の研究専用になったけど。
>>956
C言語で止まっているポンコツには、VBAもえっちらおっちら。(;_;) パンチカードとか一回やってみてーよなあ
博物館で体験コーナーとかそういうんじゃなくて
ガチの仕事で当時の環境まで再現して・・・
957はVB.NET 別プロセス 終了とかでググれ VB6で
Do
If 条件
GoTo ラベルA
Else
Exit Do
End If
処理A
ラベルA
処理B
Loop
という事をしていた場合
VB.NETで作り直す際はラベル使わずにやるなら
皆さんも処理Bの部分メソッド化してますか?
それとも何か別のやり方とかやってますか? >>968
何この糞意味不明なコード
これ、「処理A 」の部分は絶対に通らないけど...
つーかこれ、
While 条件
処理B
End While
これと何が違うんだ? ElseでExit Do だから、GOTOで飛ぶかループ抜けるかだが
まあほんとにこんなロジックなら全体的に見直すけど >>970
こいつも質問者と同レベルの酷い馬鹿だな >>972
せめてどこがどうひどいのか具体的に指摘できないのかね 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
E3IKN なんでc#の方が覇権握ってるんかね。excel VBAから入るから、vb.net一択だろ! 無理矢理BASIC文法に押し込めて無理が生じてるからだろ
Handlesとかラムダ式の書き方とか苦し紛れ過ぎる 全部Dimから始まるのと型を明示しなくてもなんとかなるのが気持ち悪い
インスタンス生成時に引数なしなら()省略できるのもなんか嫌 >>982
なんでって結局マイクロソフトがそっちに力(膨大な資金)を入れたからかな
C#はオブジェクト指向的に良くできてる上に
delphiの開発リーダーを引き抜いて開発手法をまんま移植させた
マイクロソフトもBASICに思い入れがあったからか
まだC#ついでに現代的な言語としてメンテしてくれてるだけ超絶ラッキーよ 思い入れがなかったからウインドウズの発展を陰から表から支え続けてきた無数のVB6プログラマーを切り捨てたんやぞ そういえばVBを調べるためにC#の記事を読んでいるうちに
C#もいつの間にか書けるようになってるんだよなぁ
それでも慣れでVBで書くほうが早いから使ってるけど
残念ながら世の中的にBASIC系は時代遅れってイメージで使う人が減ってる
Excelのマクロもpythonにするって噂があるし 言葉足らず
切り捨ててまでいないのは思い入れがあるからだろ
そうでなかったら、VB自体切られてる たんに利用者がいてメリットがからサポートしてるだけで
思い入れとかそんな心情的なものじゃないだろうけどな >>990
表面的にはそう見えるが実情は単なるシェア防衛の為の政略やぞ
当時のMSにとってはJavaが最大の脅威やったんや
そのWrite Onece, Run AnywareというポリシーからMSのシェアを守るためだけの
実に政治的な理由によって生みだされたのがCLIや
そしてCLIに全力をそそぎたいMSはVB6をあっさり切り捨てた
とはいえVB6のユーザー企業にそっぽを向かれては本末転倒やから
苦肉の策としてVB.NETを生みだしたという訳や
MSにとってVB.NETは今すぐにでも捨てたいお荷物以外の何物でもないで 他言語出身なんだが使いにくい印象しかない
初心者にはわかりやすいのか? 自分はVB6er→C#erだが
正直C#のほうがBASIC(の思想)に近い気がするからな
ユーザーが真に求めていたものはVB6の文法のまま
CLIで動くものだったよね
専業でない人とか素養のない人向けには
VBAが限度だった。
C++もそうだがもはや言語設計者のオナニーになってきてるからな
その中でもC#は現実解とのいいバランスをとってるほうだが 事務員だからVBAとPHPしかわからんわ
c♯やっても結局冗長なコード書くことになるので、VB.netでいいや みなさんは簿記二級以上や、中小企業診断士や会計士持ってますか?
知らないとSEの指示に従ってコーディングするだけの時給いくらの人になっちゃいますよね? このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 711日 3時間 13分 53秒 5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。
───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────
会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。
▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/
▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php レス数が1000を超えています。これ以上書き込みはできません。