2 :
デフォルトの名無しさん :2011/10/01(土) 18:07:46.25 BE:364414234-2BP(0)
341 を134にならべかえるには データテーブルをつくればいいの?
>>2 ToCharArrayしてArray.SortかけてNew Stringで完成。
Stringに拘らないなら、From ch In "341" Order By ch とかも。
ピクチャーボックスに星型の画像を入れると画像の部分だけクリックイベントが発生するようになりますか?
>>4 そういうことか。
調べてないけど、たぶん無理っぽい。
画像の背景の色はプロパティで設定できたと思うから
フォームの背景と同じにしてごまかすとかしかできないかも
イベント自体はそこでも発生してしまうが。
もしくは、フォームのクリックイベント利用して
そこの座標がx,yだったらみたいな条件で処理に入るとかどうですか?
>>4 WPFでそういうカスタムコントロール作るのはどうよ
7 :
デフォルトの名無しさん :2011/10/02(日) 00:37:03.68 BE:637723973-2BP(0)
8 :
デフォルトの名無しさん :2011/10/03(月) 22:01:42.27 BE:121471722-2BP(0)
11枚ありますけど
今回の場合、ループ内の処理はスルーするとして、 For i = 1 To 10 が読み易さ的には正解かな。
でもループって配列とかのインデックスに使うことが多いから 0から始まるのが普通では?
Cの世界ではね。停止条件に"i < 10;"って書くのが習慣になってるから。
VBで指定回数回す場合は
>>11 が普通。
回すだけならいいけどインデックス指定するときに -1するのが面倒くさいからこうなる For i = 0 to array.Length - 1
俺の場合 0〜 の変数は i 1〜 の変数はXxNo みたいにして変数名で 分けてる。
なんか来週.NETのプロみたいな人に俺がどれくらい VB.NETができるかの尋問(w)を受ける予定なんだけど、 何を訊かれるんだろ? LINQとかあとデリゲート絡みのクラス設計とか前もって 復習しておけばOKかな? 正直俺は既存システムの改修ばっかりやってて 一応VB.NET(C#)はできるが、なんか知識的には 器用貧乏w プロの人は何を質問してきますかね?w
俺がその.NETのプロ(笑)なら、口頭で質問なんてしませんね。 人のスキルを見るにはそいつが書いたコードを見るのが一番。 2chもそうだけど、「妙に細かいことは知ってるけど、ちゃんとコード書けるのかなコイツ?」 って感じがする人、web上には大勢いるよねw
>>17 その場でコード書けと言われたら、俺はアウトw
ググりまくってるところ見られないなら、なんとかw
>>18 俺SEだけど
むしろググりまくってるほうがいい印象
どういう手段であれ実装できればそれでいい
>>19 元COBOLERに多いんだけど
コピペして意味もわからず適当に修正して問いあえず動いたからいいや
みたいなソースが量産されるのは勘弁。無意味な行があったり。
SEならメンテも考えてくれよ
VBAマクロの自動記録の連結のようなやつとか
>>19 が言いたいのは、恐らく、webで情報を拾うのは別に減点材料にはならない、
ってことでしょ。
それはそうだよ。もちろん、程度問題ではあるが。
>>16 俺ならとりあえずいままで書いたコードの
例外処理と、変数スコープ、メソッド切り出しのセンスを見るな。
winformならイベントまわり、
チェンジ、フォーカス、イネイブルあたり
がまともに制御できるか。
あとはオブジェクト指向の基本的なことが分かってればまあ任せて大丈夫って思う。
LINQやデリゲートは必須ではないかな。
23 :
19 :2011/10/05(水) 00:17:13.62
>>20 すまん
意味あいは
>>21 の言ってること
ソースは動きさえすれば適当でいいといっているわけではない
24 :
16 :2011/10/05(水) 00:19:18.87
いろいろ意見有難うございます。 一応、向こうはこちらが中級なのは当り前で、 あとはどれだけ上級に近いかを確認してくると 思います。 その人が書いたC#のベースのフォームクラスが すげーややこしいLINQ、匿名メソッド、ラムダ式の塊 だったんで、それを踏まえた上でのクラスが作れるか どうかなのか〜って思ったりで。 ただ結論がでない質問ですね。すいませんでした。 週末に浅く広くもう1回VB.NETについて勉強してみます。
>>24 結論は特になにもする必要なない。
.NETのプロ(笑)ならややこしいことするなと言ってやれ。
>>24 メンテナンス性って言葉教えてあげたほうがいいよ。
あんたもそいつもずっとメンテ出来るとは限らないんだからさ。
2,0が出た頃はいろんな機能実装してすげーフレームワーク作ったぞ みたいなことを言ってたが 結局他人に渡したときに可読性が悪くて 渡す先のスキルや癖の差もあって理解できる出来ないってのがかなりあった 結局今はVBAが読める人レベルに落としてコーディングしてる
そうそう。複雑なコーディングする為にフレームワークがあるんじゃなくて、 複雑な処理を簡単なコーディングで出来る ようにすることがフレームワークの目的なんだからさ。
29 :
16 :2011/10/05(水) 23:26:33.32
そうなんですよね。 その人の作ったフレームワークがややこしすぎて、 理解してれば、確かに恐ろしいほど少ないコードでいろんなことを 実現してるんだけど、初めて見て手を加えようと思った時は さっっぱり分からんかった。テキストボックス一つ増やすだけでも いろんな準備やら何やら整えなくてはいけなかったりで (ちなみに作った人は現場にはいないw)、普通に組めば簡単な 処理でも、フレームワークのロジックの深いところで出たエラーは 内容がさっぱりで進まなかったし。 確かにメンテナンス性を考えて、分かりやすいレベルにしておく べきだよね。(って自分に都合のいい結論にしておくw)
無駄なフレームワークが多すぎる。 .Net Frameworkのバージョン上げるだけで解決出来るのにずるずる使い続けてるのも多すぎる。
VBな人って、プログラミングテクニックといった面ではどうせ停滞した人たちなんだから、 もうVBの言語仕様を変えるのはやめてほしいよ C#の進歩に波長を合わせる必要なんてないのに やろうと思えばいろんな書き方ができるだけにつらいわ 馬鹿に合わせて、10年前からなんの進歩もないようなコードを書くのは苦痛
>確かにメンテナンス性を考えて、分かりやすいレベルにしておく >べきだよね。 おっしゃる通りで 匿名メソッドだのLINQだのを使いこなすより、そっちのが重要
お前らのいうメンテナンス性 ↓ VB6しかわからない人でも読んで理解できること
極論を言えばそうかもしれない。 少なくともパッと見で何してるか分からないようなソースコードは複数の人間が見なきゃいけない部分で書いちゃいかんというのは、経験則からくる業界の常識。 言語仕様上できる事全てがやっていいことではない。
>>32 VBでやりたいこと自体が
10年前からたいして変わってないからな。
本当にハマる部分は言語が進化してもあまり有効な改善方法無いし。
Outlook.Application、Outlook.MailItemクラスを使用して、 メールを作成しているのですが、差出人がOutlookの既定のアカウントになってしまいます。 Outlookに複数アカウント設定されている場合、差出人を指定することは可能でしょうか?
質問です 複数のイベントで同じ処理を行う場合 例えばTextBox_TextChangedとTextBox_LostForcusで同じ処理を行う時 その処理のメソッド作成して両方のイベントでそのメソッドに飛ばすのと TextChangedイベントに処理を書いてLostForcusではCallを使ってTextChanegeに飛ばすのと どちらが好ましいでしょう?
>>38 好みによるんじゃないの?
どっちでもいいと思うけど。特に分かりにくい記述にもならないだろうし。
私の場合だと、Handlesが使える環境なら、
適当なSub名付けてHandlesにTextBox1.TextChanged,TextBox1.LostForcusを付けるかしら?
イベントハンドラを明示的に呼び出すのは無いな
>38 前者でいいんじゃね? LostForcusイベントが発生してないのにイベントハンドラを呼び出すのってキモい
過去にVBやってた人間がVB.NET学習するのに 良さげな参考書ってありませんか?
>>42 プログラミング未経験者じゃないんだから、自分に合った本ぐらい自分で選べよクズ
まあどうせ未経験者並のスキルしかないんだろうけど
はじめての〜とか、やさしい〜とかついてる本がお前向けかなw
>>43 わかりました、ありがとうございます。
やさしいとかはじめてだとちょっと見つからなかったんで
入門で探して買ってみます。
煽り無視ワロタ オレはネット上で.NETとVB6の差異が説明してあるところを 適当に回ってサンプルいじって移行した オレ程度の初心者でも.NETの方が洗練されてると感じたな substringとかスゲー便利だわーとかそんな感じでvb6には戻れなくなってく
midに対する優位性は?
よく考えると全く無い right left midをひとつにまとめた感動?w カウントが0から始まるのは良いと思う vb6の何でも1から始めるのは分かりやすいけどなんか違うと思っていた
そうかな? lengthが1返すんだから1から始まるのが始まるのが自然だと 思うがねえ…
substringはすぐ例外泊からなー
.netのメリットとしてなにかひとつ例示するとして、substringなんて挙げるような奴の実力なんて 推して知るべしって感じだなw
案外そんなもんじゃね? オレもコントロールがかっこよくなってる事が一番の理由だったりするし
ネット上の情報総量が.net>vb6になったと感じた時点で乗り換えた 2006年くらいだったかなw
環境依存要素が大幅に減ったことが一番のメリットかな? クライアントによってファイル選択ダイアログとかAPI呼び出しで動かなかったり、日本語パッチが当たってなくて文字化けしたりといった、しょうもないことに悩む必要がなくなった。
>>53 それは違うでしょ。
例えば2.0に限っても無印とSP1,SP2では微妙に動作が違ったりバグが修正されてたりする。
まあそれは仕方がないが、セットアッププロジェクトではSP適用済の.NET Frameworkの
インストールを強制できない。
そもそもSPを頒布してよいのかどうか、はっきりしない。
このあたりVS6時代から何も進歩してないように思う。
っていうか、.NET移行(ってもう10年になるんだがw)のメリットは、
第一には.NET Frameworkそのものだろ。
後は完全なOOP言語であること。
VB6なんて名前空間も継承も使えない上に、例えばEnumのメンバー名が名前空間の閉じてない
(Enumのメンバー名と同じ名前はもう外では一切使えない)糞言語じゃん。
こんなので大きなプログラムは書けないよ。
>>54 後半は異論ないが、
少なくともランタイム配布のあたりは、DLする正式な場所がMSから提供されてるんだから、VB6よか遥かに進歩したと思う。
VB6の時はランタイムの配布がカオス過ぎで何入れればちゃんと動くのかわからない状態も多かった。
フォームの範囲外に画像を描画したい場合はどうすればいいんですか?
GetDC使えばデスクトップのHDCが手に入るけど再描画の問題もあるから RegionなりTransparencyKeyなりを使ったフォームの方が楽
gifを一度だけ再生する方法を教えてください
VB6時代の方が良かった、とか思うことってあんのか? VB.NETの生産性最強じゃないか
適当なPG書いててもご飯が食えた良い時代
TextFieldParserの方がお手軽じゃね?
いいえ
チマチマチマチマReleaseComObjectとかやらなくてもいいのはVB6/VBAの利点 というか、.NETからOfficeを制御するのはなにを使うのが一般的なの? Excelの制御に莫大な工数使うの馬鹿馬鹿しい 金払って済むならそっち使うよ
プロセスが残ることさえどうでもいいと割り切れば いちいちReleaseComObjectしなくていい
Excelの制御って何年たってもめんどくさいのな
Excelの操作だけvbscriptにやらせればいいのでは
プロセスが残るなんて都市伝説みたいなもの。 普通にエクセルのUI表示して制御するだけなら、余程の下手でも打たないと 実際はそんな問題は起こらないでしょ。(少なくとも俺は全く経験なし) その手のクレームを訴える人は、UI表示せずにワークブックのファイルを作成のために エクセルのオートメーションを使う変則的な使い方してる人だけだと思うよ。
Application.Quit直前に、 GC.Collect+GC.WaitForPendingFinalizersを呼ぶようにすれば、 他のExcel関係のオブジェクトはNothingにしておくだけで済むよ。
EXCEL操作用の自動で開放処理までしてくれるクラス作っといて 必ずそれ経由で操作すれば問題起きないよ。 毎回、開放処理書くのはバグの元以外の何物でもない。
>>69 いちいちExcel表示して操作してんのか?
OfficeTanakaあたりの糞コードでもそんなことやらんだろ
>>72 いきなり喧嘩腰の奴って例外なく馬鹿だな。
もともとオートメーションは「いちいちExcel表示して操作」するための物。
だからそれ以外の使い方については、俺は変則的だと言っている訳。
変則的って日本語知らないのかよ。知らないのなら辞書を引け馬鹿。
ASPがOfficeファイルを生成する度、サーバではパカパカ画面が開きます。 って事か?
POIでいいじゃないか
>>76 その手の製品で作ったファイルって
互換性がいまひとつだったりして、EXCELのバージョン上がると読めなくなったりするからな。
どうしちゃったの?この流れは
Javaでいうところと ArrayList<Hoge> hoge = new ArrayList<Hoge> のようにArrayListに型を持たせたいのですが どのような記述にすればよいでしょうか?
List(Of Hoge)
フォームをリサイズした時に動的にTextBoxを一緒に伸び縮みさせたいのですが SplitContainerを使わない方法ってありますか?
ああ、ただmultilineでないと縦には伸びないがな
>>83 フォームのResizeイベントでTextBoxのサイズ変更するのは駄目なの?
>>85 アンカーはTop,Leftにしていますが・・・
なるほど、右・下も設定できるんですね
解決しました
>>87 Sizeはデザイン時にしか変えられない仕様みたいですよ
VB6なら変えられたように思います
そこでつぼに
え? 変えられるだろ?
TPPってなに?
textboxの中身をとりあえず規則とか考えないでソートする時 ↓にしたけど並び変わってくれません、何が悪いんでしょうか? Array.Sort(TextBox.Lines)
Linesを一旦変数にうけとって、Sortして、Linesに設定し直す
>>88 少なくともGroupBox、DatagridView、ComboBoxではフォームのResizeイベントに合わせてサイズ変更はしてるよ
TextBoxでは使用してないのでわかりませんが
>>93 ありがとうございます
配列同士の代入が一気にできるとは素晴らしいですね
96 :
デフォルトの名無しさん :2011/10/12(水) 21:09:39.48
vsのインテリセンスみたいな候補がでるテキストボックスを作りたいんだけど、 可能かな?
余裕で
どんな感じで?
どんな感じと言われても俺の頭の中にはすでに出来てるし
候補を出すコンボボックスみたいな領域の描画の仕方がよくわからないわ
Googleの検索文字列入力欄やExplorerのアドレス入力欄みたいのではダメなんだよな?
全部書いてもさほどでもないよ
>>101 それだとただのオートコンプリートだからなぁ
ファイル一覧を取得してるんですが、これをサクっと ファイル名順に並べ替えるにはどうすればいいでしょうか? Dim files As String() = System.IO.Directory.GetFiles( _ "c:\", "*", System.IO.SearchOption.AllDirectories)
Array.Sort ただし文字列の比較は色々ある
>>106 さくっとできました。ありがとうございました。
前にVB6.0ではよく作っていたのですが、 VB.NETを挑戦しようとVB6.0のソースを変換しましたがわからない 箇所があり教えて頂きたいと思いますのでよろしくお願いします。 VB6.0で「fmMain.Info.Columns.Item("Title").SubItemIndex」の箇所が VB.NETでどうすればよいのかを教えてください。 fmMain・・・フォーム名 Info・・・ListView名
>>108 VB.NETだと、Item("Title")でColumnHeaderが返ってくるから、
後はIndexかDisplayIndexのどちらか。
VSの質問になるのかもしれないけど VBで運用してるのでこっちで質問させてくれ VB2003から2010に移行するのにCrystalReportsを含んでるプロジェクトがあるんだが 2010からCrystalReportsが切り離されて別途SAPからダウンロードってところまでは分かったんだが 配布する際に2003にあったマージモジュールって言うファイルが見当たらない ググってみたけどそれらしい記述が見つからなくてSAPのQ&Aでもよくわからない
113 :
96 :2011/10/14(金) 22:12:20.14
どうですか?
114 :
デフォルトの名無しさん :2011/10/15(土) 02:05:10.04
フジテレビデモ 花王デモ 要チェック
要チェックやあ!
>>112 どうも
そのリンクを踏むと別のページに飛ばされてしまいます
個人ブログにマージモジュール不要の記述があったのですが
そのブログ1件しか見当たらなく信憑性もいまいち
ためしにセットアップファイルを作ってインストールしてみようかとも思ったのですが
うまくセットアップできない状態…
しばらく格闘してみます…
別のページだろうがなんだろうがmerge modulesってあるじゃん
すいませんダウンロードページにありました お騒がせしました
そんなのコピペしてる自分は痛くないの?w 二重の意味で痛いお人だね
イテテテ
123 :
96 :2011/10/18(火) 21:57:40.22
動的に配置したコントロールを画面の一番前に配置したいんですが、どうしたらいいでしょうか?
bringtofrontのこと?topmostのこと? (もっともコントロールだけtopmostなんて出来ないんだけどね)
戻り値がIEnumerabe<dynamic>の場合 C#では、 public IEnumerabe<dynamic> Foo () { return ExpandoObject[1]; } とか書けますが、これをvbで書くとどうなりますでしょうか?戻り値の記述が分かりません。 IEnumerabe(Of Dynamic) とかやってみたのですがだめでした。
Objectにしとけば良し 他の言語からも使うってんならSystem.Runtime.CompilerServices.DynamicAttribute属性付けとく
>>126 他の言語からも使います。
MSDN で DynamicAttribute を調べましたが、説明を読んでも引数に何を指定したら良いか分かりませんでした。
reflectorで覗くと、new[] {false, true} とかを指定していました。
これは、何を意味しているのでしょうか?
自分自身、1番目の型引数、の順にそれをDynamicとして扱うかどうか IEnumerable(Of Object)なら自分自身=IEnumerable(Of T)、1番目の型引数=Object
>>128 ありがとうございます。
ものすごく良く分かりました。
vbもdynamicキーワード欲しい。
てか、なんでない?
遅延バインディングがあるからじゃないか?
131 :
デフォルトの名無しさん :2011/10/20(木) 03:05:33.32
121 :デフォルトの名無しさん [↓] :2011/10/15(土) 23:11:07.38
イテテテ
122 :デフォルトの名無しさん [↓] :2011/10/16(日) 04:55:30.96
>>120 本人登場ワラタ
DataGridViewのSortmodeがAutomaticのとき、 ヘッダーをクリックすることでソートができますが、 初回クリック時に昇順ではなく降順ソートすることは可能ですか? 自分でソート制御を行うしかないでしょうか?
継承したフォームのイベントを全部拾って、どのコントロールでどのイベントが起きたかデータセットなどに格納したいのですが、 MyBaseにどういうふうにコーディングしたらよろしいでしょうか? というか、そんなことは可能ですか? さすがに全てのコントロールのイベントを1個1個コーディングするのは厳しいです。
baseのロードイベントにコントロール全てにAddHandlerでメソッドを関連づければいけるはず
外部でウィンドウが開いたり移動したりしたときにイベントを発生させるにはどうすればいいんでしょうか
>>135 たった一行にこれだけ意味不明な箇所がある文章も珍しい。
プログラミングより先に推敲することを覚えるべきだ。
.NET 4.0なんですが、CausesValidationがFalseのTextboxがあって、 そこからTabキーとかでCausesValidationがTrueのコントロールに移動しても Validatingイベントが発生しません。 試しにそのTextBoxのCausesValidationをTrueにしたら発生するようになりました。 Validatingイベントは移動先のCausesValidationが関係すると思ってたのですが、 いつの間にか仕様が変わったのでしょうか?
>>137 一寸試してみたけど、少なくともTextBoxに関しては、
CausesValidationがTrueのコントロールにフォーカスが移った時、
自分以外で最後にフォーカスの当たっていた、
CausesValidationがTrueのコントロールのValidatingイベントが発生するっぽいなあ。
TrueとFalseのTextBox一個ずつだけ並べたら、閉じる時しか発生しないしw
よっぽど深い理由でも無い限り、Trueにしておいた方が無難な感じがする。
手元に2008/2005が無いから、2010で挙動が変わった可能性もあるけど。
単に
>>137 が"Validation"の意味がわかってないだけにしか思えないけど...,
テキストファイルを読み込んだり書き込んだりする数行のコードさえ 忘れる記憶力を上げるにはどうすれば
>>137 ,138
VB6.0 VS2002 VS2008で試したけど、全部同じ動き。すくなくとも仕様が変わったって事はなさそう
Validation系のイベントは移動元と移動先のCausesValidationが関係する
CausesValidationをFalseにするのなんてキャンセル系のボタンぐらいだから気づいて無かっただけだな
若い嫁をもらう
バーコードリーダーを使ってるんだが 読み取り後にCRとLFを付加して送信するんだけど 「入力」と設定したボタンコントロールにフォーカスが当たってる状態で バーコードを読み取るとCRが送信されてボタンを押したことになってしまう マウスのクリックかキーボードのエンターのみを機械的に受け付けるようにする方法って無いかな? keypressやら一通り試してみたんだがやはりバーコードで反応してしまう ちなみにバーコードリーダーはキーボードとして認識されてる コンビニのレジの機械とかは上手くやってるようなんだが
スキャンコードを見ればいいと思う
バーコードリーダーの設定を変えて改行コードを他の文字に置き換える そのソフト専用になっちゃうけど
どうも やはりプログラムで回避することは難しそうですかね バーコードリーダーから送られる改行コードは、設定で消去することも出来るのですが テキストボックスにバーコードの内容が入力された後に、このCRを使ってコードの確定としているので 読み取り後のエンターキー入力の代わりに使っている状態です
何らかの文字(数字)入力があったら フォーカスをテキストボックスに移動しちゃえば
先生、文字列 「otok "男"」 の「""」で挟まれた文字をぶっこぬくにはどうしたら良いのでしょうか? しょうもない質問ですみません。
>>147 その方法でも逃げられそうですね
試してみます
キーボードとして認識されてるデバイスで、フォーカスを与えないで テキストボックスに入力とかできるの?
コンビニのPOSとかはOPOSドライバが介在していて 1つのバーコードスキャンイベントが来るようになってる
フォームのキーイベントでボタンにフォーカスが居たらEnter握りつぶすとかは?
ユーザーコントロールとカスタムコントロールの違いは何ですか?
ユーザコントロールはいくつかのコントロールを組み合わせた奴 カスタムコントロールはあるコントロールの機能を追加制限した奴
155 :
デフォルトの名無しさん :2011/10/25(火) 23:20:01.97
>>154 ありがとうございます。
ユーザーコントロールのほうが使い勝手がよさそうですね。
ユーザーコントロールでテキストボックスとその右にボタンをおいたものを作りたいのですが、
ユーザーコントロールをフォームで使うときに高さをユーザーコントロール内に配置しているテキストボックスと同じ高さに固定したいのですが、
そういうことは可能でしょうか?
ドラッグで高さを変えられないようにしたいです。
>>146 バーコードリーダーの設定で適当なプレフィックス付ければ
2008のVBにてクラスライブラリにてDLLを作成し、 テスト・デバッグを並行するためにフォームアプリから参照→プロジェクトで 作成したクラスライブラリを参照追加したいのですが、プロジェクト名に出てきません。 どのようにすれば参照できるのでしょうか?
158 :
157 :2011/10/26(水) 14:39:49.38
自己解決です。ソリューションが異なっていました。 スレ汚してすみませんでした。
ソリューションに目的のプロジェクトを追加する
>>148 自己解決しました。ASCIIコードを使えばよかったのかー。
プログラムで生成したデータを音声としてスピーカーから出したいのですが、 どうやれば良いでしょうか。 一旦ファイルにすることなく直接出力したいです。
162 :
デフォルトの名無しさん :2011/10/31(月) 00:31:20.17
vb.netでwebbrowserコンポーネントを使用してwebを表示しました。 このとき、webbrowserコンポーネント上で表示されている画像を 取得することは可能ですか? 但し、そのwebにもう一度アクセスすることなしにという条件がつきます。 プログラム上からキャッシュにあるファイルを指定してアクセスする のかな?と想像したのですが、いまいち方法がわかりません。 webbrowserコントロール上に表示されている画像のファイル名は htmlタグを見ればわかると思うのですが、そこからwebに再度アクセスすることなしに その画像データを入手したいのですが、どういう方法があるのでしょうか。 それとも不可能なのでしょうか。
GetUrlCacheEntryInfo というAPIを使うらしいよ
164 :
161 :2011/10/31(月) 00:40:23.32
PlaySoundを使って解決しました。
165 :
デフォルトの名無しさん :2011/11/02(水) 00:01:07.23
テキストボックスが空のときにうっすらと文字を表示しておきたいんですが、 そんなプロパティみたいなものはないでしょうか?
ありません。
自作すればおk
168 :
ぱふ :2011/11/02(水) 00:50:18.78
テキストボックスにはデフォルト値をもたせるプロパティがありませんが、 デフォルト値をもたせたテキストボックスを作りたいと思ってます。 しかし、Access使いであることと、VB6で止まっている自分にはまだ VB.NETでやれると言われてもよく理解が進んでいません。 そこで、こういう手順でやると、デフォルト値プロパティをもたせたテキスト ボックスを作れるっていうウェブサイトやもしくは方法があれば教えてくだ さい。
>>165 ウォーターマークってやつだな。
TextBoxのEnter/Validatingイベントで色変更とかすればそれっぽいのが作れるよ。
実際に空かどうかとかはフォーム側で管理する必要があるけど。
171 :
169 :2011/11/02(水) 02:23:07.90
よく調べてみたら、ウォーターマークは、 空の時の表示に限定されるものではないのか。 Silverlight4のSystem.Windows.Control.TextBoxに、 Watermarkってプロパティがあるから勘違いしてた。 薄めに重ねられる画像やテキスト全般ってことっぽいなあ。
Microsoft Visual Studio 2010で継承とサブクラスのメソッドの使用について聞きたいんだけど Class SuperClass Public Sub hello() Call MsgBox( "Hello" ) End Sub End Class Class SubClass Inherits SuperClass Public Sub world() Call MsgBox( "World" ) End Sub End Class ……とした後、適当な所から 1 Dim obj as SuperClass 2 obj = New SubClass 3 obj.hello() 4 obj.world() ってやると4行目でエラーが出てコンパイルできないんだけど、これ何か書き方間違えてるのかな・・・?
スーパークラスにworldメソッドの定義がないから当然だろ
Dim obj as SuBClassでいいのでは?
176 :
のぞみ ◆fv9SHj5ibk :2011/11/02(水) 07:58:57.09
ちょっと質問です 最近VB弄り始めてばかりです 前は日本語プラグry やってたんですけど まァ本題へ パスワードをかけて そのパスワードが違ったら違いますという 成功していたら 成功していますという処理にするにはどうすればいいんですか? Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load (Name).Enabled = False End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click If TextBox1.Text = "nozomi" Then MsgBox("認証成功") (Name).Enabled = True Else MsgBox("違います") End If End Sub と打ったんですが (Name).Enabled = False ~ Name に Botton1 とかTextBox1 と打っても同じでした
括弧がいらない
178 :
のぞみ ◆fv9SHj5ibk :2011/11/02(水) 08:09:10.59
179 :
のぞみ ◆fv9SHj5ibk :2011/11/02(水) 08:10:16.89
>>177 ms ()とったんですけど
()とったら全部に波線になります
それはOSがぶっ壊れてるな。 OSから再インスコが必要だ。
>>173 SubClass からインスタンスを作成したから
SubClass で定義したWorldメソッドも持ってると思ってた・・・んだけど違うのか?
>>174 スーパークラスを継承したサブクラスを複数種類作って
それを全部一つの参照変数の配列に入れたいんだ
じゃあ Ctype(obj, SubClass).world() でいいのでは?
>>176 を見て一寸試して気付いたのだけど、
Nameが仮にTextBoxとした時、VB.NETだと
(Name).Enabled = false は構文エラーだけど、
Dim stat = (Name).Enabled はOKなんだな。
C#だと両方ともOKだったりするから一寸面白い。
そんな意味のないことしないから、動きが違おうが誰も気にしないよ。
だから、そういうせせこましい自分については何も思わないのかよ。 なんか典型的な2ch脳だな。きもっ。
何がとんでもないの? 意味がわからなかった
見当違いの回答を第三者に指摘されて開き直っている点じゃないの?
ウィンドウの初期化したいんですが。 どうやればいいんですか?
190 :
のぞみ ◆fv9SHj5ibk :2011/11/03(木) 17:13:26.70
画像を埋め込みたいんですが Dim tempPath As String = IO.Path.GetTempFileName & ".jpg" IO.File.WriteAllBytes(tempPath, My.Resources.HSUpdate) Process.Start(tempPath) ~~~~~~~~~~~~~~~~~~~~ じゃあ ダメですよね Resoures じゃダメなのでどれにしたら いいですか?
TINAMIというイラストサイトの画像を取得して表示したいのですが403が返ってきます
Dim wc As New WebClient
wc = New CustomWebClient() With {.Encoding = Encoding.GetEncoding("UTF-8")}
Dim url As String = "
http://img.tinami.com/illust2/img/***/*************.jpg "
Dim stream As IO.Stream = wc.OpenRead(url)
Dim bitmap As New Bitmap(stream)
PictureBox1.Image = bitmap
stream.Close()
どうすればうまくいくのかご教示ください
リファラとかCookieとかで制限してんじゃね パケットキャプチャ使ってブラウザでのアクセスとリクエストヘッダの違い見比べ
質問です VisualBasic 2008 Express Editon MySQL 5.1.7 Connector/Net 5.2 上記環境でデータベースを扱うソフトを作っているのですが MySQL内にある改行されてる文字列をそのままSelectして表示 ソフトウェア上でTextBoxのMultiLineに記述した複数行の文字列をInsertして追加 はどうすれば出来るのでしょうか?
それ質問じゃなくて開発依頼
195 :
193 :2011/11/04(金) 12:26:17.31
質問じゃなくて開発依頼とはどういうことでしょうか? 個人的に勉強しようと思い取り組んでいるだけなのですが・・・
自分で調べてみた書いてみた動かしてみたって形跡が一切無いじゃん
ゆとりちゃんってマジで常識がないよな 疲れるわー
まずは自分で出来るところまでやってみるべき
>>197 お前の言動は気持ち悪いけどな
まあ質問スレで答える気も無く難癖付けてるだけのオッサンもどうかと思うけどな
そうはいっても酷すぎる質問だろう。っていうか質問じゃないだろうこれは。
もし宿題スレがあるならそっちだろうとは思うけど
アニオタ気持ち悪い
全く違うのに宿題とか開発とかのスレで質問しないと回答もらえない質問なのでしょうか? 自分でも調べましたがPHP関連でしか出てこないので質問させていただいたのですが・・・ とりあえずわかる方がいないようなので別の所で質問させていただきます 失礼しました
vb.net mysqlでググれば山のように回答が出てくるわけだが マジでゆとりってまったく1ミリも頭使いたくないんだな。 だから最近20代のプログラマが存在しないんだな。
> 自分でも調べましたがPHP関連でしか出てこないので 是非とも検索ワードを教えていただきたい どんな調べ方したらそんな惨状になるのか、すごい参考になりそうだ
>>205 どこにでしょうか?
単なるInsert into、select fromと勘違いしてるのでは?
複数行の改行等そのままで扱いたいって言ってるんですが^^;
検索も「VB.NET MySQL 改行」と検索しても意図する結果が出ないので
「MySQL 改行」とするとPHPの結果ばかり出てきますけど?
なにそれ?改行がなんなのか知らないってこと?
改行コードだけ気を付けたら良い話なんじゃないの? ほとんど読んでないからよくわからんけど。
mysqlは触ったことないけどAddWithValueを使ってないんじゃないの?
その流れなら普通は 検索が引っかからない>重要ではない?>試しに改行を含んだ文字列を単純にINSERTしてみる となるもんだと思うのだけど VBで改行付き文字列の記述方法を知らないとかそんなのなのか?
PHPでも考え方は参考になるんでないの? 何が問題かわかっているのなら記法を調べるだけでしょ。
VB..netでのアクティベーション搭載ノウハウやパターン例が まとまっているサイトや書籍はないですか?
haspを買えばいいよ
釣りなんだからヤメヤメ むしろ検索に頼るところからゆとり全開 頭とけてんだろ
.netあまり詳しくないけどバインドとかパラメータクエリとかそういう話じゃないの? DB連携で改行コード云々てのは言語問わず付いて来るよね だいたいは変換しちゃうけど
217 :
デフォルトの名無しさん :2011/11/05(土) 04:29:44.55
Dim oApp As Object Dim Ver As Decimal oApp = CreateObject("Excel.Application") Ver = CType(oApp.Version.ToString, Decimal) これでインストールされているExcelのバージョンを取ろうと思うんですが、 遅延バインディングは使用できません。とエラーになります。 どうしたらいいでしょうか?
そもそもExcel.Application.VersionにToStringなんてないだろ
VB.NETでむかしの ADOやFileSystemObjectを使うにはどうすれば
220 :
デフォルトの名無しさん :2011/11/05(土) 13:39:57.55
じゃExcelのバージョンって取得する場合はどうしたらいいでしょうか?
コンパイルの設定で遅延バインディングを 許可していないだけのオチに一票。
レジストリ参照するだけだろ
都合のいい変換はないものでしょうか? テキストボックスに入ってる文字を数値にしたい。 ああああ→0 (何も入力されてない)→0 123→123 1,234→1234 1,234あああ→1234 いちいちエラーが出てしまってめんどくさい
>>223 原始的だが
一文字ずつ回して、Regex.IsMatch なり IsNumeric なりで
数値と判定した文字だけで再作成するとかじゃダメか?
マイナス・プラス記号・小数点も許すってんならもう一工夫必要だが
>>224 >>225 レスありがとうございます。
結局は225 さんのような処理を通しています。
・数値しか入力できないようにする。
・コピーペーストなども防止する。
それでももしかして何か文字が入っても
とりあえず落ちるのだけは避ける。
要らない緊張感があります。
なんかすっごく疲れる。
まあ、数値のみ受け付けるTextBoxぐらい標準で用意して欲しいよなとは思う。 国際化の問題とか、指数表記を受け付けるかどうかとか、標準で用意するとなると 意外と面倒なのは理解できるけど。 俺もそうだけど恐らくほとんどの人は自作してるよね。 凄い無駄だよな。
数値のみならNumericUpDownとかで十分では
MaskedEditってなんで.NET版ないんだろうね
MaskedTextBoxのMaskで似たようなことできるからじゃない
>>230 じゃあ
>>227 ,229はそれで解決だな
メモ : このクラスは、.NET Framework version 2.0 で新しく追加されたものです。
うはは、俺のアプリまだ1.1だったわw
日時は、DateTimePicker、数値は、NumericUpDownで それ以外の固有フォーマットは、TextBox拡張して自作してるけど なぜか、MaskedTextBoxだけは、使う気しないんだよなあ なんでかはわからんけど
>>228 全然十分じゃないって。
あれは基本狭い範囲の数を選択させるためのものだから自由度が低い
>>231 そういや脱線するけど2以降でトグルボタン無くなったのは地味に痛いな…
チェックボックスじゃ色変えられなくて使いにくいったら
>>232 俺は右矢印やマウスカーソルで勝手に空白が入るとこが気に食わない。
単純にテキストボックスに入力制限するプロパティが欲しい。
全部のテスキトボックスに全角入力をしたらエラー処理するには、どうしたら……。 20個以上あるんだ。
Form.Controlsの中からTextBoxだけ好きなように弄れば良い。
TextBox継承して、TextChangedイベントなりLeaveイベントなりで GetByteCountかなんかでチェックするコントロールを作成すればどうでしょうか?
やってみます。ありがとう。
.NET で作成された、他のアプリ上のテキストを取得したいのですが、MenuStrip 内のラベルのテキストを取得できません。 GetMenu でメニュー自体のハンドルは取れるのですが、GetMenuItemCount では -1 が返ってしまいます。 MenuStrip 自体に小ウィンドウも配置されていないようですが、どうすれば MebuStrip 内ラベルのテキストなどを取得できるのでしょうか。
あれはメニュー風に見せてるだけのただのコントロールだからGetMenuは無意味 IAccessible経由ならなんとかなるかな
>>241 やはり GetMenu 系だと無理なのですか、ありがとうございます。
IAccessible というのは知らなかったので調べてみます。
243 :
デフォルトの名無しさん :2011/11/08(火) 23:29:16.39
vs2010使ってるんだけど、ラベルとかで選択できるフォントが少ないんですが、何が原因なのでしょうか?
テキストボックスに「1,234」と数値が右揃えに入っていて フォーカスが来たら左に寄せて数値は「1234」になって しかも4文字とも選択された状態に。 入力中は数値とBSくらいしか受け付けずもちろんペーストもダメ。 フォーカスをロストしたら改めて数値しか入っていないことを 確認し、それをカンマ付きに変更して左揃えにする。 もちろん数値の妥当性も考えなくちゃいけない場合もある。 お金貰うのでこのくらいはデフォルトでやらなくちゃいけない。 というか、そう先輩に教わった(泣
Private Sub Button13_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button13.Click Dim O As Object=sender O=CType(O,Button) Process.Start(O.text) End Sub どこに間違いがあるかがわからない。
遅延バインディングをエラーにしているのが間違い。 遅延バインディング頼りな書き方が間違い。 好きな方をどうぞ。
何がどうなるのかも書かないで抜粋したコードだけで他人に解ると思う所か どこかが間違ってると思うのが間違いじゃないかな
250 :
デフォルトの名無しさん :2011/11/09(水) 23:26:14.27
正解は間違いはないってことだろ
Streamの途中に「挿入」する方法教えてください。「上書き」じゃないです。
派生クラスを作って、使う側からは挿入されているように見せれば良い。
超初歩的な質問ですがお願いします データベースファイルから任意のテーブルのレコードを抽出する時はSQL文を使って抽出できますが ファイルの存在しないDataSetからレコードを抽出する場合はどうすれば良いのでしょうか? 具体的にはDataSetに対してGroup Byを使用したいのですが・・ Where句に相当するView.RowFilterやOrder Byに相当するView.Sort等は見つかったのですが Group Byに相当する処理方法がみつかりませんでした
254 :
デフォルトの名無しさん :2011/11/10(木) 23:58:24.27
Linq
>>254 ありがとうございます。
少しググっただけですが使えそうな感じです。
Send.Keysで他のアプリのコントロールを操作する際に フォーカスを奪われないようにユーザーの操作を一切受け付けないようにしたいのですが どんな方法で実現可能でしょうか?
不可能です
すみません、質問です。 GroupBox1にRadioButton1とRadioButton2を配置して、 このいずれかのRadioButtonがクリックされた時の イベントはどうやって取るのがオーソドックスな 考え方なのでしょうか? GroupBoxのイベントを取って、RadioButtonの状態を見るという方法が 一般的かと思ったのですが、それに該当するようなイベントがみあたり ませんでした。 となると、RadioButton1 と RadioButton2 の CheckedChanged のイベントに、 ある別のメソッドが呼び出されるように書くしかないのでしょうか?
if 〜 then って入力して、Enterキーを押した時に、勝手に 他の行のインデントが変わってしまう機能を停止するには どの設定を変えたらいいのでしょうか? VB2005 Express 使っています。
ComboBoxを配置して、マウスで選択された値を取得しようとするのですが、 Me.ComboBox1.Text とすると、一つ前にマウスで選択された値となってしまいます。 どうしたら、マウスで選択した最新のものが取得出来るのでしょうか。
補足
>>260 は ComboBox1_SelectionChangeCommitted のイベントハンドラつかってます。
>>258 何をするのかにもよるけどCheckedChangedでよくね?
ComboBoxにおいて、キーボードからの入力を出来ないような 設定はないのでしょうか? 間違えてキー入力がある、もしくは、選択肢と同じ内容の入力を 行ってしまうと、そこでエラーが出てアプリが止まってしまいます。
>>264 です。
自己解決しました
DropDownStyle プロパティを DropDownList にすればよかったのですね。
変数の値がnullであるかをチェックするにはどうしたらいいのでしょうか? AccessVBA では if isnull(変数) = true then という形でチェックが出来たのですが、 (当然のことながら)VB.NET ではエラーとなってしまいます。
>>266 If 変数 Is Nothing Then 〜
IsNothing関数も一応あるけど普通はこれ。
あと、DBのNULL判定なら全く別の話でIsDBNull関数とか使う。
フォルダを開くメソッド Process.Start("C:\") を頻繁に書くのが大変なので P("C:\") と簡単に書けるようにするにはどうすれば
さらに簡単に・・・
それなら、ラッパーを作ってとかしか方法がないんじゃないの? メインのコードは減るかもしれないが、相対的にコードが増えたり、 メンテナンス時にクラスの把握がややこしくそうな気がするのだがな。
Dim P As Func(Of String, Process) = AddressOf Process.Start P("C:\") こんな感じ?
意図が良く見えないのだがな。 汎用性のあるモジュール作るって方向の話のようにも思えるのだが、どうなの? 全般的に補間機能を使ってコードを書く事自体が面倒で何とかしたいという ようにも聞こえるのだが。
PictureBox では jpg や bmp などは表示出来ますが、pdfは表示出来ません。 pdf も表示したり印刷したり出来るようには出来ないのでしょうか?
追加質問で Dim i1,i2,i3,i4,i5 as integer を書くのもめんどうなので For A=1to 5 dim iA as integer Next みたいに書くにはどうすれば
ダメ
Option Explicit Off これで宣言すら不要。JavaScriptでやれって言われる気もするがw
OpenFileDialog() で、ファイルを指定した後、ファイル名のみを取得 する方法はないのでしょうか? .FileName プロパティだとフルパスの文字列が帰って来ますよね。 これのファイル名のみが欲しいのです。 .FileNames(0) としてみてもうまく取得が出来ませんでした。
Pathクラスに色々とパスを処理するメソッドがある
Path.GetFileName
ファイル名+拡張子なら、一応SafeFiileNameプロパティが使える。 ただ、対応バージョンが.NET2.0SP1か.NET3.0SP1以降と微妙。
すみません、質問です。 DataTableにフリガナ付の名前一覧のテーブルを読込んでいる状態で、 フリガナがア行のみを抽出したいという場合、どうしたらよいでしょうか? 以下のような方法では、アで始まるものしかとれません。 しかし、濁点のある行においても対応することを考えると、大量にコードを書くことに なってしまいます。何か良い案はないかと思い質問してみました。 Dim fil As String fil = "substring(フリガナ,1,1) = 'ア'" myDataTable.DefaultView.RowFilter = fil
フォーム上に ListBox1 を配置して、それのいずれかがダブルクリック された時に、以下のコードでその名称を取得しているコードを書いたのですが、 Me.ListBox1.SelectedItem.ToString() 何も無いところでダブルクリックすると、エラーで停止してしまいます。 「オブジェクト参照がオブジェクト インスタンスに設定されていません。」 どうやったらこのエラーを回避できるのでしょうか?
まずア行と言うのは、システム上どこでどのように定義されているのかね?
>>288 テーブルが以下のような感じにフィールドを持っています。
・ID
・名前
・フリガナ
具体的には以下のようにデータが入っています。
1, やる夫, ヤルオ
2, ゆる子, ユルコ
3, 花子, ハナコ
そして、「ヤ行」だけ抽出する場合、1と2の行だけが欲しいのです。
290 :
287 :2011/11/12(土) 14:36:17.03
try 〜 Catch ex As NullReferenceException end try で回避したらいいということなのでしょうか? とりあえずこれで exit sub を書いたら動作はしていますが。
Private Sub Form1_Load( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load |あ い う え お End Sub あ のところにカーソルがあるとき一気にEnd Subまでカーソルをもっていくショートカットキー操作はなんだっけ。
32bit環境で作っていて、64bit環境へ移す際に不具合が出る系統のものって 大きくいうと何があるのでしょうか? 私が調べた範囲では、ファイルやディレクトリの操作関係は影響は無く、 mdbファイルなどへのアクセス関係で問題が出る。ということでしたが、 このほかに抑えておくべきことってあるのでしょうか?
>>276 頭大丈夫か?
PDFって文書だぞ?
画像じゃないぞ
どうしてもってんならwebbrowserだろうが…
(もしくはpdfspiゴニョゴニョ…)
サードパーティの32bitコンポーネントとか使ってると 問題が起きるかもしれない
アクロバットファイルのことを誰もそう呼んでくれない件。
297 :
808 :2011/11/12(土) 22:08:47.31
色の比較(黒の確認)をしたいのですが、下のように書いたらIFの式が受け入れてもらえませんでした。 どのようにしたら良いでしょうか? Dim s As Drawing.Color Dim black As Drawing.Color = Drawing.Color.Black s = bmp.GetPixel(x, y) If s = black Then・・・ よろしくおねがいします。
RとGとBを(必要ならAも)それぞれ比較すれ
299 :
デフォルトの名無しさん :2011/11/12(土) 23:10:20.23
>>294 >>300 回答ありがとうございます。
そのあたりに注意してみます。
私なりには、jetが64bitに標準で載っていないのがなんか
納得いかないんですよね。。。
仕様上仕方が無いということであれば、そうなのでしょうが。
string.replace
>>299 それしか方法が無いのでしょうかね。
正規表現使うとかしてうまい具合に少ないコードで抽出できないか
と思ったりしたんですけどね。
>>293 回答ありがとうございます。
イメージファイルだとひとくくりに考えてしまっていたので、
同じものだと思い込んでしまっていました。しかし、よく考えたら
文章ファイルでしたね。
シェル使ってAcrobat起動させるとか、別な方法を考えて見ます。
ありがとうございます。
>>306 いや、言いすぎて悪かった
acrobat入ってればWebBrowserで表示は出来るんだけどな
(Office入ってればExcelも表示出来たりWebBrowserって意外と
侮れないw)
>>307 確かにWebBrowserはいろいろなことが出来るようになってきているところは
ありますが、バージョンの違いや、ブラウザの種類、アドインなどによって
動作したり、しなかったりなどの問題もあります。
そこで、今回は、出来ればVB.NETの範疇でプレビュー(出来れば印刷まで)を
対応できないかと思っていたところがあったのです。
こういう、いろいろなファイル内容を表示したり印刷したりが出来る
モジュールってなると、今は無いのでしょうね。
先頭にこういう文字を含んだフォルダがあるかをチェックしたい場合は どのような関数を用いたらよいのでしょうか? 例えば、[01]の文字を含んだものが見つかるかをチェックしようとして 以下のように書いてみたのですが、目的のように動作しませんでした。 If IO.Directory.Exists("01*") = True Then
Outlook.Applicationを使用してメールを作成し、Outlook下書きに格納しているのですが、 Outlookで確認すると、メール本文の各行改行直前に半角スペースが挿入されてしまいます。 ("aaaa"+ " " + vbCrLf + "bbbb"+ " " + vbCrLf のようなイメージ) 改行コードがいけないのでしょうか? outlookは2010でテキスト表示、VB2008です。 (コード抜粋) OL = CreateObject("Outlook.Application") ML = OL.CreateItem(0) 省略 ML.Body = "aaaa" + vbCrLf + "bbbb" + vbCrLf ML.Save()
>>308 PDF用は入手に難があるし新しいVerに対応してないんでアレだけど
SPI(SusiePlugIn)使えば表示や印刷出来なくはないんだけどね
(対応spiがあれば、だけど)
>>309 方法はいろいろあるとおもうけど
DirectoryInfo 使うのが一番手っ取り早いかなあ
Dim dirs() As System.IO.DirectoryInfo = _
New System.IO.DirectoryInfo("C:\").GetDirectories("01*", IO.SearchOption.AllDirectories)
こんな感じ
VB.NETで ADOやFileSystemObjectを使ってもいいの? どーやると使える?
CreateObject
わざわざ使うほどのメリットがあるとも思えんがの
Dim files As String() = System.IO.Directory.GetFiles(strPath & "\", "*", System.IO.SearchOption.TopDirectoryOnly) 上記でDirectoryNotFoundExceptionが発生しました。 strPath & "\"は「z:\」となり、zドライブはnas上のフォルダを示すネットワークドライブとなっています。 実行PCがXPではエラーは起きずに正常に処理できましたが、windows7ではエラーでした。 windows7&ネットワークドライブでは上記ロジックは使えないのでしょうか?
>>313 ADOは使おうと思えば使える。だが、動作環境や対応状況などを
考えると使うのは避けた方がいいとされている。
なので、例えばその目的がサーバーカーソルが使いたいのだとか、
そういうものをあげて、代案としてどういうものがあるかを
考えていく方法を取った方が良いと思う。
フォーム上にコンボボックスを配置して、それにデータベースから読み込んだデータを 表示させるプログラムを書く場合の質問です。(設計的な考えのものです) フォームloadイベント内に、ローカル変数でDataTableを宣言し、コンボボックスに 表示までのコードを書くと、動くことは動きますが、これはOOP的な考えとしては 間違っているのでしょうか? 本来は、フォームのメンバにDataTableをもっておき、それへデータベースから読み込んだ データを代入する処理をイベント内に書くべきなのかもしれないと思いました。 ふと、VBの自動補完をする機能が動くような、動作が遅くなってしまうような コードを書いてしまっているのかが気になって質問してみました。
あんまり考えた事無かったけど、 変数のスコープ拡大するほどの理由にはならないと思うよ。 好きに作ったらいいんじゃない?
ひょっとして、フォーム上に貼り付けたComboBoxクラスは、以下のような コードを書いた時点で、DataTableから該当のデータを「値型」で受け取って いるから、DataTableはメモリから解放しても問題は無い (DataTableはフォームのフィールドにしたりする必要がない) ということになるのかな? ComboBox.DataSource = DataTable ComboBox.ValueMember = "id" ComboBox.DisplayMember = "bbbb"
>>311 ありがとうございます。
PDFは閲覧ツールが無料配布であったり、作ったりが比較的簡単に出来る反面、
ツールで独自に処理しようとすると結構面倒だったり互換性的な問題がでたり
があるのですね。
Loadイベント上でもコンストラクタ上でもエントリポイント上でも スコープ気にしないならどこでもいいんじゃないかなあ まあ、可能ならDataSet使うのが一番手っ取り早いかもしれん
気にしないならどこでもいいということになるんだろうが、
俺が気になっているのは、VB特有にある機能の、暗黙の〜っていう
処理が行われていて結果的に動いている形になっているのかどうか
という部分。なので、気にしているのだ。
確かに、
>>323 に書いてあるように、DataSetオブジェクトをデザイナ上に
配置してプログラミングすると確実ではあるかもしれないが、
DataSetはデザイナ上に配置せず、コードでDataTableを書くのを前提に
考えているんだ。すまん。
>>321 の認識でほぼ正解だよ
コンボが参照持ってる内は解放されないけどね
Formに関する質問です。複数のFormを開いていくプログラムを作っているのですが、 そのFormを閉じるまでの間、別のFormにはフォーカスが移らないようにする 処理はどのようにしたら良いのでしょうか? Accessの場合は、プロパティの「作業ウィンドウ固定」を「はい」に変更する事で 対応できるものでしたが、VB.NETの場合はどの部分の設定を変えたらよいのでしょうか?
showmodalでいいのでは?
Formにおいて、マウス操作によって最大化されないようにするには どのように設定したら良いのでしょうか? プロパティにて ControlBox を False にすると、最大化などの ボタンは表示から消えはしますが、上のタイトルバーの部分を マウスでダブルクリックすると、フォームが最大化されてしまいます。
MaximizeBox
>>327 すみません、その回答は、プロパティを変えるという意味合いなのでしょうか?
それともあるクラスのメソッドを実行するという意味合いなのでしょうか?
もう少しヒントお願いします。
>>312 ありがとうございます。その方法で試してみます^^
>>325 さんくす。クラスの認識はむずかしいですね・・・
ある程度概念を理解出来れば迷うこともないのでしょうが。
>>333 難しいかなぁ…
どう足掻いても参照出来ないオブジェクトが解放対象だよ
参照は電話番号みたいなもんで、知り合いの知り合いの…と、間接的にでも多くの人が繋がっているけど、
誰のアドレス帳にも登録されてないと誰からも電話が来ない。
そういった省られ者は定期的にチェックされ電話番号取り上げられる感じ。
>>334 レスありがとうございます。
ガーベージコレクションにおいては大体文章に書いていただいている
内容ということだと理解は出来ます。
しかし、
>>325 で書かれている、スコープが終了していても、参照されて
いる状態だと解放はされない。という部分の理解をどうしたらいいのかが
ちょっと戸惑っている感じです。
クリアーしてディスポしてやれば問題なし。
>>335 参照と言うのは具体的に4バイト(x86環境)なんだけど、
その4バイトを格納する領域がスコープによって解放される対象。
オブジェクト自体はヒープと言うグローバル領域に生成されるから、
スコープの概念が無いんだよ。
DataGridViewのDataGridViewComboBoxColumnに ラベルと値を登録する方法はないでしょうか? col.Items.Add("abc") といったように値しか登録できないのですが・・・
事故解決しました。
>>337 試験的に、FormクラスのフィールドにDataTableを持たせて、
Button1で Me.ComboBox1.DataSource = DataTable として、
Button2で DataTable.Dispose() するのを作る。
Button1をクリックすると、ComboBox1にデータは表示される。
次に、Button2をクリックすると、ComboBox1のデータは消える。
この結果と、先に作ったプログラムの結果を比べてみると、
スコープを過ぎてもDataTableは自動的にDisposeされずに、
ちゃんとメモリの中に残り、動作しているということが分かる。
(逆に、スコープを終了する行で、Disposeを入れると、データは
消えてしまい表示されなかった。)
> オブジェクト自体はヒープと言うグローバル領域に生成されるから、
> スコープの概念が無いんだよ。
やっとこのあたりの概念が理解出来て来たと思います。
詳しい説明ありがとうございます。
>>336 すみません、基本的な質問ですが、
clearしてDisposeしないといけないのは、なぜなのでしょうか?
DataTable内で持っているクラスのメモリがきちんと解放されない
場合があるからなのでしょうか。
342 :
デフォルトの名無しさん :2011/11/15(火) 19:23:11.99
自分のクラス内のメソッドをコールする場合は『Me』を付けた方がいいのでしょうか? 付けた方がいい場合はその理由も教えてくれたら嬉しいです
>>340 よかった!頑張ってね。
>>341 >>337 だけど、Disposeは.Net管理対象外のリソースを解放する為にあるよ。
プログラム中使っているメモリは前述のスタック・ヒープ以外にも、
.Netの管理対象外の領域に確保されているケースがある。
(例えばGUIでは個々のウィンドウに一意なハンドルが割り当てられる。)
到達不可能とマークされたオブジェクトはいずれGCによって回収される事になっているけど、
それでは都合の悪いものもある。
そんな時に明示的に解放するものがDispose。
原則としてIDisposableを実装していれば呼ぶべき。
でもDataTableに必要かどうかはよく分からない。
DataTableは画面上に配置可能なコンポーネントという位置付けで、コンポーネントだとDisposeが付いてくる。
>>342 付けた方が見易い気がする。
規約があれば従う、でなければ好み。
結局のとこDisposeしたらどうなるかって、そのクラスの実装次第だからなぁ 基本的にはアンマネージドなリソースはDisposeで開放しましょう、って約束なだけで ドキュメントなりにDisposeしろって書いてあるクラスはした方がいいんだろうけど DataTableとかマネージドリソースしかないはずだからどっちでも良い気はする
ボタン1のプログラムを呼び出したいけど Button1_Click(1,2) の1と2のいんすうにはなにをわたせばいいの?
new EventArgs(〜) で渡す中身を作ってもいいけどな
>>343 > Disposeは.Net管理対象外のリソースを解放する為にあるよ
> 原則としてIDisposableを実装していれば呼ぶべき。
.NET管理のリソースについての詳しい説明ありがとうございます。
そういう明確な根拠もあわせて説明があると、分かりやすいですね。
>>344 英語の文献の紹介ありがとうございます。
やはり、英語も読めるようになっておかないと、知識的に苦労する
部分がありそうですね。
>>345 > 結局のとこDisposeしたらどうなるかって、そのクラスの実装次第だからなぁ
このあたりの、つきめれば・・・っていう部分が、オブジェクト指向の
限界に当たるところなのでしょうかね。
すみません、追加で質問です。
私は日系BPの書籍は高価な上にすぐにバージョンが変わった書籍が出たり、
さらに、種類が多いので、全部よみきれていないんですよね。すみません。
VisualBasic.NET と ADO.NET は、読んだのですが、それ以外は読んでないです。
Dispose() に関するレスを多くいただきましたが、そのあたりのことが詳しく
解説されているものは、以下の書籍あたりを読むといいのでしょうか?
プログラミング .NET Framework 第3版
http://ec.nikkeibp.co.jp/item/books/P94160.html
日経はTPP推進だから嫌い
disposeしなくて良いって説明あるクラスでもdisposeしないと開放されないヤツもいるから注意。
DataGridViewButtonColumnでセルにボタンを表示しているのですが ボタンの幅がセルいっぱいまであります。 ボタンの幅を変更することはできないものでしょうか?
VB.NETでPNGの圧縮率を指定する方法はありますでしょうか? JPEGの品質指定はなんとか出来たのですが…
PNGにそんなものあったっけ?w 可逆圧縮だから意味のない概念だと思うが
可逆圧縮だから圧縮率に意味がないって意味がわからん じゃあ、zipの圧縮率はなんなんだw もちろん、pngにも圧縮率はある まあ、圧縮率っつーか圧縮レベルだがな .netに指定はないような気がするぜ
サンプルなどでよく Dispose()のあとにNothingしているのを見かけますが Dispose()とNothingは対で実行しないと完全には開放されないのでしょうか Dispose()だけでは不足ということになるのでしょうか
Disposeしたからってそのインスタンスが消えてなくなるわけじゃない。参照をもってる限りそのインスタンスは生きたままだ Disposeはあくまでもそのインスタンス(クラス)で使った(アンマネージド)リソースを解放するだけ ただしDisposeしたあとそのインスタンスがどうなってるかは実装による。使えなくなってるかもしれん 使えなくなっても参照されていれば、そのインスタンスは使えない状態でメモリ上にいるまま
Functionプロシージャを実行する時に kekka = hogehoge(True) とかやると思いますが、戻り値はいらないのでhogehoge = True みたいに 設定できる書き方があったら教えてほしいです
結果がいらないなら何でfunction使うの?
プロパティでも使っとけ つか、.NETの話だよな?
>>356 可逆圧縮なんだから、普通は(それが可能であるとしても)より小さい圧縮率を
選択する意味なんかないでしょ。頭大丈夫かよ。
動画のようにエンコード/デコードに馬鹿にならない計算力が必要だというのなら話は別だが。
>>362 俺は
>>356 ではないが、現にPNGには圧縮レベルがあるんだが?
差が大きいか小さいかはともかく、圧縮率により圧縮時間に差が出るのは確かで
お前が意味がないと思うだけで意味がないと決めつけるなよ
しかもお前の理論だと、可逆圧縮でも(特定の条件が必要とはいえ)圧縮率に意味があるって理論だぞ
お前の方こそ頭大丈夫かよ?
>>362 おまえこそ頭大丈夫か?
なぜzipやらrarはもちろんのこと
pngやtgaにまでわざわざ圧縮率を指定するオプションがあると思ってるんだ?
可逆圧縮だったらわざわざ小さい圧縮率を指定する必要がない?アホじゃないか
なんのために先人達は必死により高圧縮のフォーマットを生み出していったと思ってるんだ?
おまえの理屈だとrarも7zも生まれなかったことになるし
高圧縮率を売りにしてるフォーマットはなんなんだ?需要があるからだろ?
おまえが必要ない=万人が必要ないなんて思わない方がいい
>>360-361 プロパティプロシージャというものがあるんですね
便利そうなので多用することにします
ありがと〜
誰か俺に 可逆圧縮 → 小さい圧縮率を選択する意味がない となる論理展開を説明してくれ 意味がわからん、マジでw
つーかさ、普通に
圧縮後のサイズを小さくしたい→高圧縮を選択
圧縮・展開に時間をかけたくない→低圧縮を選択
の住み分けFAでしょ。その為のオプションだし
高圧縮の意味がないなんて結論には普通ならない
>>354 VB.NETにPNGの圧縮率指定はなかったと思う
>>363 すぐ人をお前呼ばわりするのは馬鹿の特徴かね。
386の時代じゃあるまいし、静止画の圧縮ファイルの展開時間が
実際上問題になるケースなんてどれだけあるか。
まあ、無意味は言いすぎだった。
>>364 話が噛み合ってない。
>>366 同じデータならサイズが小さいことに越したことがないから。
まあ普通はね。
なにが越したことはないからだよw そりゃ自分の環境の話だろ 何を重要視するかによって越したことないものが 何かは人によって違うって その為のオプション 自分がそうだから人がそうだと思わない方がいい
>>369 OK。
では、同じ画像であえて低い圧縮率のPNGを選択する必要性がある
現実的な環境の例を挙げてみて下さい。
できないのなら謝れよ。
傍から見てるだけだが小学生の言い合い見てーだなw
>>370 意味わからん
pngの選択肢は圧縮率の高低だけなのか?
使用するソフト、配布、加工のし易さ etc
によっていくらでもかわってくるんだが
おまえの言ってることは、
なぜ圧縮率もたいしたことない上に色深度の制限があるtgaが
いまだに広くアニメーション業界で使われているか説明せよと言ってるのに等しい
謝れよとか小学生かよw
>>362 意味がないのに圧縮率が選択できる設定があるのはなんで?
人によっては意味があるからでは?
>>370 で、キミは可逆圧縮画像ファイルに何のフォーマットを使ってるわけ?
>>374 理解できる頭がないんなら別にいいよ
本来のスレ内容に戻そうか
>>373 だからそれがあるなら具体的に教えて下さいって言ってるでしょ。
そんなものはない、って言っている人間に「ある」理由を尋ねられても困る。
大丈夫かよほんと
>>377 だからなんで意味がないのに圧縮レベルの指定が出来るの?って聞いてんじゃんw
それを答えてからだろ
ってか、
>>367 が答えを言ってるわけだが
自己主張しながらののしりあうなら鳥付けてやれよめんどくせぇ。初心者か
>>377 圧縮レベル指定オプションをわざわざつけた
圧縮フォーマット開発者に聞いたら〜?
381 :
354 :2011/11/17(木) 00:22:19.64
私の質問で荒れてしまったようで、なんかすいません 結論としてはVB.NETにはPNGの圧縮率指定はないのですね ちなみに私としては圧縮率の指定には意味があったつもりだったのですが… これで質問はFIXしますので、以下この話題はご遠慮願います
まあ、気にスンナ
そんなことよりDisposeの話しようぜDispose
デス坊主の話ももう良いだろう 入門書か解説書かなんか読めと
>>384 shellの方ではなくshellexを使うんだろうけど
具体的なVB.NET用のサンプルって見つからないな
可逆圧縮だと圧縮率を変える必要が無いんだったらそもそも圧縮する必要ないんじゃないのか?w まぁ世の中には自分に必要の無いものは誰も必要としていないと思い込んでる人はいるからな
javaならできるよ
なにが?
なんでも
もういいじゃんw
スレが伸びていると思ったらこれかw 自分が正しいと思ったら考えを改めない俺のオヤジのようだ
わかったからぶり返すな
>>384 ウインドウにD&Dする方法に変えるとか
根本的な解決にはなってないか
>>357-358 すごく参考になりました。ありがとうございます。
あと、「参照をもってる限りそのインスタンスは生きたままだ」の部分を
簡単なプログラムでテストすることは出来ないのでしょうか?
ComboBoxのプログラム例の場合は、ComboBoxの候補が表示されなくなったのは、
「Disposeはあくまでもそのインスタンス(クラス)で使った(アンマネージド)
リソースを解放するだけ」の動作という解釈でよろしいのですよね?
質問です、 外部ウィンドウ(Directx)上で時間を描画したいのですが ウィンドウ上での描画が分りません。 フォーム上でのdirectxは描画出来るのですが・・・
XNAで具ぐれ
windows7の、アプリケーションごとの音量調整をvbからいじるって、できる?
>>400 いや俺が知りたいのは、外部のウィンドウ上に文字を描画したいんだけど・・・
API探しても見つからないし・・・
マジレスされてもな
「外部ウィンドウ(DirectX)上」の意味が伝わっていないと思われ。 エスパーの出番だな。
>>398 DataTableのDisposeなんてやったことないから、どんな状態になってるか解らんが
Public Class Form1
Dim dt As DataTable
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
dt = New DataTable("TEST TABLE") : dt.Columns.Add("ID", GetType(Integer)) : dt.Columns.Add("NAME", GetType(String))
dt.Rows.Add(New Object() {1, "aaa"}) : dt.Rows.Add(New Object() {2, "bbb"})
ComboBox1.DataSource = dt : ComboBox1.ValueMember = "ID" : ComboBox1.DisplayMember = "NAME"
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
dt.Dispose()
End Sub
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
MsgBox(dt.TableName)
'ここから下の動作は不明
dt.Rows.Add(New Object() {3, "ccc"}) : dt.Rows.Add(New Object() {4, "ddd"})
dt.Reset() : dt.Columns.Add("ID", GetType(Integer)) : dt.Columns.Add("NAME", GetType(String))
dt.Rows.Add(New Object() {5, "eee"}) : dt.Rows.Add(New Object() {6, "fff"})
End Sub
End Class
ボタン1,2,3と順番に押す
Button3_Clickでボタン1で付けた名前(TEST TABLE)が表示される
つまりボタン2でDisposeされてもボタン3の段階でこのDataTableインスタンスは生きてる
こっから先は俺もよくわからんが、その下のコードがちゃんと動かない
DataTableがどんな状態なのかはよくわからん
406 :
405 :2011/11/17(木) 19:54:10.91
ちと追加でいろいろやってみたけど、DataTableをDisposeしてもバインドが切れるだけっぽいな ボタン2を MsgBox(ComboBox1.DataSource Is Nothing) dt.Dispose() MsgBox(ComboBox1.DataSource Is Nothing) にすればDispose前後で違う もう1回DataSource周りの設定してやればそのまま表示された この辺はデザイナ用のメソッドだったりするから、テストには向かないかもしれん
>>404 例えば外部プログラムの描画がDirectXで描画されてて、
その外部プログラムのウィンドウ内(作業範囲)に文字を画面上に描画させたい。
ウィンドウハンドルで名前やプロセス系を取得して、そこから詰んでる
DirectXプログラミングには精通してるの?
射精なら毎日してるよ
.NetFramework 1とか2とか3とかそれぞれ入れないとだから結局VBのdll時代と配布先側の手間は変わらないジャン
Disposeの確認ならFileStreamあたりはどう?
412 :
デフォルトの名無しさん :2011/11/17(木) 23:47:42.80
ImportRowでRowStateが引き継がれるんですが、どうしたらAddで追加できますか?
>>398 アンマネージドの解放もするけど、基本的にはマネージリソースも含めオブジェクト自身を使用不可能にするものと思った方がいいかな。
廃棄後に再利用することを前提とするような場合はDispose()じゃなくてClose()とかそういう別のメソッドが用意されている事が多い。
いずれにせよ大抵の場合はDispose()後のオブジェクトの内部状態は
保証されないので、Dispose()後は即座にNothingを代入して無効化した方が
GC的な意味でもいいと思う。
DirectX系の質問は、このスレで回答してくれないのね・・・
いや、ここVB.NETのスレだし。
>>413 NothingはVB6から受け継がれたおまじないじゃないの?
え?それならNothingは、VB2002あたりのバージョンでは存在しなかったのですか? 俺は詳しくは知らないが、2005以降でVB6特有の書き方を乗せていったと解釈している。 例えばmsgboxと書いても動くとか。
DataGridViewでカラムヘッダーをクリックするとその列でソートされますが ソートの処理は自分でやりたいのですが、そのイベントと昇順か降順か だけを取得する方法ってないでしょうか?
DataSource使ってるかどうかで方法が全然違う
>>417 意味としては似てるんだけどちょっと違う。
VB6の場合はオブジェクトを参照カウントで管理していて、その参照カウントを減少させる手段がNothingの代入だった。
参照カウントが0になる(≒そのオブジェクトを参照している有効な変数がない)と、オブジェクトのデストラクタが即座に呼ばれて
オブジェクトはメモリ上からクリーンアップされるということになってた。
一方.NET以降はガベージコレクタがオブジェクトの寿命を管理していて、オブジェクトがメモリから破棄されるかどうかは
「GCが作動した時に」そのオブジェクトへの参照をGCが辿れるかどうかによって決まる。
ただ、アプリケーションはGC発生タイミングは基本的に制御できず、GC発生時に生存しているオブジェクトは
世代が上がってしまう(=クリーンアップ時のコストが上がる)わけで、そういう観点から行くと
そのオブジェクトを辿れない状態を早めに作ってやる(=Nothingを代入して参照を消してやる)方が
GCパフォーマンスとしては良くなる、ということになる。
まあ、とはいえGCはそんなに頻繁に起きるわけではないし、パフォーマンスつっても多分誤差程度だとは個人的にも思う。
なので、細かいオブジェクトにいちいちNothingを代入する必要はない。
ただ、大きめの領域をメソッド内で連続して確保・廃棄する場合なんかはある程度は貢献するという感じ。
コンストラクタから複数のオブジェクトのコンストラクタを呼ぶ場合とかね。
個人的にはどっちかというとDispose()したオブジェクトはもう使用しないのにプロパティやメソッドは参照出来てしまう
のが気持ち悪いので、「もうこれ以上アクセスしませんよ」と言うことを明示する意味でNothingを代入することのが多い。
メソッドの終端とかでローカル変数に代入したオブジェクトのDispose()を呼んだ場合なんかはいらないと思う。
長文スマソ
コード難読化で NanDoku MS公式以外でフリーで使える海外・国内難読化ソフトある?
NothingをNだけで書けるようにするとして、 Dim N as integer=Nothing Dim N as string=Nothig どれが正しいんだ?
日本語でおk
#define N Nothing
Dim N = Function() Nothing バカ過ぎ
Const N as Object = Nothing
Dim N as Integer?
DocumentSettingやProgramFileやWindowsなど 特殊なフォルダのパスを取得するにはどうすれば
なるほど
消えてますよ
437 :
435 :2011/11/19(土) 17:04:50.65
(煽りとかじゃなくて)一体何が聞きたいの? DB操作の方法(SQL文とか)なの? C#で実現する方法なの? それとも、DataTableやらを操作するプログラミングなの? あと、仕様として、最後のテーブルはフィールド数は無限に 増える可能性があるとして考えないといけないものなの?
439 :
デフォルトの名無しさん :2011/11/19(土) 18:20:07.38
SQLでやれっていう話だな
>>439 437じゃないけど、こういう認識で合ってる?
.netでというのであれば、
n種類のDataTableをDataSetに入れてリレーション張って、
DataTableの列追加して、Expressionで参照テーブルの値を参照する。
nの範囲を制限出来るのであれば上記作業をデザイナ上で設定可能。
制限出来なければコード上で行う。
でも、SQL文の方が簡単。
Windowsで最初から用意されているフォルダの絵のアイコンなどは どのDLLをどのソフトで抽出すれば
あれライセンスとか関係ない?
shell32
実行時に動的にOS付属のDLLから読み出す分には大丈夫だろうけど、 実際の所、Windowsアプリ用のアイコンとして流用する分には黙認ってところか。
VS2005以降はOSのアイコンが一部付属するようにはなったけど、 それ以前から恐らく無断で使ってるフリーソフトは結構多かったね。
猿でもわかるVB入門ってあったっけ?
>>440 俺もおそらくそういう処理手順に成ると思う。
だけど、質問者がはっきりとものを言わないので、
どうしたらいいのかの段階で止まっている状況だと
思っている。
アプリを完全に終了するには Endの他に何がある?
exit sub とか application.exit とか。
Dim Dt As DataTable = New DataTable("DtFileList") Dim Dt As New DataTable("DtFileList") この2つの違いはなんだろうか・・・
せっかくだからildasmで逆アセンブルしてみたらどうだ?
なんだよ「なんだろうか・・・」って。 独り言なのか質問なのかはっきりしろ。
453 :
450 :2011/11/20(日) 19:37:01.60
たぶんDim Dt As New DataTable("DtFileList") はDtがヴァリアントとかバリアントになっるんだろうね
454 :
デフォルトの名無しさん :2011/11/20(日) 20:12:44.98
ただ単に省略してるだけで結果は同じだよ。 variant型になんぞならんよ。
variant っていつの時代で止まってるんだよ
違いなんかない
Variantワラタw
そのむかし DEFINT A-Z というオマジナイがあってだな
間違いに気付けてよかったな
VB6からの人は下の方が馴染みやすいのかもしれん 俺は下の書き方を使う あと配列も Dim arr as String() ではなく Dim arr() as String と書く方がしっくりくるんだよね、なぜか ま、どっちにしろ好みの問題か
Dim arr() as String こんな風に書くのは、「私は理解が怪しいです」って宣言しているようなもの。 決して好みの問題ではないな。
VB4から移ったので一から覚えなおしですわ
宣言可能なんだから理解が怪しいも糞もないと思うが 逆に理解して宣言してるヤツがどれほどいるのやら…
普通に好みの問題だろw
少なくともVariantはないわー
>>461 なぜその書き方だと理解が怪しいのか、どう書くのが正しいのか、なぜそう書くべきなのか
これをちゃんと説明しないお前の意見の方が怪しいわ
VB6から無くなったのって他に何があったっけ?
currency
まあ、自分と違うやり方の人間を認めれない人っているよね
>>466 本気で言ってるのか。
Dim arr() as String
これはVB6ユーザー向けの糖衣構文みたいなもので変則的な書き方。
.NETではString()はStringとは独立した別の型。
asの後ろに書くのは型名なのだから、そこにStringなどと書くのは本来間違っている。
こんなものに何の違和感も感じない人は、恐らくプログラミング言語の構文を
ロジックで理解せずに呪文感覚で覚えているんだろう。
>>470 それは理解した上で好みでarr()と宣言してるのだが?
理解してたら好まないでしょ。 馬鹿じゃないの。
ちなみに、JavaにもCプログラマ向けのまったく同じような問題があって、 こっちも一部で叩かれてる。
理解してる=使わないとしか考えれない馬鹿なのか よっぽど頭固いんだな ラッパーとかも使用しない人間なんだろうな、きっと
まーた、荒れんのかー もうやめてくんないかな
だね
またこういう流れか… もうこの話題終了でいいだろ
>>475-476 荒れてるのは誰?
2chでは往々にしてそうだが、感情的に「荒れ」て喧嘩腰になってるのは馬鹿で無知の方。
そういうこと言ってるから、2chには段々馬鹿しか残らなくなる。
なんだ、このキチガイは…
480 :
デフォルトの名無しさん :2011/11/20(日) 21:49:00.45
波線がでなきゃなんでもいいんだよ!
複数行の文字列を長さ順 -> アルファベット順に並び変えるにはどうしたらいいでしょう Compareというのを使って長さ順だけやアルファベット順だけは出来たのですが
MSDNライブラリのプログラミングガイドではこうだけどな。
> 1 次元配列変数を宣言するには、変数名の後に 1 組のかっこを追加します。
> Dim cargoWeights() As Double
>>481 行単位でバラいて配列に突っ込んだ後、
Array.Sortの引数にお好みの並び替え条件をデリゲートで渡してやれ。
ワラタw
馬鹿っぽい発想だな。 まるで先生に言いつける小学生みたいだ。
もうわかったからw
VB.NETにおける、配列変数の宣言方法
配列変数 variablelist の変数が配列であることを指定するには、variablename の直後にかっこを指定します。配列に複数の次元がある場合は、次元の数を示すために、かっこの中にコンマを含める必要があります。
(
http://msdn.microsoft.com/ja-jp/library/x397t1yt (v=VS.90).aspx)
これがVB.NETにおける正しい配列変数の宣言方法ですよ
Dim arr as String()
これは、arrという変数に、配列を定義してるのですよ
VB.NETでの配列はこれが同じとして扱われてるが、本来VB.NETでの配列=配列変数だから、MSDNなんかではちゃんと前者で宣言してるんだよ
みんなもちゃんと配列変数と配列を格納してる変数の区別をつけようね
>>487 なんか語るに落ちてるね。
配列変数と配列を格納してる変数の区別?
やっぱりこういう風に意味不明な理解をしてるんだなw
あんたが言ってる「正しい」方法は、正しいんじゃなくてVB6ユーザー向けの方便。
Dim Ary() As String Ary()という配列はストロング Dim Ary As String() Aryは配列型ストロング
ストロング....金剛
ID出ないんだからコテつけてやれよウゼェ
/) ///) /,.=゙''"/ / i f ,.r='"-‐'つ____ こまけぇこたぁいいんだよ!! / / _,.-‐'~/⌒ ⌒\ / ,i ,二ニ⊃( ●). (●)\ / ノ il゙フ::::::⌒(__人__)⌒::::: \ ,イ「ト、 ,!,!| |r┬-| | / iトヾヽ_/ィ"\ `ー'´ /
>>488 つかVB.NETという言語じゃそれが正しいんじゃないのか?
すくなくともMSDNでは配列の宣言方法は変数名の後ろにカッコだと書いてある
.NETの型がどうであろうと、それを使うための方法は言語によって決まってるんだが
それを方便だ間違いだというお前の根拠はなんだよ?
>>493 変数名に括弧を付ける書き方では筋が通らないから。
Asの後ろに来るのは何ですか。
何度も同じことを言わせないで欲しいもんだ。
っていうか、こんなのばっかりだからVBerは馬鹿にされるんだな。
お前が言ってるのは Dim Ary As String() が間違いじゃない理由だ Dim Ary() As String が間違ってる理由ではない
491は退社で
なんだ退社って?
間違ってるなんていってないの。 それはVB6ユーザー向けの方便であって、正当な書き方ではないといってるの。 プログラミング言語できないだけじゃなくて日本語もダメなのかよまったく。
ってか、よそでやってくんね?目障りだから
そんな訳ないでしょ。 どんな幸せ回路だよ。
>>498 だから、それが正当な書き方でないって根拠は?
MSDNの説明は正当な書き方じゃないのかね?
>>502 同じことを何度も言わせるなよ鳥頭君。
Javaの影響を受けてるC#ですら
int hoge[];
という書き方を許さない理由を少しは考えて欲しいもんだな。
よそいかないんならトリ付けてくんね?NG登録すっからさ
>>503 C#はかなり限定的な状況でその書き方できるよ
C#の通常の配列やVB.NETで変数名の後に括弧書いたときとは全く違う意味だけどね
VB.NETみたいに見た目の雰囲気だけでなく本当に要素数分だけ変数を並べたのと同じになる
>>504 > 感情的に「荒れ」て喧嘩腰になってるのは馬鹿で無知の方。
ということらしいぜ、誰とは言わないけど
モジュールにパブリック変数書けば ジャンクションプロシージャは一生使わなくてもいいんでしょ?
お互い、相手が頭が悪いと決め付けて、部分的・限定的に物事を言っているから 話がかみあわなくなっているんじゃないの? もう少し体系的に話をしたらどうよ?あと、人格否定だとか感情は無しで。 (俺は、細かい部分であってもきちんとした理解はそれなりに重要だと思っている)
VBer同士で傷つけ合うのはやめろ! 二人ともこれでいいよな!? ()を変数に付けるのは言語仕様上認められた正当な書き方。 でもVB6との互換性の為に残されたと思われる為、採用する合理的理由は無い。 感覚的理由ならある。(好み)
もうほっとけよ
VB6との互換とかより、BASIC言語としての仕様だと思うんだが 他の言語がよければそっち使えよ
>>511 C系でも元々は変数に括弧だぞ
C#にあるような本物の固定長バッファはともかく、
そうでないのは合理的な書き方に変わっていった
DIM A%(10) これ初期の BASIC の整数配列だから A% のところが A As Integer に置き換わったとしたら Dim A As Integer(10) が歴史的には正しいのか?
歴史的な話をもってくるのであれば、質問スレ以外で話をするべきでは? あくまでVB.NETの理解の範疇にしておこうよ。
>>513 固定サイズバッファなら要素数も型の一部だから
変数名の直後に括弧で要素数書くよりもその方が合理的だと思う
VB.NETの配列型は要素数関係ないから、変数宣言の型に要素数書くのは不自然
理解して使うなら統一されてればなんでもいいと思うけど
わかったからn As Integer()って書きたいんならお前のソースではそう書けよ。 俺は今後もn() As Integerって書くから。 As Newの引数なしコンストラクタ呼び出しと見た目が被って気持ち悪い。
どーでもいい!
互換性のために変数()が残ってるとばかり思ってたわ。 まぁどちらでも読めるからどーでもよろし。
元はといえばどっちでもいい(というかどうでもいい)ことを 理解が怪しいだのなんだの言い出すからこんな流れになるんだよ もうやめようぜ
なるほど。
これまでの流れを読んだ後、
>>519 を読んだらすっきりと理解できた。
>>515 意味不明。
理解して使うなら、っていう台詞を全然理解できてない人間が言うのはどうなの。
>>516 2003以降、
dim hoge as New Hoge()
は警告が出るはず。
少なくともIDEを使う限り書けない。
初歩的な質問ですがお願いします ID、名前、データ1、データ2(非表示)のフィールドのあるDataGridViewの特定のレコードを変更しようとしています 非表示フィールドもあるのでDataGridViewではなくDataSorceの方で変更したいのですが DataTable.Row(2)("名前")="Hoge" などのようにレコード番号がわかれば良いのですが簡単にレコード番号を取得する方法はありませんか? 今の所このDataGridViewには最大でも60レコードぐらいしか扱わないので For〜Nextで回して取得しても良いのですが 今後大きなテーブルで同じ状況になった時はさすがに回してられないので何か良い方法はないでしょうか? IndexOfみたいなメソッドがあれば良いのですが見つけられませんでした
>>521 お前の言うIDEって具体的に何よ?
俺のVisual Studio 2008 では Dim hoge As New Hoge() はエラーも警告も出ないようだが?
特定のレコードを説明してくんないとわかんないけど、 DataTable.Select("名前='Hoge'") みたいに出来たっけ?
該当のDataGridViewRowのDataBoundItemをDataRowViewにキャストする
なんだまだコテつけてないのか
でもいきなり人を馬鹿呼ばわりする不思議
フォームにAxWebBrowserを配置してニコニコ動画を表示しているのですが 時々HDDが動きまくってデバッグの終了や中断やタスクマネージャーも まともに表示、操作出来ない状態になるのですが何故でしょうか ページを表示した以降は特に何もしていない状態のはずなのですが 極まれにそうなります。
あれはIEそのものだからIEでも異常終了するんじゃないかなぁ
>>524-525 今出先で試せませんが帰ってから試してみたいと思います
アドバイスありがとうございました
>>528 ま、俺様コーディング規約を人に押し付ける人種だしね
>>526 そうか。まあ付けなきゃいいんじゃない?
俺は今後も付けるから。
引数なしコンストラクタと引数ありコンストラクタで括弧の付け方が統一されてないと気持ち悪い。
どーでもいいことでスレ伸ばすなクズ野郎!
>>534 VBはC#のようにメソッドを()で表現して区別する文化じゃないから、
必用もないのに()を付ける意味は何もないんだけどね。
これで
>>460 的な意見の人の考え方が少し理解できたよ。
恐らくこういう人は、意味論的に一貫しているかどうかより、
形式的な統一性にこだわるタイプなんだな。
違ったら悪いけど文系出身者かな?
蒸し返して悪いが、それで言えば
Function Hoge(value() as Integer) as Interger()
...
End Function
は形式的にすら一貫してないなw
なんだこいつ
勝手に人をタイプ分類しといて勝手に一貫してないとか…
納得したんなら あとは勝手にブログかなんかで一人でやってほしいんだがな
構うんじゃねえ! おめーらも巻き込まれっぞ!
よしおまえらまたVariantんとこまでもどって議論しろ
下記のようなジェネリック型を.NET Framework2.0プロジェクト上で定義しようとしているのですが Public Structure Parameter(Of T As Structure) Private Value As T Public Overloads Shared Operator +(ByVal a1 As Parameter(Of T), ByVal a2 As T) a1.Value += a2 ' エラー:演算子 '+' は、型 'T' および 'T' に対して定義されていません。 End Operator End Structure 型Tに+演算子を実装している保障がないためエラーになるというのは理解できます。 組み込みの数値型(Integer, Singleなど)だけを扱えれば良いので、Tに数値型だけを受け入れるような型制約 あるいは特定の演算子をオーバーロードしているクラスのみを受け入れるといった型制約を設ける事が出来れば 上手く行くのではないかと思うんですが、MSDN等を調べてみた限りそういう方法が見つけられませんでした。 どなたか方法をご存知の方いらっしゃいましたら、よろしくお願いします。
不可能 どうしてもというなら遅延バインディングするしかない
>>545 なるほど、無理だとわかってすっきりしました。
ありがとうございました。
自宅でパソコンに向かってるとタバコばっかりすcっちゃうよな?
エロ画像.png は @エロ画像A.Bpng とすると Bは拡張子ってゆんだけど@とAはなんてーの?
ファイル名 ドット(ピリオド) 拡張子 ドットが拡張子に属する解釈もある
550 :
548 :2011/11/22(火) 02:41:58.09
変数の定義で Dim Kacuchoshi As Stringはいいとして、 Dim FileName As Stringやっちゃうと FileNameが C:\EroCG.pngなのかEroCG.pngなのかEroCGなのか自分でわかんなくなっちゃうから EroCGという文字列を扱うときにわかりやすい変数姪を付けたいわけ
拡張子を含むものも含まないものもファイル名と呼ばれる でも含まないものはベース名とも呼ばれる
>>550 C:\EroCG.png フルパス名
EroCG.png ファイル名
EroCG ベース(ファイル)名
って感じじゃないかと
ファイル名やフルパス名など、それらを取得する時に使用するメソッド名を 参考に変数名をつければいいんじゃないの?
ネトウヨの大半は省庁の役人だぞ。 ただし、街宣ウヨは半島人な。
((⌒⌒)) ) このチョッパリ ( ファビョ━ l|l l|l ━ン! ) ネトウヨが! ( | ヽ、 .| ヽ、 ) ( / ヽ─┴ ヽ )/⌒Y⌒Y⌒Y⌒Y⌒Y⌒丶 ミ ミ ミ /!||!(゜\'iii'/゜)ヽ ミ ミ ミ .______ /⌒)⌒)⌒)ノ( "","ニ..,ニヽ"v\ /⌒)⌒)⌒) .{{ | | 丶}} | / / / .⌒\/ {y~ω~Y ,/ (⌒)/ / / // | | \__\____ | :::::::::::(⌒)>. i |⌒'i⌒r| く ゝ :::::::::::/ {{│ | | | | }} | ノ ! .|k.;:;:;!;;;r| ! \ / ) / | | | |寒 村 | ヽ / ヽ.ニニニニ> ヽ / / .{{ | | | |iiiiiiiiiiiiiiiiii| }} | | l||l 从人 l||l l||l 从人 l||l . | | |__|____| ヽ -一''''''"~~``'ー--、 -一'''''''ー-、 .{{.|__|_/ / )) }} ヽ ____(⌒)(⌒)⌒) ) (⌒_(⌒)⌒)⌒)) 〔 ̄ ̄! ̄ ̄ ̄ ̄ ̄| ((  ̄ ̄ ̄ ̄ ̄⌒Y⌒Y⌒Y⌒Y⌒ ̄ ̄⌒Y⌒Y⌒Y⌒ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ バン! バン!
557 :
のぞみ ◆fv9SHj5ibk :2011/11/22(火) 19:18:50.05
質問です。アプリケーションを起動してからの時間をツールの中に表示させる方法 ってどうやるんですか?
ero.buruma.panty.png みたいにピリオドいっぱいのファイル名にそのメソッドつかうとパソコン暴走しそうだがどぅなんだ
ero.buruma.pantyが返ってくる
dim y as integer for i As integer = 0 to 10 dim x as integer x+=1 y = x next msgbox(y) この結果が、1だと思ってた俺はヤバいですか?
561 :
のぞみ ◆fv9SHj5ibk :2011/11/22(火) 22:15:11.61
アプリケーション起動時からの経過時間をラベルに表示するのってどうやるんですか?
1.アプリケーションが開始したら時刻を記録する 2.表示したいときに、1で記録した時刻から現在時刻までの時間を計算する 3.2で計算した時刻をラベルに設定する
3の時刻は時間に訂正で つかVB.NET全く関係ない説明になっとるな
振込み と 振込 を使い分けるのはどんな時?
>>560 気持ちは良くわかる。
C言語とかと同じような考え方で見ると、For-Next間がブロックとして、
xがループ毎に初期化されるように見えるんだよな。
実際には、スコープがFor内になっているだけで、
初期化のタイミングはメソッドに入った時点だったりするし。
Dimが寿命を制限しない仕様は、他言語から入る時には結構な罠だと思う。
>>560 配列つかうと微妙にVB6と非互換があるよね。
' VB6
Dim i As Integer, j As Integer
For i = 0 To 9
Dim t(9) As Integer
t(i) = i
For j = 0 To 9: Debug.Print t(j);: Next: Debug.Print
Next
' VB.NET
Dim i, j As Integer
For i = 0 To 9
Dim t(9) As Integer
t(i) = i
For j = 0 To 9: Console.Write(t(j)): Next: Console.WriteLine()
Next
567 :
のぞみ ◆fv9SHj5ibk :2011/11/23(水) 11:25:30.02
お返事ありがとうございます。 アプリケーションが開始したら時刻を記録する これをやりたいのですがどうソースを書けばいいのかわからなくて困ってます。
他のSQLの実行文の後に、Datagridに別のテーブルのデータをFill する文がある場合、同時実行違反が生じることがあります。 他のSQL文実行後、暫く待つとDatagridに別のテーブルのデータをFill しても問題ありません。 このような状況の時、現在SQL文が実行中であることをキャッチして、 後の処理を待たせる方法はありますか?簡単に関数化して使おうと 考えています。
569 :
デフォルトの名無しさん :2011/11/23(水) 13:23:41.67
ユーザーコントロールをDLL参照からプロジェクト参照にしたら糞重くなったんだけど、そういうもん?
>>568 それはVB.NETとかFillの動作仕様とかの話というよりも、
DBエンジンの仕様とかSQLはどんな文を書いているのかという
話になると思う。
おそらくDataAdapterを使って自動生成されたSQL文を使ってupdate
しているのだと思うけど、そうではなくて、自作関数で生成した
UPDATEのSQL文をExecuteNonQueryするという選択肢は
どう考えているのか、とかそういう設計的な話をしないと
進まないと思う。
>>561 >>567 質問文そのものが抽象的過ぎて答えようが無いからレスがつかないのだと
思う。例えば、時刻を取得する関数が知りたいのか、ラベルのどのプロパティを
触る話なのかが分からないのか、など、そういう事を書くべきだと思う。
「こういうアプリを作りたい」という話だけで終わりだと、「いくらでも
方法はある。どういう方法を取るかはその人の考え方次第」という
回答になってしまう。
>>569 環境や操作した内容を詳しく書くと、再現性のあるものかどうかが
判別できると思うよ。
VB.NET 2005 だとどうなのかとか、そういうの。
>>570 以下に現在の環境を記します
■使用しているDB : Access2007 accdb形式
■SQL文の発行と実行
'カレントフォルダのbase.accdbに接続する
Dim cn As OleDb.OleDbConnection = New OleDb.OleDbConnection( _
"provider=Microsoft.ACE.OLEDB.12.0;" _
& "Data Source=" & apppath & "\base.accdb;")
Dim SQLCm As OleDb.OleDbCommand = cn.CreateCommand
'SQL文の組み立てと実行(selectptnはID)
SQL = "DELETE * FROM asset WHERE patternid=" & selectptn
SQLCm.CommandText = SQL
cn.Open()
SQLCm.ExecuteNonQuery()
■この後実行するFillメソッド
Me.TableAdapterManager.UpdateAll(Me.Baseset)
このあと実行するFillメソッドの前にmessagebox.showが1つあるのですが、出て直ぐ押す
と同時実行違反になり、数秒待ってから押すと問題なく終了するという具合です。
SQL文の実行が終わるのを待ってから、Fillメソッドを実行するようなことができたら良いの
ですが(Do While 文をつかった何もしないループにエラートラップをまぜたものを使ってみた
のですが、いまいちうまくいかなくて)
574 :
のぞみ ◆fv9SHj5ibk :2011/11/23(水) 14:01:08.05
数秒たってから、処理を始める、ふうにしたいんですけど、どうすればいいですか?
>>573 ExecuteNonQueryは非同期実行じゃないから、普通はSQLの実行が終わるまで帰ってこないはず
同時実行違反の詳細と、フレームワーク(VB)のバージョンは?
目が疲れたらどーすれば
>>569 プロジェクト参照ってそういうもんだよ。
ドットネットフレームワーク自体がDLL参照な理由でもある。
>>579 出鱈目言うなよ。
そんな訳ないでしょ。
>>579 出鱈目言うなよ。
そんな訳ないでしょ。
参照先のプロジェクトのDLLをコピーするかどうかの設定があった気が
583 :
579 :2011/11/24(木) 08:54:40.40
ドットネットフレームワーク自体が、プロジェクト参照だったら、ビルド速度が非現実的なスピードになるってことも理解できないのか…
またなにやら始まるのか?
585 :
のぞみ ◆fv9SHj5ibk :2011/11/24(木) 15:24:37.19
またまた質問なんですけれども ちぇっくが入った時のみプログラムを実行 したいんですよ チェックを外した時にもプログラムが実行しちゃうんですが どうソースを書けばいいのかわかりません。 おしえていただけますか?
順番にかんがえようね 1.じょうけんぶんき(If)のつかいかたをべんきょうする 2.ちぇっくぼっくすがちぇっくされてるかどうかしるほうほうをしらべる
ようわからんが If CheckBox1.Value = True Then [プログラム処理] Else [終了処理] End If こんでいいじゃね?w
588 :
のぞみ ◆fv9SHj5ibk :2011/11/24(木) 17:53:55.44
>>587 そのプログラム処理は何を入れたらいいんでしょうか
終了処理も何を入れたらいいんでしょうかw
[プログラム処理] あんたが実行したいプログラム [終了処理] MsgBox("ggrks") こんなもんでしょ
フォームを最小化してある状態でタイマーで一番手前でアクティブな状態で表示したいのですが Me.Activate()やMe.BringToFront()では出てこないのですが どうやってやれば良いでしょうか あと下のAPIを試しましたが駄目でした。 SetWindowPos BringWindowToTop SetForegroundWindow SetActiveWindow それともやりかたが悪いだけで上の中に正解がありますか?
最小化を解除してないんじゃない?
Me.WindowState = FormWindowState.Normal でできました。 ありがとう
Taskバー点滅しない? アクティブなプロセスじゃないといけなかったような…
>>576 なるほど 最後のTableadapter.updateallあたりでエラーなのかなぁ・・・
ちなみにフレームワークは4.0で、同時実行違反の詳細は
Me.TableAdapterManager.UpdateAll(Me.Baseset) でエラーが表示され、
同時実行違反 : DeleteCommand によって、処理予定の 1 レコードのうち 0 件が処理されました。
というエラーが表示されます。
エラータイトルは、DBConcurrencyExceptionとなります。
※現在は苦し紛れのルーチンで、try catchでこの部分だけをサブルーチンにして、
本ルーチンでは、あるフラグが立つまで、延々とそのサブルーチンをcallするという手をつかって
軽減してますが、正直、データ量が増えたら再発しそうで怖いです。
>>594 APIとかいろいろ組み合わせたり試行錯誤してるときにタスクバーの点滅になってけど
今は正常に前面+アクティブになってます。
いちおう
Me.WindowState = FormWindowState.Normal
Me.Activate()
Me.Refresh
と3つ書いておきました。
>>595 TableAdapterで更新しようとしてるデータセット(の元テーブル)のデータを
ExecuteNonQueryで直接削除してると見た
TableAdapterが行を削除しようとしてすでにDBから行がなくなってるからエラーが出てる
TableAdapterかExecuteNonQueryのどっちかだけでDB更新しろ
TableAdapterとかDataAdapterは、データ参照にのみ使うものであって、 更新に使うものではない、という考えが良いと思うけどな。 ま、もともと更新機能はあるからこの考え方は強要はしないけど。
>>598 なるほど。
随所随所でこのエラーが似たような場面で出るので、ちょっとやってみます。
テーブルアダプターとかマジでいらない子。 更新系はエクスキュートノンクエリだけあれば十分だよ。
型指定されたDataSetも要らないだろ。 GUIになれきっているのであれば、いいのかもしれないが。 でも、それだけしか出来ないと他の場合に通用しないだとか、 それ特有の概念をイメージしなおさないといけないとかあるのが 逆に面倒に感じる。
SendKeys.SendWait("ベべ") ってやると平仮名のべが出ないのですが べは特殊な扱いでしょうか? どうやったら出るか教えていただきたいです。 文字コードでもダメみたいです。
SendKeysはあくまでキーストロークを送信するものだからなぁ 一般的なキーボードにべのキーはないからダメなんじゃないかな
普通にできるが?
>>605 逆に言うと、くれりぽ使わないのであれば、不要って事でおk?
610 :
605 :2011/11/26(土) 08:53:57.08
OK
>>607 他の文字は送れるのに平仮名のべだけだめなんです
>>608 平仮名のべがでますか?
キーストロークということなのでクリップボードに文字列をセットして
CTRL+Vを送っても平仮名のべだけ消えてしまいます・・・
SendKeysとは関係ない問題だろ?
>>611 食い下がるかw
平仮名のべだけ例外ですなんて罠仕様がひっそりと存在していると言いたいの?
その時点で有り得ないと思わない?
他のPCで確認した?
OS再インストールしてみた?
一応可能性的な部分を言ってみるてすと。 コンパネで言語の設定が海外になってたりすると、 日本語の表記や処理がおかしくなる場合がある。
>>614 ありがとー
そういうところは全然考えてみませんでしたので確認してみます
バグったらOSインストールし直してくださいなんて説明書に書けないですもんね原因を探さないと^^;
>>611 そもそもSendKeyとか受け取ったアプリに依存しまくるわけだが
罠があるとすれば受け取った方のプログラムだな
普通にキーボードからやってちゃんと動いてるのか?
If Folder.Exist("C:\") Then をやろうとしてるのに Folder. というのがVisualStudioのテキストエディター画面で入力できないたすけて
618 :
デフォルトの名無しさん :2011/11/27(日) 20:05:59.05
え?
Folderまで入力したところで、一旦Escを押してIntelliSenseを消せば ピリオド以降も入力できるよ。
' Make the ID column the primary key column. Dim PrimaryKeyColumns(0) As DataColumn プライマリーの意味は?
ggrks
社長タイプだから絶対自分では調べないよ〜ん
シャチョサーン、プログラムスルカ。シャチョサーンタイヘーンネ PrimaryKeyは主キーです。つまりPrimaryの意味はメインです
自分が命名したものも含めて、数多くのクラスから、目的のものを 探す方法はみんなどうしてる? 大体記憶に残っているものでも、単語とかが微妙に違ってたりしてて、 なかなか見当たらない事があると、イライラするw 目的別に備忘録作って探すとか、ggrとかそういう方法で対応するしか ないのかな?それとも、覚えるように努力するとかかな?
MSDNを否定してまで自説を演説してやまないキチガイが現れてから、スレの流れがおかしくなったな
primaryとuniqの違いを述べよ
MSDNの機械翻訳ドキュメントなんて、所詮はテストされてないソースコードと同じだよ。
MSDNって使い易いか?
開発者向けのリファレンスとしては類を見ないほど質量ともに優れてる officeじゃないんだからお客様気分は捨てなさい
MSDNが優れているのは分かるが、その意見は、いつも抽象論で
終わっているようなところがある。だからいまいち実感がつかめなくて
「MSDN万能主義をうたっているだけだな」くらいにしか感じ取れないのだが。
例えば、類を見ないほど質量とも優れているのなら、Tips系のサイトが
出来たり流行ったりしないわけで。
http://dobon.net/vb/
グローバル視点の品質でみれば英語版は優れているのかもな。 日本人にとっては、句読点の付け方ひとつ間違っていても駄文なわけで、優れているって感じはまったく受けないけどね。
他の言語とかやればわかるよ MSじゃなきゃメンバの解説なんてsummary1、2行で終わり
他の言語や開発環境とくらべると、圧倒的に質、量ともに上 ただし、それで必要十分かと言われると微妙 日本語にローカライズされている範囲で言えばまったく不十分 まあそんな感じ
英語だと圧倒的という感じのコメントが多いね。 それだと、入門の書籍や、日経の書籍、Tips系のサイトのような 情報も網羅しているという解釈になるのでしょうか? それとも、それらは目的を考えると、別だととらえるべきいう事になるのかな?
日本語でもそんなに言うほど変わらん MSDNは辞書としては完璧だけど目的別ではないから どこに何があるか見当が付いてないと難しい 慣れてわかってきたらtipsなんて必要なくなる
Tips系のサイトってどうやって作られているんだろうか?
>>634 にあるように、MSDNを必死に検索して原稿を書いているのだろうか?
それとも、海外のコミュニティーで出てきている情報を翻訳する作業で
作っているのだろうか?
以前から感じていた疑問。
大部分はMSDN見れば出てくる程度のもの tips集で何でそんなことわかるのかと思うようなのって見たことない
Tips系サイトで出てきたコードをコピペする前に 使ってるクラスやメンバをMSDNで引いてみるといいよ 大抵MSDNのサンプルや解説をちょっと噛み砕いてるだけだから
タスクトレイにアイコン化したアプリ(自作)を別のアプリ(自作)で通常のサイズに戻すにはどういう方法がありますか?
両方弄れるならプロセス間通信 色々好きなようにやりとりできる
641 :
デフォルトの名無しさん :2011/11/28(月) 21:47:12.49
以下のような日付時刻のDate型から、自分で文字列を切り出すとかではなく 日付部分の2011/11/28や時刻部分の21:41:23を求める便利なメソッドや関数ってありますでしょうか? Dim d As Date = Now '2011/11/28 21:41:23
DateTime.Parseで一発
>>637-638 さすがにそんなクズみたいなTIPSを集めてるところは見たことないぞ。
いい加減なこと言うなよ。
TIPSってそういうもんだろ 目的別に調べられて、一緒に使う機能はまとめて紹介してくれたり、 わかりにくいMSDNの解説をかいつまんで説明してくれたりするのは 十分有用だしそれなりに手間もかかってるだろうしそれがクズだとは全く思わないが
そういうもんって、じゃあ具体的にMSDNの解説をかいつまんで解説してる(だけ)の TIPSってどこよ? もちろん個人ブログにちょこっと書いてあるようなのはそんな程度の内容だったりするかもしれんけど、 少なくとも有名どころにそんなところないでしょ。
>>641 文字列で欲しいのなら
d.ToString("yyyy/MM/dd")
d.ToString("HH:mm:ss")
でいける
個々のクラスやメンバなどについて、MSDNで得られる以上の知識はまず用いられてないってことだよ dobonだって例外じゃない ただそれを自分でMSDNで一つずつ調べるのはとても手間がかかるから、 先に調べた他の人がそのノウハウを公開してくれるのはもちろん有難いこと
MSDNが情報源であるというのは分かったが、だからといって、
何かあるとすべて「MSDN読め」だけで終わるような意見は間違いって
ことだよな?
それなら、
>>624 に対するレスも、俺はこうやっているぞ。とか、
俺はこういう方法をやっているが、という流れになるかと思うの
だがな。違うか?
>>648 それとこれとは話は別でしょw
さすがの2chでも、「MSDNよめ」って返答されてるレスは、実際MSDNライブラリに
普通に目を通せば解決するようなものである場合がほとんどだと思うよ。
>>624 については、たぶんアホらしくて誰も回答しないだけ。
あえて言えば、何のための名前空間なのよと。
>>640 ありがとー
でもぐぐったらちょっとイミフだったのでレジストリにハンドルを書き込むという方法で良しにしました。
だったら一時ファイルでいいだろ なんでレジストリ
>>649 それなら、「MSDN読め」だけで質問&回答の話が終わらない入門者向けの
回答は「名前空間を押さえて、MSDN読め」でおk?
ちょっと何いってるのか(
だれかも言ってたけど、MSDNは辞書なんだよ。特定の項目がわからないなら、MSDNみれば内容は書いてある 本で言えば引くものであって、読むに適したものではない だけど、何を探して良いか解らない、とか、こういうときどうすればいいか解らない、とか言うときもある そういうときに読む解説もあれば解りやすい。TIPS系のサイトはこっちを担ってる MSDNだけでOKって言うのは、辞書を全部読めばその言語はペラペラですって言ってるようなもの
最後の一行で台無しだ
>>641 DateTime.Date と DateTime.TimeOfDay のことか?
日付と時刻って「日付と時刻の形式」の設定で書式が変わるよね。
カルチャを指定しなければね
>>655 最後の一行が重要だろ。
必要以上に「MSDN読め」だけでレスが終わっているんだから
msdnは、和訳しただけで的を射てないからな 日本人技術者のWeb開発メモが、肌にあうよ
そうそう。必ず
>>660 みたいな意見が出るからなぁ。
だから、「MSDN読めよといっている人は、本当に君はそれのみで
解決出来てきた問題なの?」といいたくなることがある。
MSDNのを読んでたら出ないはずのことを質問する奴が多いからな
VB.NETとC#を比較するとC#にはどんな利点がありますか? 最初からはじめるならC#の方がいいですか?
C# に With ないんだよなぁ なんでだい
大してメリットがないし要望も多くなかったからやめたと公式コメント
>>663 C系に馴染んだほうが他のC系言語(C,C++,JavaScript,Javaなど)も習得しやすい
VB.NETに多くある使わないほうがよい機能というのが徹底的に削られているから
変な癖が付きにくいかもしれない
基本的な書式は似ているからね。
ただ、CやC++はGC系の言語から入ると大変そうだし、
JavaScriptはJavaの皮を被っただけの基地外言語(褒め言葉)だから、
余り過剰な期待はしない方が良いな。
>>663 とりあえず匿名メソッド美味しいです(^p^)
でもC#4.0より前だと、Excelとか弄る時に大量の空引数を書く羽目になるw
カッコだらけの変態C言語がなんでここまでもてはやされるのかよくわからんが、変態になりたいならC#だな。 マクロ感覚で気軽にやりたいならVB
>>668 俺もC系何度もトライしたがあのカッコが耐えられなくてその度挫折した
ブロックやネストが見た瞬間に分からない言語とか気持ち悪過ぎる
>>669 たまーにみるインデントなしのVBのソースの方がきついだろ
Pythonおすすめ
インデントなしの場合は付ければいいだけだからな
ほらな VBから入るとこうなる
自作のインターフェースって、使う意味あるんですか? たとえばDisposeみたいに言語に組み込まれて、クラスを破棄するときに自動的に 呼ばれるとか、自作インターフェースじゃ無理じゃないですか 継承したいならインターフェース継承じゃなくてもクラス継承使えばいいし、 使いどころが全く分からないんですよ
継承は一つだけだがインターフェイスは複数可能 まあ使いどころがわからないなら無理して使わなくていいんじゃね
>>673 あんまり気にしなくていいんじゃない?
必要になれば分かるよ
C# が C++ 同様に多重継承をサポートしてるなら使う価値あるけど そうじゃなくて、単に VB の C 版という程度だから VB でいいな。
多重継承をサポートして無いならだめってことなら、javaもだめっていう 評価になるってこと?
実行ファイルからコードを生成できるのがどうも嫌なんですが VBとかC#のコードをC++に変換してC++のEXEを作るツールはありますか? もしくわC++でなくても解析しても見れないEXEにする方法って何かありますか?
難読化でもやっててください
大事なとこだけ他言語で作って呼べば。 他の糞ソース部分は見られてもいいだろ。
VBって初心者向けとして作られた言語みたいだけど、 いつのまにか言語仕様がJAVAやC#と同レベルの強力な言語になっている。 まあ全ての言語機能を利用する必要は全くないが。
今のVBは完全にbasic風C#だからな 開発チームもC#に吸収され、C#に追加される機能はVBにも入るが C#のトップが気に入らない機能はVBにも入らない
C#ってCの皮を被ったVBだよね。 簡単に画面作れるし
出自的にはJava+delphiじゃね 設計者VB好きじゃないみたいだし
入門者向けはSmallBASIC使えって感じに割り切っているところがない?
当初C#になって簡単にGUIプログラミングが出来るようになったって、騒がれてたけど、VBなら昔から出来てたことなんだよね。 VBさんざん馬鹿にしてたやつらがC#サイコーとか言ってるのみると情弱ってこいつらの事なんだろうなって思ったよ。
ここらで F# の登場
だけどここはVB.NET質問スレ
691 :
デフォルトの名無しさん :2011/12/01(木) 18:31:50.56
デバイスコンテキストに、APIのCreateFont()で 「MS ゴシック」「サイズ24」を設定しても「Arial」「サイズ24」になってしまいます 何かヒントでも良いので教えて頂けないでしょうか・・・。 <ソース1> Dim img As New Bitmap(300, 200) Dim g As Graphics = Graphics.FromImage(img) Dim hdc As IntPtr = g.GetHdc() Dim hFont As IntPtr Dim oldFont As IntPtr Dim recttst As API.RECT Dim test As String = "aaaddd111あいう" Dim stFont As String = "MS ゴシック" With recttst .Top = 1 .Left = 1 .Right = 50 .Bottom = 100 End With
692 :
つづき :2011/12/01(木) 18:32:21.54
<ソース2> hFont = API.CreateFont(24, 0, 0, 0, FW_NORMAL, _ 0, 0, 0, SHIFTJIS_CHARSET, OUT_DEFAULT_PRECIS, _ CLIP_DEFAULT_PRECIS, DRAFT_QUALITY, _ DEFAULT_PITCH, stFont) oldFont = API.SelectObject(hdc, hFont) ' SelectObjectの結果確認用 Dim fnt As Font = Font.FromHfont(hFont) API.DrawText(hdc, test, -1, recttst, DT_CENTER Or DT_SINGLELINE) API.SelectObject(hdc, oldFont) API.DeleteObject(hFont) g.ReleaseHdc(hdc) ' ファイルに保存 img.Save("C:\test.png", System.Drawing.Imaging.ImageFormat.Png) img.Dispose() g.Dispose()
<ソース3・API宣言部・定数は省略> Public Class API <System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")> _ Friend Shared Function CreateFont( _ ByVal nHeight As Long, _ ByVal nWidth As Long, _ ByVal nEscapement As Long, _ ByVal nOrientation As Long, _ ByVal fnWeight As Long, _ ByVal IfdwItalic As Long, _ ByVal fdwUnderline As Long, _ ByVal fdwStrikeOut As Long, _ ByVal fdwCharSet As Long, _ ByVal fdwOutputPrecision As Long, _ ByVal fdwClipPrecision As Long, _ ByVal fdwQuality As Long, _ ByVal fdwPitchAndFamily As Long, _ ByVal lpszFace As String) As IntPtr End Function <System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")> Friend Shared Function SelectObject(ByVal hdc As IntPtr, ByVal hgdiobj As IntPtr) As IntPtr End Function <System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")> Friend Shared Function DeleteObject(ByVal hObject As IntPtr) As Long End Function <System.Runtime.InteropServices.DllImportAttribute("user32.dll")> Friend Shared Function DrawText(ByVal hdc As IntPtr, ByVal lpStr As String, ByVal nCount As Integer, ByRef lpRect As API.RECT, ByVal wFormat As Long) As Boolean End Function End Class
<ソース4・構造体> Friend Structure RECT Dim Left As Long Dim Top As Long Dim Right As Long Dim Bottom As Long End Structure <環境> WindowsXP Pro VS2003 VB.NET+.NET Framework 1.1
とりあえずVS2010で実行してみたら、 PInvokeStackImbalance例外が起こった。 PInvoke呼び出し時にスタックをぶっ壊しているらしい。 API関係の宣言をどこか間違えていないか?
>>695 VS2008以降は、以下のようにAPI宣言すると
例外が起きないかもしれません。
DllImport("xxx.dll", CallingConvention = CallingConvention.Cdecl
引数の数を確認しようとして気付いた。何でLongやねん。 64ビット幅で突っ込んでりゃそりゃ壊れるわ。 とりあえず機械的にIntegerに変換したら動くようにはなった。 …….NET1.1だとLongでも通るの?
>>697 ごめんなさい。.NET1.1だとLongで通ってしまいます・・・。
今、調べている途中ですがCreateFontIndirect()に変えたらTrueTypeフォントはうまく描画できるようになりました。
しかし、OpenTypeフォントは「MS Pゴシック」に置き換えられてしまいます・・・。
変更のあったコードを張りなおします。
<API宣言部>
<System.Runtime.InteropServices.DllImportAttribute("gdi32.dll")> _
Friend Shared Function CreateFontIndirect( _
ByRef lpLogFont As LOGFONT) As IntPtr
End Function
<StructLayout(LayoutKind.Sequential, pack:=4)> _
Public Structure LOGFONT
Public lfHeight As Integer
Public lfWidth As Integer
Public lfEscapement As Integer
Public lfOrientation As Integer
Public lfWeight As Integer
Public lfItalic As Byte
Public lfUnderline As Byte
Public lfStrikeOut As Byte
Public lfCharSet As Byte
Public lfOutPrecision As Byte
Public lfClipPrecision As Byte
Public lfQuality As Byte
Public lfPitchAndFamily As Byte
<VBFixedString(LF_FACESIZE), MarshalAs(UnmanagedType.ByValTStr, SizeConst:=LF_FACESIZE)> Public lfFaceName As String
End Structure
<CreateFont()の部分はコメントアウトして以下を追記> stFont = "Amhara reduced" Dim lf As API.LOGFONT With lf .lfHeight = 24 '高さ(ピクセル) .lfWeight = FW_NORMAL .lfCharSet = SHIFTJIS_CHARSET .lfOutPrecision = OUT_DEFAULT_PRECIS .lfClipPrecision = CLIP_DEFAULT_PRECIS .lfQuality = ANTIALIASED_QUALITY .lfPitchAndFamily = DEFAULT_PITCH Or FF_SCRIPT .lfFaceName = stFont End With hFont = API.CreateFontIndirect(lf)
lfCharSetをDEFAULT_CHARSETにすればいい。 ……x64Win7だし、面倒だからMFCで動作確認したけど多分OKなはず。 ただ、正しくフォントが作られた結果、Font.FromHfontで落ちるけどw .NETの描画で使うGDI+はOpenTypeオンリーなフォントが駄目だからなあ。
あるフォルダのすべての画像ファイルを一括名前変換する方法は無限にあるけど どんなカンジのコードがおぬぬめだろぅか
>>701 コードよりまずその質問文をなんとかしなきゃ。
それで他人に意図が伝わると思う感覚が理解できん、
お勧めを言えばいいだけじゃないの?w なるべく.NET Framework上で動くようにするのがお勧め。 違う環境でも動くから。
それ以前に車輪の再発明しようとするのが理解できない それほど特殊なリネームしたいんか?
趣味で作るだけじゃない。
仕事で作るなら余計無駄な時間かけちゃいかんだろ
>>704 おそらくプログラム入門者で、方法がたくさんあるが、
オーソドックスなのはどんな方法なのか?
自分が書いているコードは無駄に処理がかかっているのではないのか?
といった不安感があって質問しているのだと思う。(と俺はエスパーした)
コードの書き方の練習にはSmallBasicがいいだろうが、 クラスライブラリの把握として段階的にこうした方がいいというような 縮小版があった方がいいように思うのだがな。 Expressよりも限定している、みたいな。 ADO.NETにおいてもウィザードで出来たり、コードでも出来たりで、 いろいろ方法があるからどうやっていいのかと思う気持ちになるのは 理解できる。ま、いろいろと方法は準備されているんだよ、というのが モットーでもあるのだがな。
>>700 DEFAULT_CHARSETの件、ありがとうございました。
それでも直らず、CreateFontIndirect()を使うようにしたら
OpenTypeも描画できるようになりました。
色々相談にのって頂き、ありがとうございました。
<OpenTypeも描画するためのコード>
Dim lf As API.LOGFONT
With lf
.lfHeight = iSize * (96 / 72) 'ポイントをピクセルに変換して設定
.lfWeight = FW_NORMAL
.lfCharSet = DEFAULT_CHARSET
.lfOutPrecision = OUT_DEFAULT_PRECIS
.lfClipPrecision = CLIP_DEFAULT_PRECIS
.lfQuality = ANTIALIASED_QUALITY Or PROOF_QUALITY
.lfPitchAndFamily = DEFAULT_PITCH Or FF_SCRIPT
.lfFaceName = stFont
End With
' フォント生成&適用
hFont = API.CreateFontIndirect(lf)
oldFont = API.SelectObject(hdc, hFont)
ひょっとしてVB.NET Expressエディションはコードエディターにブックマークないとか?
ある
オプションとか環境設定探してもないんだけど・・・
コード エディターでの作業中、[ブックマーク] ウィンドウを使用して、 コード中にブックマークを作成できます。 [ブックマーク] ウィンドウは、 [表示] メニューから表示できます。 ブックマークを作成したり、作成したブックマーク間を移動するには、 [テキスト エディター] ツール バーのボタンと [ブックマーク] ウィンドウの上部に設けられたボタンをクリックします。 ブックマーク の追加と削除、有効化と無効化のほか、複数のブックマークをフォルダー として管理することもできます。 一部のコマンドについては、[ブック マーク] ウィンドウのショートカット メニューからアクセスすることも できます。
って探したがブックマークウィンドウ無いな… まあツールバーで作成/削除とジャンプは出来るが
キャストするときって何使ってる? 最強のCtype?
DirectCast
俺もDirectCastだなあ。CTypeは変に空気読まれそうで一寸嫌。 縮小・拡大変換で基本型以外に変換したい時は、 まさにCTypeの出番なんだろうけど。
From1にテキストボックスがあります。 以下のコードのTestを実行した場合にForm1のTextBoxの入力内容が表示される方法として msgbox(From1.TextBox1.Text)とする以外にいい方法を教えてちょ Public Class1 Inherits Form1 Sub Test msgbox(TextBox1.Text) End Sub End Cla
というかなにもしなくても表示されてるんじゃないか
@DataTable1=DataTable2 と ADataTable1=DataTable2.Copy って DataTable1は@もAも結局同じものになるんでしょ?
>>718 msgbox(me.TextBox1.Text)
>>721 クラスの仕様による。ならない場合もあるので、
=で結べばいいというよりも、Aのようにするという
覚え方の方がいいと思う。
If Dt.Rows(i)("RenameO") Is DBNull.Value Then これをヌルヌルじゃなかったらという Notを付けるとしたらみんなならどこに書く? かけそうな場所複数あるけど
>>721 VB5から6になった時に一部のコントロールでデフォルトプロパティが無くなった事が有って
そういうのの省略はしない方が良いって風潮になった。MS製品では。
ヘルプの内容が180度変わってて笑えた。修正する方は笑えなかったけど。
継承が勉強できて自分で作れるようになる本やサイト紹介してください 皆さんは、困った時どんな検索ワードで、vb.netの資料をどこで検索しているのかもお願いいたします。
>>723 VB.NET的には IsNot と言いたい所だが、
もっとVB的な IsDBNull(〜) = False の方が好みだな。
>>725 まずは、VB中学生っていうサイト
継承とか正規表現、データベース操作などになると、VisualBasicの範疇
で学ぼうという意識は持たない方がいいと思う。他の言語を使った書籍などにも
目を通すようにした方がドキュメント量は多かったり、詳しかったりするから。
例えば、javaの方がvb.netよりも歴史が長い分、ドキュメントが多い、となるでしょ?
729 :
デフォルトの名無しさん :2011/12/03(土) 14:04:06.05
VB2008ExpressEditionです。 ビルド後にReleaseフォルダが生成されないのですが、原因は何でしょうか?
>>721-722 DataTableのCopyって新しいDataTable(のインスタンス)作るメソッドじゃないのか?
1はある変数(のインスタンス)を別の変数に入れる
2はCopyメソッドの戻りを変数に入れる
1は同じDataTable、2は(持ってるデータは内容は同じでも)違う(インスタンスの)DataTable
だと思うが
まずインスタンスって概念わかってる?
>>724 そもそもデフォルトプロパティにかかわる質問ではないと思うが
VB.NETでは特定の条件でしかデフォルトプロパティは参照されない
つかVB6でデフォルトプロパティのなくなったコントロールの実例を教えてくれ
漏れの作ったデフォルトプロパティ一覧 ListBoxはItem TextBoxはText したがって Dim S as String = TextBox でおk
出したウンコの自慢をされましても...
>>730 なるほど。
インスタンスが同じものであるか、別にnewしたものであるのかを
考えておく必要があるんでしたね。
まだ、OOP特有の概念を理解していないところがあったので、
勘違いしてました。
説明ありがとうございます。
Me.Text = "abc" とした場合はForm1のタイトルバーがabcになってくれるけど Dim frm1 As New Form1 frm1.Text = "abc" としてインスタンスのフォームでタイトルテキストを変えようとしても変わらないので動作してくれるようにするにはどうすれば
いやそれで変わるから。 何を言ってるんだよ
whay?
既定のインスタンスとfrm1を混合してるんじゃないの
Me.TextでFormのタイトルが変わるってことは、このコードは(どのインスタンスかは解らんが)フォーム上で実行されてる そのフォーム上で下のコード走らせたなら、frm1はNewしてるんだから自分じゃないわな frm1.Showして表示されるフォームのタイトルはちゃんとabcになってるはずだよ つかやっぱり既定のインスタンス復活させたのは失策だよなぁ
そういうことを言い出したらVB.NETの存在自体が間違いになってしまう 旧VBerを甘やかすための言語なのに
Array.Sortでcbaみたいに降順にするにわん?
Array.Sort してから Array.Reverse でお手軽に。
板抱きマウス
containsで大文字小文字を関係なく検索することはできますか?
2段階かけてやっとこ降順とか・・・
そこでLINQですね
>>744 List.Containsの話なら、代わりにExistsを使って好きな一致条件を突っ込む。
listSample.Exists(Function(elem) String.Compare(elem, "Foo", True) = 0)
こんな感じで。
ラムダ式が使えない場合は、ForEachで地道にやるのが無難だろうなあ。
>>732 のコメントすばらしいw
凄く適確で、端的にまとまってて、うけたw
Aルーチンがあり、Bフォームがあります。 Aはサブルーチンで、途中でインプットボックスの代わりにつくったBフォームを呼び出します。 この時、Bフォーム上のテキストボックスに値を入れて、OKボタンを押すとAルーチン側でそ の値を受取り、引き続き、ルーチンを続行したいと思います。 このような場合、どのようにプログラミングしたらよいでしょうか?
>>749 やりたいことが良く見えん。
Aというサブルーチンは、Bフォーム以外のフォームからでも
呼ばれることはあるという設計でやっているの?
それとも、全体がBフォーム内で完結するのが前提の話しなの?
>>749 BにAで受け取りたい値のプロパティを実装
AでB.ShowDialog
AでBのプロパティにアクセス
B に Public Function Syori(引数) As String ShowDialog Return ×× End Fucntion して、A から B.Syori を呼ぶ
ShowDialogは呼び出し側で使った方がよろしいかと
Dim ar As New ArrayList と Dim ar As ArrayList はどう違いますか? 両方使えるみたいですけど・・・
使えてない使えてないw 下はArrayListが入る空箱だろ。上は詰まってるけど。
しかし Dim str As String For Each str In ar Console.WriteLine(str) Next でやるとNewがあっても無くても目的の文字列が出ます
Dim ar As ArrayList Dim str As String For Each str In ar Console.WriteLine(str) Next これで目的の文字列が出るのか。すげぇな
>>758 のPCには毒電波受信機でも付いてるのかw
脳内デバッグ怖い
ちょっと質問まちがえた これが正しい↓ ArrayListはDim ar As New ArrayListと宣言しますが アイテムの登録の際に ar = hogehoge(str) という関数で登録する場合は 宣言部はNewがあっても無くてもどっちでも良いみたいですがどっちが正しいですか?
配列とかリストをループして要素にアクセスするとき、 For文とFor Each文ではどちらが使われていることが多いでしょうか? Dim str() As String = {"aa", "bb", "cc"} For i As Integer = 0 To str.Length - 1 MsgBox(str(i)) Next For Each s As String In str MsgBox(s) Next Dim strList As New List(Of String)(str) For i As Integer = 0 To strList.Count - 1 MsgBox(strList(i)) Next For Each s As String In strList MsgBox(s) Next
俺はなるべくfor eachで書いてる なんとなくわかりやすいからかな
>>762 だからhogehogeってなんだよ!?
>>762 質問が間違ってる
古本屋でいいから初心者向け本一冊入手するとか、初心者サイト読むぐらいしてたら出てこない質問に見える
For Eachの方がよさそうですね。 ループはFor Each で行きますね。
>>762 まず、基本的にクラスはNewしないと使えない。
Dim ar As ArrayList
だけ書いてar.Countとかやるとエラーになる。
ar = hogehoge(str)
とした後でar.Countとかが使えるのは、
hogehogeの中のどこかで New ArrayList をしていて、それを戻り値として返して、arがそれを受け取っているから。
すごく端折って書くとこんな感じになってる
Function hogehoge( str As String ) As ArrayList
Return New ArrayList
End Function
つまりhogehoge内でNewしてくれているので受け取る側ではNewしなくていい。しないのが正解。
というかhogehogeの戻り値をarに代入(あなたの言葉で言うと登録)した時点で
arが上書き(←イメージ的に分かりやすく言うとね)されるのでNewする意味はない。するだけ無駄ァ。
For Each A In B でわざわざAを用意しなけりゃなんないのなんとかならんの?
俺は、For文の方使う派かなぁ… For Each文はあまり使わない 速度差ってあるのかな
>>771 呼び出し側から使われる様に作られているから
呼び出される側で ShowDialog 使っちゃったら Owner とか DialogResult が困っちゃうでしょ
openformsからとあるクラスのフォームを取得したいんだけど、何かいい方法ないかな?
TypeOfとかで、どのクラスのフォームかを判定すればいい。
結局はFor eachで回す感じ?
静的フィールドにでも入れとけ
777 :
デフォルトの名無しさん :2011/12/07(水) 09:43:54.95
質問です 自宅パソコン(win7)にvisualstudio2010express editionをインストールして、 フォームアプリを参考までに作ろうと思ったのですが ソース自体は問題ないはずなんですが、 ビルドエラーになってしまいました。 button1_click() Textbox1.text = datevalue(now) ←こんなものを1つくらい sなんたら.exeがどうたら、みたいなエラーで 通常ビルドに失敗すると、ソースのここでエラーになっているっていうのが 出力されると思うのですが、そういうものもありませんでした。 雑な質問ですみませんが、対策わかるかたいたら教えてください
お客様のなかにエスパーはいらっしゃいませんか?
各行にセミコロンがない、に1票 ここ VB スレなんだが
780 :
デフォルトの名無しさん :2011/12/07(水) 15:23:50.27
C#っすか
セミコロンってタイプしずらいよね アルファベットしかブラインドタッチできんわ
メールの転送を行いたいのですが、外部DLLを使用しないで作るのは難しいことなのでしょうか? メールの送信、受信のサンプルはいっぱいあるけど転送は見当たらなった。
文字列型に変換する時にCStrとToStringの両方を使っているのですが、 今後はどちらか一つの利用にしていこうと考えているのですが、 CStrとToStringではどちらの方が良いと思いますでしょうか?
単純に文字列型にしたいだけならCStr一択。 特定の書式にしたい時は、書式指定付きのToStringが使えることもある。 状況に応じて使い分ければ良いよ。
>>781 セミコロンて記号の中で一番タイプしやすいだろ
>>786 メールの仕組みを理解してなくて申し訳ありません。送受信ができればメールの全文転送はできるものなのですね。
SmtpClientクラスのsendで転送も可能なのでしょうか?
tcpclientで受信してデコードしてアタッチして送信するだけだろが…
まあ二度とやりたいと思わんけどw
>>789 ありがとうございます。勉強になりました。
っていうか転送はメールサーバーで設定できるだろ
受信したメールの内容次第で転送先を変える必要がありまして、メールサーバーでの転送では無理だったので。 outlookの転送だど送信元が変わってまって不便なため作れないかと思ってました。
796 :
794 :2011/12/07(水) 22:55:45.57
レスthx 調べてみる!
797 :
783 :2011/12/07(水) 23:46:54.15
文字列変換はCStrとToStringの両方を利用していこうと思います。 ToStringだけでも勿論いいと思いますね。
キャストと型変換の違いは?
VB.NETだと、拡大変換=型変換、縮小変換=キャストか。 変換にCTypeが必須かどうかで書かれていて、 キャストという言葉自体はVB.NETでは使われていないっぽいけど。
キャストはインスタンスを互換性のある別の型として扱う事。 OOで言う多態性。 型変換は変換処理を通して別のインスタンスを生成すること。 コストの高い処理。 ユーザ入力やネットワークなど、アプリケーション外部との接続時に行うもの。
細かいことは気にスンナよ
Excelのセルから値を読み込んだときにnullかどうかの判定って どうやればいいでしょうか? if xlRange.Value = null then end if みたいなことをしたいのですが。 Dim xlRange As Object xlRange = xlCells(1, 1) ListBox1.Items.Add(xlRange.Value)
If xlRange.Value Is DBNull.Value Then でいけないかい?
DBNull.Value は値だから Is は駄目だろ If xlRange.Value.Equal(DBNull.Value) Then でいけないか?
>>806 ありがとうございます。
If Not xlRange Is Nothing Then
If Not xlRange.value Is Nothing Then
If Not xlRange.value.Equals(DBNull.Value) Then
ListBox1.Items.Add(xlRange.Value)
End If
End If
End If
でいけました。
そこを If Not xlRange Is Nothing AndAlso Not xlRange.value Is Nothing AndAlso Not xlRange.value.Equals(DBNull.Value) Then ListBox1.Items.Add(xlRange.Value) End If とすると美しくてよろしい。
AndAlso = And ?
>>810 ショートサーキット
xlRange IsNot Nothing AndAlso xlRange.Value <> ""
これで十分じゃね?
個人的には、xlRangeにNothingの可能性がある方に違和感があるけど。
そんなのはAssertで自爆しておくべきパターンな気がする。
画像ファイル以外のものにexif情報をつけて保存したら何か不都合は出ますか?
彼女ができたんですが、InsertするとオブジェクトインスタンスがなんちゃらかんちゃらでうまくInsertできません
彼女がNothingなんじゃね
UTF-8 のテキストファイルを開業するには VbLF VbCR VbCRLF どれつかうん?
文字符号化形式と改行文字は無関係
System.Environment.NewLine使っとけば?
819 :
デフォルトの名無しさん :2011/12/09(金) 17:01:03.29
test
test禁止
821 :
デフォルトの名無しさん :2011/12/09(金) 17:38:46.34
testのtest
>>818 CurrentItemIndexChangedイベントでCurrentItemの背景色を変える。
同時に以前のレコードの背景色を戻せば完了。
初めてDataRepeater使ったから大分適当だけど、こんな感じじゃね?
Datarepeaterってなかなか思った通りに動いてくれなくない? 通常のコントロールの感覚で使って大ハマりしたよ。
Datatableから特定のキーワードを検索する方法で、一番効率的な方法を教えて下さい。 ちなみに、大文字小文字は気にしません。
スキームとかソルーションてなに?
>>822 頑張ってみまふ
また報告します
ありがりう
>>826 selectだとupperとかかけられないんですよ
>>824 Linq使え。
もしくは拡張メソッドを使って、AsEnumerable().Select(〜)ってやるとか。
これなら条件を好き放題指定できる。
WhereでString.EqualsにIgnoreCase指定すりゃいいだけじゃないの?
linqって抽出遅くないか?
832 :
. :2011/12/10(土) 22:37:03.01
>>809 が美しいって感性が理解できない
3つぐらいなら、NOTが入り交じった条件式で繋げず、ネストした方が可読性が高かろうよ
いやIsNot使えばいいだけだろ
まあ目糞鼻糞だねw
>>807-809 的なものはメソッドに括りだすのが一番。
それなら、もしAndAlsoで繋げるのが気に入らないなら途中でreturnする手も使える。
VB2008まではC#みたいに任意の改行が出来ない以上、ネストの方が大概読みやすい 行継続文字?なにそれ
CheckedListBoxでn番目のアイテムにチェックがついているかいないか調べるにはどうやればいいですか?
Checkedプロパティを調べる 以上
GetItemCheckedだろ?
でけた(^ー^)d
Now().ToString("yyyy/MM/dd HH:mm:ss")
FolderBrowserDialogを使いたくないのでSaveFileDialogでフォルダを選択したいのですが、 良い方法があったら教えてください
それを良い方法だという人が100人に一人もいるとは思えませんが
VS2010のディレクトリ選択は、 OpenFileDialogをカスタマイズして作ってあるように見えるな。 あれを参考に色々試したら良いんじゃね? ちなみに、VS2010+Open/SaveFileDialog+デバッグは鬼門だから注意w
なんとなくはっちゃけあやよさんを思い出した いやなんとなく
>>844 鬼門って具体的にvs2008までとどう違うの?
フォームを最小化しているときにノーマル状態の時の位置を知るにはどうやれば良いですか?
>>846 家のx64Win7だと、OSを巻き込んで固まる。
サンプル数が少ないから、知らぬ間に特殊な条件を満たしてしまっているとか
あるのかもしれないけど、正直ウンザリする。
VS2010はうちも不安定やな
vs2010はけっかんひんですね。
KeyPressイベントで、数字でないなら、テキストボックスへの入力を不可にするPGについて。 If文を使って数字でないときの処理を、e.Handle=Trueとしていますが、何故Trueなんですか? 無効にするならFalseではないのでしょうか?
Handledな 既に処理済みだからもう処理しなくていいという意味
その説明で、ますます分からなくなりました。
今日は超寒い
細かいことを気にしていたらプログラミングなんぞできない
そう思ったので、トルューにすると暗記ですませました。
e.俺がイベントを処理したからもういい=True -> e.処理済み=True -> e.Handled=True
むしろFalseが無効だと誰が決めた
以下のようなプロシージャーの引数を定数にすることは可能でしょうか? const指定とか出来ないみたいですが・・・ Private Sub Proc(str As String) End Sub
日本語で
>>859 C++から来た人?
VB.NETに引数のconst化は無いんじゃないかなぁ…。少なくとも私は知らない。
Subが始まってから
Const Dim strcopied As String = str
みたいにして、以降はstrcopiedを使うようにすれば回避できない事もないかも。
MonoDevelopでやって確認してみたら、
strcopiedはstrと参照も同じでかつ変更不可になってたのでいけてそげ。
用途に合ってるかどうかは分からないけど。
>>861 レスありがとう。
VBはプロシージャーの引数はConstには出来ないのですね。
863 :
デフォルトの名無しさん :2011/12/15(木) 16:17:38.69
VB6.0から久々にVBに触ります。 最近はWithステートメントって使わないのかな? いろんなサンプル見てるけど、全然見かけない。
全く別の言語なのでVB6なんて忘れましょう
with使えば少しは早くなるかと思ってガンガン使ってたが違うん?
まず関係ない 重いプロパティの場合でもローカル変数に代入すれば同じ
コード打つ速度は微妙に上がってそうな気はする
わざわざローカル変数を宣言しなくて済むのは手軽だったけど、 OptionInfer使えば型推論で簡単に代入できるから、存在が微妙になったな。
ウォッチがし辛いから使わない
FolderBrowserDialogでフォルダを選びたいのですが、 開こうとするパスに沢山のファイルがあると選択可能な状態になるまで時間がかかるので なんとかしたいのですが回避できる方法があったら教えてください。 (ディスクが動き続けて3分くらい砂時計になってしまいます)
>>863 俺は全然使うけどね。
ネストするような使い方しなければ、特に害も無いし読みやすい。
872 :
863 :2011/12/16(金) 00:41:30.45
皆様、お返事ありがとう。 入門書やサイトのサンプルコードに全然使われてないから、 使うと実行速度に問題があったりするんかなぁって思ってたりしました。 自分も使うのが好きなので、ガンガン使っていこうと思います。 ありがとうございました。
へんな使い方するとかえって読み辛くなるからなぁ。
MS公式のサンプルコードって基本的にC#で書いてVBに変換してるからC#に合わせた書き方になる 入門書やサイトはそれ見て書くわけだから
VB6から移ってきました。 フォームのコードウィンドウの上2つのコンボボックスから オブジェクトとイベントとを選ぶと、Private Sub XXX 〜 End Sub が作られると思いますが ソースの途中に挿入される場合と、末尾に挿入される場合とがあります。 たとえば、ボタン_DoubleClick のイベントを生成済みで、新たに Click イベントの中を書きたいとき ボタン_DoubleClick の前に ボタン_Click が入るのが VB6 では普通でしたが、後ろにくっつくことがあります。 手動でコピペして移動させないと、オブジェクトに対するイベントがソースのあちこちに散らばってしまいます。 これは、こんな仕様なんでしょうか? どこかで一括ソートとかかけれるならいいんですが。
>>873 だから変な使い方しなければいいんだよ。
目安としてwithの範囲が一画面に収まる場合のみ使えば問題ない。
>>876 見やすい見辛いはそれでいいかもしれないけど、
ウォッチウインドウで見たい時とか面倒じゃない?
>>878 With hoge
fuga = .piyo
End With
こう書くとデバッグ時にpiyoの値をウオッチウインドウとかイミディエイトウインドウで見たい時に
「hoge」と「.piyo」の2回に分けてコピペとか反転してD&Dとかしなきゃいけないけど、
Dim h = hoge
fuga = h.piyo
こう書いていれば「h.piyo」の部分1発で済む
ってことを言いたかった。
自作メソッドを普通のメソッドと同じように使いたいのですが インスタンスを作成しなくても使えるようにすることが出来ればその方法を教えてください。
ウォッチ必要な時は、その程度の面倒の差なんてどうでもいいなぁ。 あと、ローカル変数作った程度じゃ速度への影響は皆無だとしても、無駄な処理してる感がしてどうにも気持ち悪い。 いちいちローカル変数の定義確認してからじゃないと読めなくなりそう。
>>880 Sharedをつける
Public Shared Sub MyMethod()
End Sub
.NETでは普通のメソッドと自作のメソッドの違いは一切無いし インスタンスを作成しないといけないメソッドのほうが普通
>>880 普通のメソッドのうち、インスタンスを作成してなくても使えるメソッドに「Shared」って付いてないか?
>>879 微妙だなあ....
まあWithなんてめったに使わないからそれほどWithを擁護したいわけじゃないんだけど
VBだとモジュールという糞もあるからな それを普通と言ってるのかもしれない
Sharedつけたらできました! どうもありがとー^^
インスト時に不明なエラーでるけど、どうすればいい
どうしようもない。
>>885 DB系アプリ作っていると、頻繁に使うよ。
無いなら無いで別に困らない 実際用途がだいたい同じC#では検討の結果不要ということで削られたんだし
VBでブロックをでっち上げる事ができるという利点も無くはないかな。 C#だと{}で囲めば済む話なんだけど。
これから何をしようとしたか思い出せない助けて
とりあえず一発抜いとけ
SqlCommand の中身とか、With なしに書きたくない .Parameters.AddWithValue 〜 の羅列
毎度お世話になります。 現在、リストボックスとMDBをつなげて表示している項目がありますが、以下の条件の時にループでリストボックスで 選択されている項目のvaluemember値を取得してデータテーブルに格納したいのですが、うまくいってません。 1.リストボックスにはAテーブルがデータソースとして指定 2.リストボックスのvaluememberにはAテーブルの固定資産IDというフィールドが連結 3.リストボックスのSelection Modeは、MultiSimpleで複数選択出来る状態 この時以下のようなループを描いてます。 For i = 0 To ListBox11.SelectedItems.Count - 1 varTemp = ListBox11.SelectedValue 以下、varTempの値を用意してあるデータテーブルに格納するルーチン Next しかし、1個目に選択した値だけが選択されつづけて、データテーブルにはその固定資産IDが何列も入ってしまい ました。どのようにしたら、リストボックスから複数選択した値をループで取得できるのでしょうか?
どうしてListBox11.SelectedValueがループ毎に変わっていくと思ったのだろ SelectedItems(i) カウンタ不要ならFor Each varTemp In ListBox11.SelectedItems
>>898 両方トライしてみました。
前者の場合、エラーが出て値を取得できませんでした。
エラー:型 'DataRowView' から型 'String' への変換は無効です。
後者の場合、値は最初の1つ目は取れてもその後延々とループしつづけてしまいました。
>>898 考え方を変えてみて以下のコードで実験してみました。
For Each Row3 As DataRowView In ListBox11.SelectedItems
MessageBox.Show(Row3("固定資産ID"))
Next
無事、取得することができました。
煮詰まっていて、おかしな質問してしまい申し訳ありません。
902 :
sage :2011/12/21(水) 11:20:37.78
VB2008ExpressEditionでつくったアプリケーションを、Windows Phone で使えますか?
使えない。専用の開発環境が必要。 一応VBは使えるけどSilverlightだからほとんど互換性ないしサンプルも少ないからC#の方がいいよ。
文字列を半角とか全角に変換する目的のメソッドや関数は StrConv以外にありますか?
.NETの文字列はUnicodeだからそんな概念は存在しない ブイビーでは互換性用に残ってるだけ
Windows APIにLCMapStringって関数があるよ やってることはStrConvとほぼ同じ。ていうかStrConvは内部でLCMapStringを使ってる。 VB.NETから使うメリットは全くないが、 C#ならStrConvの為にMicrosoft.VisualBasicをusingする必要が無くなるかも
ビルドしたときに、Debugフォルダしか作成されず、Releaseフォルダが作成されません。 原因がわかりません。設定方法がまずいんでしょうか?
>>909 releaseフォルダを指定していない
リリースビルドをちゃんとしてるのに生成されないんです
Releaseの構成が、Releaseフォルダを作成する設定になっているとは限らない。
プロジェクトごとに毎回設定する必要があるのですかね? 試してみたら、毎回設定しないといけないようみたいなんですけど。
つかそれVisual Studioの設定の話だし VSのスレ行って聞けよ
dtは配列変数です。 このとき、下に書いてある違いは何でしょうか? 添え字をつける、つけないにより何が変わるのでしょうか? dt = New Integer(2){10,20,30} dt = New Integer( ){10,20,30}
何も変わらない 変更時の手間が増えるだけだから付けなくていい
約数と因数は同じらしいけどなんでわざわざ2つの言葉を用意したん?
>>918 TextBoxのプロパティ - ApplicationSettings - PropertyBinding で
Textにアプリケーション設定をバインディングしておくのが一番楽。
Bindの英単語意味は中学でならわなかった
PropertyBindingで保存されるタイミングは TextChange時か FomrClose時か 謎
TextChangedの方だな。そこら辺の処理はコントロール単位で完結してる。 同じ設定にバインドしたTextBoxを二つ並べれば解り易いな。
このPropatybindingってテキストボックスの規定値としてつかえないかな? Accessだとプロパティで持ってるから、便利でForm load時に規定値を変更したりするケースでは便利なのだが
propaty.... 普通に出来ますよ。 使えないかな、とか書く前に試してから質問したらいいののに。 俺には精神分析の対象としか
VB.NETからローカルデータベースをつくったけど どのような接続文字列を書けばいいのかしら
冬休みオソロシス…
〜ConnectionStringBuilderってあるから、それ使っとけ。
SE出版の独習VB2008は神!
エラーがでちゃう Dim Conn As SqlConnection 'Data Source=|DataDirectory|\Database1.sdf Conn = New SqlConnection("Initial Catalog=Config;Data Source=C:\001\Database1.sdf;Integrated Security=SSPI;") Dim myCmd As SqlCommand myCmd = Conn.CreateCommand myCmd.CommandText = "SELECT * FROM Config" 'Open the connection. Conn.Open()
931 :
デフォルトの名無しさん :2011/12/25(日) 17:01:47.44
Linq使えば
>>625 ローカルって事はテーブルは既にあるんだからそのテーブルに対してLINQでアクセスすればいい
おれ自身10年以上前にVB4で組んだのを最後に1ヶ月ほど前から超久々にVB.NET使い始めた初心者だが
ググル先生だけでもそのぐらいは調べられるぞ
Dim L = From i in DT Where i("Column1")="ggrks"
For A as Integer = 0 to L.Count - 1
MsgBox(L(A)("Column2"))
Next A
これでDTというDataTableからColumn1の値がggrksのレコードを抽出して
MsgBoxで抽出したレコードの中のColumn2の値を表示してくれる
dim構文が良く分かるhpくれ… 初心者だ… 全くと言っていいほど仕組みが分からん かく意味あるのか…
934 :
932 :2011/12/25(日) 21:12:21.62
935 :
932 :2011/12/25(日) 21:16:58.58
初心者だって威張る奴は何教えても聞きゃしないから
dim private ディムとプリベイトはおなじなのかね
なんだ消防か
Dim Cmd As SqlCommand のCmdを使い終わったとすると Cmd.Dispose() を書かなくても良いんだろうか
Disposeは必要でも普通に書いちゃいけません Usingを使ってください
それもどうなの。 いつでもローカルのブロック内の寿命でよいとは限らないよ。 何いってんの。
VB2008で、PostgreSQLにADO.NETで接続は可能ですか?
ありがとうございます。 近々、PostgreSQL始めるんですが、リファレンスブックに、アクセスやオラクルへの接続文は載ってましたが、PostgreSQLがなかったので、心配していたのです。
ゆーじんぐつかうといれこになってめんてなんすせいがさがっちゃうぢゃん Using Conn As SqlConnection Using Cmd As SqlCommand Using なんたら Using 2ch End Using End Using End Using End Using
ああやっぱり馬鹿か using xxx as xxx,yyy as yyy,… end using で済むのに
using使う奴はクビ
バッファ内のバイナリ値を16進数表現の文字列に変換する便利な機能ってあるでしょうか?
BitConverter.ToString
>>925 自分の場合のテンプレートは以下の通り
接続準備
'カレントフォルダのbase.accdbに接続する
Dim cn As OleDb.OleDbConnection = New OleDb.OleDbConnection( _
"provider=Microsoft.ACE.OLEDB.12.0;" _
& "Data Source=" & apppath & "\base.accdb;")
Dim SQLCm As OleDb.OleDbCommand = cn.CreateCommand
テーブル接続
'テーブルの接続および一時データ格納用のデータレコードの準備
dAdp = New OleDb.OleDbDataAdapter("SELECT * FROM " & accdbtable & " WHERE patternid =" & selectptn, cn)
dAdp.Fill(dSet, "a_settings")
dTblasset = dSet.Tables("a_settings")
データテーブルへデータを入れた後に・・・・SQLで流し込む
'インサート用SQL文組み立てと実行
Dim SQL As String = ""
cn.Open()
For Each Row As DataRow In dtbl.Rows
SQL = "INSERT INTO " & accdbrepay & "(patternid, assetid, repayday, repaycost, nendo, assettype) VALUES ("
SQL &= Row("patternid") & ", " 'パターンID
SQL &= "'" & Row("assetid") & "', " '固定資産GUID
SQL &= "'" & Row("repayday") & "', " '減価償却年月日
SQL &= "'" & Row("repaycost") & "', " '減価償却費
SQL &= "'" & Row("nendo") & "', " '年度
SQL &= Row("assettype") '固定資産タイプ
SQL &= ")"
'データベースへ反映
SQLCm.CommandText = SQL
SQLCm.ExecuteNonQuery()
Next
SQL = Nothing
>>924 いろいろ試してみてたのですが、ボキャブラリがなくてぐぐっても探し当てられませんでした。
大変有難うございます。
これで、作成パターン毎にプリセットを変更して規定値を書き換える仕組みを作れます。
ローカルデータベースってなんだべ? .netがDBを持ってるのかい?
>>950 どこの住基システムか知らんが
ひどい点プレだな
パスワードはJUKI/JUKIとか、そーいう風な運用してるところだろ
>>954 何がどう酷いのか良かったらコメントお願いできますか?
まず超初歩のSQLインジェクション
>>956 自分の場合、ローカルの単体アプリとして利用しているケースでも、SQLインジェクション対策
は必要となりますか?
ウェブサービス等では、必要だと考えていますが。
あ、ちなみにこのテンプレはとある計算機のプログラムです。計算して、計算結果をCSVとして
吐き出すことを目的としてます。
>>957 まあ必要ないならいいけど
でもね
・SQLを毎回文字列で組み立ててたらSQLが毎回コンパイルされて遅い
・そのプログラムをウェブサービス化するかもしれない
等考えるとほんのひとてまを惜しむのはどうかと思う
書き捨て一回実行するだけ
とかならいいけど
>>958 なるほど。
人の質問に乗る形で問いてしまいましたが、参考になりました。ありがとうございます。
SQL実行のスピードに関しては確かに現在でも気になってはいます。
減価償却費の計算や借入金償還の計算など、1件240レコード程度を50件程度= 12000件
個数が多くなればそれだけ遅くなる。
SQL組み立てが一番早いと思っていました。
Accessの場合、DAOでフィールドを予め指定で固定化させた上で直接流し込んでいたので、
それほどでもなかったのですが、SQL組み立て以上に早いテーブルへのデータINSERT方法があ
ったりするのでしょうか?
>>957 > 自分の場合、ローカルの単体アプリとして利用しているケースでも、SQLインジェクション対策
> は必要となりますか?
悪意の有無じゃなくて
バグを放置していることに気がついてないのか
個人がローカルで使うシステムならまだしも そんな糞コードに役所がカネ払ってるとか 姉歯設計よりひどい 「インジェクション対策」なんて仕様書に明記されなくても 職業プログラマなら、勝手にやっとくのが当たり前 そこが素人との違いな
>>962 役所というのは意味がわからないのですが?
第一、自分は職業プログラマじゃありませんし、何か誰かと勘違いしてませんか?
>>960 ちょっと探してみます。
ああ、どっかの会社の固定資産台帳の話かい それなら、SQL文を繋げてやればいいじゃん 糞プログラマを雇ってる会社が自業自得の結果になるだけだし
おまいらカリカリしすぎ 風俗でもいってすっきりしてこい
>>964 先程から、勝手な思い込みをし、そして、勝手な解釈をし、挙句には糞プログラマ
と勝手に吠えているあなたは、何様のつもりなのかお聞かせ願えますか?
それともここでは質問者を罵るのがローカルルールってことで?
あんなのを点プレにしてるのなら糞だろ 似たようなコードが書かれてて、辛うじて動いているシステムが目に浮かぶ
うちはSQLインジェクションって言葉を知ってるのいなさそうw なので余裕でSQL文を結合しまくり うぇ
SQL文を結合するほうが、考えないといけないことが増える ’(アポストロフィ)が入ったときの制御とか パラメータにしてエンジンに丸投げがラクでいい
お前らわかったような事言ってるが、テーブル名をパラメータ化する方法あんのか?
テーブル名はアレだが IN (@p1,@p2,@p3・・・) は、もっとスマートにパラメータ化したいね
Declare Function GetPixel Lib "gdi32" (ByVal hdc As IntPtr, ByVal X As Int32, ByVal Y As Int32) As Int32 でのIntの戻り値を効率よくcolor構造体に変換かもしくはRGBそれぞれの値に変換するのはどうやればいいのでしょうか? 本当にど初心者な質問だと思うのですがよろしくお願いします
ビット演算 ColorTranslator.FromWin32
32bitイメージを256色pngで出力する方法ある?
ACCESSのパラメータは今も@じゃなく?をつかうん?
977 :
手 :2011/12/26(月) 22:26:38.57
自分でもよくまだ理解できていない点があります。 以下のようなフローの時には、同時実行違反が発生するのはなぜでしょうか? textbox0.textに手動で値を入力後・・・ (現在テキストボックスにあるデータを一旦保存する) Me.Validate() Me.okekeBindingSource.EndEdit() Me.okekeTableAdapter.Update(Me.Baseset) (ここでウィザードのようなウィンドウを呼び出し値をもらう) me.textbox1.text = ウィザードからの値 (再度保存する) Me.Validate() Me.okekeBindingSource.EndEdit() Me.okekeTableAdapter.Update(Me.Baseset) すると、UpdateCommand云々で同時実行違反と怒られました。 なぜなのでしょうか? ウィザードにはキャンセルのためのロジックがあるので、キャンセルされ た場合には、再度保存という手順を行わないようになっています。
>>975 WPFのPngBitmapDecoder
行き詰りました・・・ 文字列 "F0FF0F" から byte配列 {240, 255, 15} を取得したいのですが 上手く取得する方法を教えてください。 BitConverter のメソッドで可能?
細かい要件がわからんので適当に Dim str = "F0FF0FF" Dim bytes = New Byte(CInt(Math.Floor(str.Length / 2 + 0.5)) - 1) {} For i As Integer = 0 To bytes.Length - 1 Dim len = 2 If (str.Length < i * 2 + len) Then len = 1 End If bytes(i) = Convert.ToByte(str.Substring(i * 2, len), 16) Next
>>981 目的のことができました。
ありがとうございます!
悪いこと言わないからWinFormsでそういうのは諦めろ 地獄だから
まあ、スクロールバーなんか自分で実装してもそれほど手間とも思えんけど... ドラッグしてスクロールも。
>>983 SetScrollInfoとかAPI使うのが簡単じゃない?
WPFコントロールをWinFormsに配置云々は知らない
>WPFコントロールをWinFormsに配置 ElementHostでできるよ 重いから、やるんなら一画面丸ごとくらいの単位の方がいいけど
988 :
983 :2011/12/28(水) 16:54:40.19
ありがとうございます。 やはり、スクロールバーなしでtextboxの中をマウスでスクロール?的な事は不可能ですかね〜〜
PDFみたいに掴みたいの?
Using Conn As System.Data.SqlServerCe.SqlCeConnection End Using どこがまちがってる?
お前の態度が.... 無い物はDisposeしようがないだろ
Usingのつかかたがよーわからん
Dim だとエラーでないにょ Dim Conn As System.Data.SqlServerCe.SqlCeConnection
ローディング中に画像を出したいんだけど、どうすりゃいいの?
>>994 BackgroundWorker を使いなさい
データーリーダーのHasRowsがつかえないデーターベースのばあいに Select 〜 from 〜 Where 〜 = 〜 で行が取得されたかされないかをしらべるにはどーしゅればぁ
Readしてみればいいんじゃない
999 :
983 :2011/12/29(木) 01:06:01.63
1000 :
デフォルトの名無しさん :2011/12/29(木) 04:42:44.18
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。