VB.NET質問スレ (Part8) ..
562:デフォルトの名無しさん
05/01/12 05:33:22
ツールバーをウィンドウから独立させる方法教えてくだちい!
普通フォームの端につくか、枠内で動くかしかできませんよね。
そこをなんとか。
ツールバー自体がアプリの実体に見えるようなものを作りたいんです。
563:デフォルトの名無しさん
05/01/12 10:57:34
>>562
PhotoShopみたいなフローティングのツールバーってこと?
空のフォーム生成してDockしちゃえば?
クリレポがうまく配布できない
あるPCでは動くのにあるPCでは動かない
{XXXXX〜XXXX}のCOMが何とかってエラーが出る
何かファイルが足りないんだろうか
564:プログラマ初心者
05/01/12 11:35:29
.netでversion番号を入力したいんですがどういった方法を用いればよろしいですか?
565:デフォルトの名無しさん
05/01/12 11:38:49
>>565
AssemblyInfo
566:564
05/01/12 12:32:58
>>565
すんません。
参考になりました。
567:デフォルトの名無しさん
05/01/12 15:48:01
フォームに大幅に変更を加え、実行したところ、変更途中のものがビルドされて
出てきて、実際にビルダーで作ったものとは異なる状態で表示されます。
エラーのある状態で実行すると、こうなるのでしょうか?途中経過を見たいので
最新の状態でビルドして画面を見たいのですが、どうすればよいですか?
568:567
05/01/12 16:07:55
すみません、エラー部分に片っ端から ' をつけることで解決しました。
もうひとつ、教えていただきたいのですが、frmAというフォームをそっくりそのままコピーして
同じプロジェクト内でfrmBというフォームを作りたいんですが、どうすればよいのでしょう?
別名で保存しても、プロジェクトからは見えないのですが。
569:デフォルトの名無しさん
05/01/12 16:18:56
>>568
既存項目の追加
570:デフォルトの名無しさん
05/01/12 17:00:06
VB6のDirListBoxを使うにはどうすればいいんですか?
571:デフォルトの名無しさん
05/01/12 17:02:23
URLリンク(www.google.co.jp)
572:570
05/01/12 17:39:28
VB6で作ったプログラムにDirListBoxがあるんですが、これをウイザード
で自動変換すると、NETに上手く変換してくれます。ところが、ツールボックスに
はDIRListBoxが見当たらない。
.NETのデザインエディターでコピーして貼り付けると自動的にDirListBox2が
できます。
ということで、デザインエディターはVB6のDirListBoxもサポートしているわけです。
どうすれば、ツールボックスにDirListBoxを追加できるのかが知りたいのです。
どなたか分かりませんか?
573:デフォルトの名無しさん
05/01/12 17:44:49
ツールボックスで右クリックして
574:デフォルトの名無しさん
05/01/12 17:47:02
571の3つめ辺りにある宇宙仮面のとこに書いてるっての。
575:570
05/01/12 18:06:04
>574
おっーサンクス。でけたー。
帰りにMSに石なげてかえろっと。
576:デフォルトの名無しさん
05/01/12 21:26:19
10秒後とにファイルを読み込むということをしたいんですが
どのようにしたらよいでしょうか?
577:デフォルトの名無しさん
05/01/12 21:27:29
System.Windows.Forms.Timerを使えばいいんじゃない?
578:576
05/01/12 21:56:43
タイマーコントロールをフォームに貼り付ける
その中にファイルを読み込むコード入れればよいんですよね?
でも、ボタンをクリックしたときにタイマーを使ってその処理
をしたいんですがどうすれば?
579:デフォルトの名無しさん
05/01/12 22:00:50
>>578
> でも、ボタンをクリックしたときにタイマーを使ってその処理
> をしたいんですがどうすれば?
ボタンをクリックしたらタイマをスタートさせるという事?
ならその通りにコーディングすればいい。
貼り付けただけじゃタイマはスタートしないぞ。
580:noname
05/01/12 22:34:50
リストボックスに表示されている項目において、マウスでクリックした
項目のテキストを取得するにはどうしたらよいのでしょうか。
例)
リストボックスに、「A」「B」「C」と表示されているとする。
2番目をクリックすると、「B」という文字が取得できる。
サイトをさがしてみたのですが、マウスでクリックした項目が何番目
であるのかを取得する方法はのっていましたが、テキストの取得方法は
のっていませんでしたので、どうしたらよいのか分かりません。(汗
URLリンク(vbdotnet.fc2web.com)
基本的な質問ですみませんが、よろしくお願いします。
581:デフォルトの名無しさん
05/01/12 22:38:24
まあ項目のインデクスからでも取得はできるけどね。
SelectedItemプロパティ。
選択アイテムの文字列なら.ToString()メソッドも。
582:noname
05/01/12 22:45:31
>>581
すばやい回答ありがとうございます!!
助かりました。
583:デフォルトの名無しさん
05/01/12 22:54:19
nprofって日本語対応だれかやってないのかなあ。
パスに日本語が入ってるとエラーが出る。
しかし、ちゃんと動作しても、情報のうまい見方がいまいちよくわからないのであった。
devpartnerなんかはわかりやすいけど、50万円か……
URLリンク(www.atmarkit.co.jp)
ANTS Profilerってのも見やすそうだけど、$295... URLリンク(www.red-gate.com)
584:デフォルトの名無しさん
05/01/12 23:49:25
質問よろしいでしょうか
Web上を探し回ってUSBカメラの映像をフォーム上に表示させることには成功しました。
VFWとDirectShowを使ったやり方、表示はどちらもうまくいったのですが、DirectShow
のほうで、スナップショットの扱いがどうもうまくいきません。
スナップショットを静止画として別フォームに表示、ではなく、それをBMPかJPGとして
保存したいのです。
VFWではそれをクリップボードに取り込んだうえ、Doodle2というフリーのdllを使って
BMPに出力できたのですが、DirectShowでそのやり方を無理にとると、モニター全体の
PrintScreen状態の画像になってしまいます(欲しい画像は隅にちょこっとうつってる
だけ。VFWでは画像部分だけが取れた)
やりたいことはすでにVFWで実現できており、これは後学のためにという程度の
質問なので、誰かひまなとき教えてください。
585:デフォルトの名無しさん
05/01/13 00:04:52
ようわからんが、取りあえずそれっぽいところ
URLリンク(www.google.com)
URLリンク(mobiquitous.com)
586:デフォルトの名無しさん
05/01/13 00:34:11
>>585さん
ありがとうございます
後のほうのリンク、内容はすごく面白そうなんですけど、読解できないのが
なさけない。
Cってのはこういう書き方をする言語だったんですか、とか、新たな発見を
してしまうレベルの素人だったりするので・・・
587:デフォルトの名無しさん
05/01/13 12:50:48
昨日書いた者ですが、タイマーが作動してないのですが・・・
588:デフォルトの名無しさん
05/01/13 12:56:00
そうか頑張れ。
真面目な話それだけじゃ何も分からないのでせめて
・何をどうしたか
・例外が出るならどんな例外か
・できれば関連部分のコード
を書かないと答えようがないよ。
589:587
05/01/13 13:41:58
とりあえずタイマーが動いてるかどうか見たいんで
ラベルに、1秒ごとに表示させたいのですが。
とりあえずタイマー貼り付けてそのなかに
i = i + 1
Label1.Text = i
iは、タイマーの外で宣言してます
としたのですがラベルが0のまま動きません・・・
590:デフォルトの名無しさん
05/01/13 13:43:21
VB.NETで作ったものって、VB6で動かせますか?
591:デフォルトの名無しさん
05/01/13 13:50:33
>>589
で、その貼り付けたタイマのインスタンスに.Start()はしたの?
って言うところから質問を一問一答で繰り返していくというのは掲示板というシステム上歓迎できない。
>>590
VB6で動かすという意味が分からないのだが。
VB.NETで作ったものは.NET Frameworkが必要だよ。
//統合開発環境の名前と言語の名前が同じだとややこしいな。
592:デフォルトの名無しさん
05/01/13 14:17:23
してないです。どうするんですか?
593:デフォルトの名無しさん
05/01/13 14:36:03
>>592
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Static i As Integer
i += 1
Label1.Text = Convert.ToString(i)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Timer1.Interval = 1000
Timer1.Start()
End Sub
594:デフォルトの名無しさん
05/01/13 14:51:11
>>593
タイマーの定義の部分を見せてください。昨日の流れから別のタイマーに代えたりしてませんか?
Label1にアクセスしてますからSystem.Windows.Forms.Timer以外では問題が出るはずです。
595:デフォルトの名無しさん
05/01/13 15:26:23
なんかびみょーに話がずれてないか?
596:デフォルトの名無しさん
05/01/13 15:49:12
うん、始めから話が変だな。
大体System.Windows.Forms.Timerだったら
Start() Stop() でも Enableでもどちらでも
スタート&ストップ出来るじゃん。
597:デフォルトの名無しさん
05/01/13 16:07:04
はじめのコードはタイマーより別のところが突っ込みどころ満載だったんだよね。
Sub threadMain() <−ワーカースレッドぽかったり
Do
thread1.Sleep(100) <−なんか寝てたり
If Now.Second = 0 Then <− 意味わかんなかったり
Timer1.Enabled = True
Timer1.Interval = 100
Timer1.Start()
picBar.Height = 500
End If
Loop
598:デフォルトの名無しさん
05/01/13 16:28:26
配列をリッチテキストボックス(もしくは、ラベルかテキストボックス)に1行ずついれたいのですが、
どうやればできるでしょうか?
配列はstring型で10個です。配列の0〜9を一行ずつ表示させたいです。
調べましたが、簡単すぎるのかヒットしませんでした。お願いします。
599:デフォルトの名無しさん
05/01/13 16:37:05
String.Join()だな。
600:デフォルトの名無しさん
05/01/13 16:38:41
>>598
改行を入れたいって話かな?だったら改行文字で区切ればよい。
VBだとvbCrLfって定数が使えたはず。
601:デフォルトの名無しさん
05/01/13 16:39:10
一番簡単なのはRichTextBoxのLinesプロパティにそのまま文字列配列を代入する事。
ただし上書きになる。
602:599
05/01/13 16:47:15
1番取った記念にサンプル乗っけちゃお。
Dim str() As String = {"aa", "bb", "cc", "dd", "ee", "ff", "gg", "hh", "ii", "jj"}
TextBox1.Text = String.Join(vbCrLf, str)
603:ディフォルトの名無しさん
05/01/13 20:51:19
ADO.NETのDataSetの使い方がいまいち分からないです。。
ADOでの、ADODB.RecordsetでopenしてFilterでデータをしぼりこんで、
movenextしながらデータ取得。という手順をやりたいんですけど、
DataSetではFilterにあたるものがみあたりません。。。
どうしたらよいのでしょうか?
よろしくお願いいたします。
604:デフォルトの名無しさん
05/01/13 21:00:21
>597
なんで意味わかんないの?
605:デフォルトの名無しさん
05/01/13 21:30:34
>>603
DataSetは、端的に言えばDataTableのコレクションとそれぞれのDataTableのリレーションを管理するためのクラス。
データそのものはDataTableの中に入ってる。
DataTableのSelectメソッドが目的のものだろうね。
606:デフォルトの名無しさん
05/01/13 21:46:55
>>603
System.Data.DataViewがそれにあたるのだが、それ以前のところで悩んでそうですね。
System.Data.DataSetは高機能のデータトランスファオブジェクトであって、
データベースのテーブルとは直接の関係はないのですよ。
読み込んだデータをまとめて溜め込んでおいたり、持ち運んだりするためのものなのです。
unixとlinuxの間をみるといいことがあるかも、それからキーボードのuからqを続けて見る。
607:ディフォルトの名無しさん
05/01/13 21:55:31
>>605>>606
ADO.NETは、リファレンスとか読もうとしても、
情報量が膨大でどこを読めばいいのか良く分からなかった
ところもあったので、読み方の糸口が見つかった気がします。
早速調べてみます。
ありがとうございます。
608:デフォルトの名無しさん
05/01/13 23:12:37
ついでに便乗質問。
Datatable.Select()は便利だけど、戻り値がDatarow()になる。
ソートのために使うときなんか、結果はDatatableで欲しいんだけど、
Datarow()をFor Eachかなんかで回して1行ずつDatatableを作り直すしかないの?
ADO.NET 2.0だと、Dataview.ToTable()ってのが使えるみたいなんだけど……。
あと。
SQLを発行してDatatableを作ったあと、そのテーブルに対して操作を行ないました。
その結果、いっぱい重複行ができちゃったのでDISTINCTしたいんだけど、そういうのはさくっと簡単には書けない?
とりあえず、Datatable.Copy()で同じスキーマの空テーブルを作り、全ColumnをUniqueにして、
Tryで例外無視してむりやり全行ぶっこんでみたい。遅い。
全Columnを複合主キーにして、Findできなければ追加、ってやったらちょっとマシになった。
もうちょいスマートに書けないのかなぁ
609:デフォルトの名無しさん
05/01/13 23:20:07
あ、テーブルに対して操作したのは、単にちょっと便利な配列として使ってただけで、
DBに書き戻すためじゃないからね。
だからキーやら行数やらを変えたりしても問題なし。
610:デフォルトの名無しさん
05/01/13 23:33:36
初めまして。学生ですが最近企業実践に行っている者です。
JavaとかPHPやPerlなどのWebブラウザ向けの言語は多少かじって
いるのですが、企業実践に行っている会社でVB.netをやることになって
しまい、いろいろ分からないところがあるので教えてください。
System.IO.StreamReaderとか言うのを使い、テキストファイルから
一行ずつ読み込んで、テキストボックスなどに出力し、また次の行を
読み込んで出力するみたいのを作らなきゃダメなんですが、ファイル
の終わりまで(EOF)行ったらファイルの先頭からまた一行読み込んで
出力するようにしてくれと言われました。
つまり、OpenFileDialogで選んだファイルを延々と一行出力しEOFになったら
また一行目から出力するものにしなきゃだめらしいです。
んで、私はファイルポインタをファイルの先頭に戻すやり方が良くわかりません。
seekメソッドとかそれらしきモノはあったのですがいかんせんVB.netに
慣れていないので使いかたがよく分かりません。
自分でも説明が下手だと分かるくらい駄文で申し訳ないのですが、真剣に困っています。
どなたか分かる方がいらっしゃいましたらやり方を教えていただけないでしょうか?
611:デフォルトの名無しさん
05/01/13 23:35:46
一旦クローズして開き直し。
……ところでその仕様じゃ無限ループにならないのか。
612:610
05/01/13 23:38:06
無限ループになりますが、いいらしいです。
タイマーイベントをかまし何秒間に一回出力、それを繰り返すモノ
が作れればいいらしいです。
613:デフォルトの名無しさん
05/01/13 23:43:27
LAN内の共有フォルダの一覧を取得するには、どうしたらいいか誰か教えてください。
最悪の場合、VB.NETじゃなくても構いません。あたりがつけば自分でも調べますので
614:610
05/01/13 23:53:51
>>一旦クローズして開き直し。
>>……ところでその仕様じゃ無限ループにならないのか。
開き直すときにまたOpenFileDialogを使わずに継続して
開きたいのですが、何かいい方法とかソースはないでしょうか?
ほんと質問してばっかで申し訳ありませんがよろしくお願いします。
615:デフォルトの名無しさん
05/01/13 23:55:36
>>613
DOSでNET VIEW
616:デフォルトの名無しさん
05/01/13 23:58:54
>>613
URLリンク(www.gdncom.jp)
>>614
ファイルのパスをどっかに保存しておけば良いだけだろ。
617:デフォルトの名無しさん
05/01/14 00:00:34
>>610
A:
(処理)
goto A
でいいんじゃないの?
618:613
05/01/14 00:12:53
>>615,616
レスありがとうございました。本当に助かりました。
619:デフォルトの名無しさん
05/01/14 13:09:45
>>610
全く関係ないが
久々にまともな日本語を読んだ気がする
620:598
05/01/14 13:59:36
>>599さん
ありがとうございます。joinを使うとできました。
>>600さん
改行文字で区切るっていうのがわかりません。すいません。
>>601さん
ファイルから呼び出して使うので無理でした。
621:デフォルトの名無しさん
05/01/14 14:35:12
Sub threadMain()
Do
thread1.Sleep(100) <−なんか寝てたり
If Now.Second = 0 Then <− 意味わかんなかったり
Timer1.Interval = 100
Timer1.Start()
picBar.Height = 500
End If
Loop
この説明が気になります。これは1分に一回Timer1を起動するものですね。
>thread1.Sleep(100) <−なんか寝てたり
この行はあった方がいいのでしょうか? それとも何かまずいのですか。
意図としては、
Now.Second = 0 のチエックは、常時チェックすると
CPUのロスになるのでSleepしています。ただし1秒以上スリープすると
最悪0をチエックできないタイミングが発生します。
本当は thread1.Sleep(990)でも十分だと思いますが、判定中に長い処理が
割り込んだ場合、10msecを超える場合があるかもしれません。それで100msec
にしています。
しかしこれでも、900msec以上も時間がかかる割り込みが入ると問題があります。
I/O制御ですので一回でも0の判定をミスするとまずいのですが、大丈夫でしょうか?
622:デフォルトの名無しさん
05/01/14 14:39:05
質問よろしいでしょうか。
指定したHTMLタグを抽出する.NETのクラスライブラリはありますか。
一応自分で探しましたが見つける事ができなかったので
よろしくお願いします。
623:デフォルトの名無しさん
05/01/14 14:50:56
>>621
なんていうか、泥の台の上で彫刻を作ろうとしている感じだ。
まず一から整理し直して、「なにをするのにこうした、しかしこれこれでうまくいかない」をはっきりさせるべき。
624:デフォルトの名無しさん
05/01/14 15:00:41
>>621
ワーカスレッドから、Windows.Forms.Timerの操作はしてはいけない。
正常動作する保証はないし、たぶん正常に動作しない。
picBarが Windows.Forms.Control の類だとすると、同じくワーカスレッドからの操作はしてはいけない。
正常動作する保証はない。正常に動作することもある。
そもそもTimer1のイベントハンドラはUIスレッドと同期的にしか実行されないわけだから、
フォームにTimer2でも置いて1分毎にTimer1.Start()でもすれば十分。
625:デフォルトの名無しさん
05/01/14 15:12:12
フォームのアイコンを非表示にする方法はありますか?
探しても見つかりませんでした。
626:デフォルトの名無しさん
05/01/14 15:41:39
フォームのアイコンってのが、何を示しているのかわからん。
フォームタイトルの左にある小アイコンのことか?
コンパイル時に適用される既定のアイコンのことか?
フォーム上にPictureBoxか何かで貼り付けたアイコンのことか?
627:デフォルトの名無しさん
05/01/14 15:42:45
>>626
>フォームタイトルの左にある小アイコン
説明が足りませんでしたそれです。
628:598
05/01/14 15:47:12
またわからないことがありました。
Dim mySR As New StreamReader(a.txt)(仮)としてファイルを読み出しました。
Dim mystring As String
Dim name(), rank(), ten() As String
Dim i As Integer = 0
mystring = mySR.ReadLine()
rank = Split(mystring, ",")
ten(i) = rank(1)
name(i) = rank(0)
ファイルの中身は
あ,47
い,92
う,39
といった感じです。これを実行させると
ten(i) = rank(1)の部分で
オブジェクト参照がオブジェクト インスタンスに設定されていません。
と表示されます。
rankの値は1が「47」となっています。0は「あ」です。
rank(0)とrank(1)をそのままlabel.textに入れると表示はされます。
点と名前を分割してファイルから読み出し配列にしたいのですが、なんとかなりますでしょうか?
ながったらしくなってすみません。お願いします。
629:デフォルトの名無しさん
05/01/14 15:56:23
配列もオブジェクトなのでNewが必要。
が宣言時に要素数を指定する事でNewは省略できる。
Splitしたのを入れるrankはSplit内で配列が初期化されているからこちら側でどうこうする必要は無し。
Dim name(1) As Stringとか書けばいいわけだな。
630:デフォルトの名無しさん
05/01/14 15:58:48
省略というかそもそもVBでは配列はNewを使わないけどな。概念的にはともかく。
631:598
05/01/14 16:17:45
>>629-630さん
すばやいレスありがとうございます。
要素数をいれることでできました。
632:デフォルトの名無しさん
05/01/14 16:46:31
>>628
前の方にもあったが
ten(i) = rank(1)
↓
Redim ten(i)
ten(i) = rank(1)
こう変えてやってもできる。
633:デフォルトの名無しさん
05/01/14 16:49:53
初めて書き込みます。VB6ではbasモジュールで宣言すればよかったグローバル変数ですが、
VB.NET 2003でグローバル変数を宣言するには、どうすればいいのでしょうか。
ヘルプや参考書にも載っていなくて・・・。
よろしくお願いいたします。
634:デフォルトの名無しさん
05/01/14 17:03:33
>>633
同じだよ
635:621
05/01/14 17:11:08
>624
>ワーカスレッドから、Windows.Forms.Timerの操作はしてはいけない。
>正常動作する保証はないし、たぶん正常に動作しない。
そうでしたね。上で指摘いただいてました。すいません。
>picBarが Windows.Forms.Control の類だとすると、同じくワーカスレッドからの操作はしてはいけない。
>正常動作する保証はない。正常に動作することもある。
そうなんですか? それではthreadの中で何が動作可能なのでしょうか?
たとえばNow.Second=0のチェックは問題ありませんか?
DIM I as Integer
I=I+1とかはOKですよね。Iが保証されなくてSleepから復帰すると時々11から50
にJumpしてしまうなんてことはないですよね。
問題となるのはContorolと名のつくもの全部ですか?
636:621
05/01/14 17:13:40
>まず一から整理し直して、「なにをするのにこうした、しかしこれこれで
>うまくいかない」をはっきりさせるべき。
あんましはっきりしませんが。
>なにをする
thread内のdo loop内でNow.Second=0のチエックをしたい。
>こうした
リスト参照
>しかしこれこれでうまくいかない
疑問がある。
1)threadないのDoLoopの1loopの時間保証があるか?
確認する方法はあるか?
2)そのた色色
637:デフォルトの名無しさん
05/01/14 17:16:57
>>635
申し訳ないけれども、もう少し・・・ではなくもっとちゃんとドキュメントを読んだほうがいいような気がします。
URLリンク(www.microsoft.com)
難しげな用語も出てくるけど、無視しないでちゃんと読んでみてください。
こういうちゃんとしたドキュメントを無視して誰かに「もっと簡単な説明」を求めても、
もっといい加減で不適切な説明しか得られないと思います。
638:デフォルトの名無しさん
05/01/14 17:20:13
もっと根元的なところの話だがね >なにをする
>>552のコードなら、わざわざスレッドを用意する必然性が全くない。
picBar.Height-1を行うタイマとpicBar.Height = 500を行うタイマの2つを用意すれば済む話。
//1つでも済むかもね。
639:621
05/01/14 17:31:35
>637
>こういうちゃんとしたドキュメントを無視して誰かに「もっと簡単な説明」を求めても、
>もっといい加減で不適切な説明しか得られないと思います。
ご指摘ありがとうございます。チラッと読みかけましたがかなり解りにくそうですね。
他の参考書を探してみます。
とりあえずの考え方として、
threadないでは使ってはいけないものがあるのですね。
キーワードはthreadSafeという言葉でしょうか?
ビルドする時になにかスイッチの設定をするとthreadSafeでないものをthread内部で使うと
ワーニングがでるのでしょうか?
なにか確認する方法はないですか?
640:デフォルトの名無しさん
05/01/14 17:46:28
C♯相談室 Part20(スレリンク(tech板))の
659から同じような話題で盛り上がってるから参考にどうぞ。
676にワーカスレッドの使い方のサンプルコードがあります。C#だけどVB.NETでも
考え方はさほど変わらないから見てみるといいです。
とりあえずワーカースレッドから使えないのはSystem.Windows.Forms配下のオブ
ジェクトと思ってれば間違いないです。
641:621
05/01/14 18:27:54
>640
ありがとうございます。確認してみます。
少し読んでみましたが、色々と問題があるみたいですね。
642:デフォルトの名無しさん
05/01/14 20:47:59
>619
自演乙
643:デフォルトの名無しさん
05/01/14 22:25:01
>>642
俺の日本語がおかしいことに気がつかないのか
644:621
05/01/15 00:14:24
>>552のコードなら、わざわざスレッドを用意する必然性が全くない。
>picBar.Height-1を行うタイマとpicBar.Height = 500を行うタイマの2つを用意すれば済む話。
>//1つでも済むかもね。
そうですね。問題があるときに回避する手立ては重要です。しかし、スレッドぐらい
まともに動いてもよいと思いませんか?
「まともに」と言うのは、thread内で動作が保証されないものがあるなら、コンパイル
時にエラーを出すなり、注意をだしてもいいではないですか。
しごく、当たり前のことだと思いますが。
645:デフォルトの名無しさん
05/01/15 00:22:50
ライブラリの仕様や制限をコンパイルエラーに出来るかボケ
646:621
05/01/15 00:39:30
>ライブラリの仕様や制限をコンパイルエラーに出来るかボケ
ライブラリの仕様の制限を判断できればよいだけです。
方法はいくらでもあります。ライブラリの先頭に「できるかボケ」と入れとけは
OK。
ましてVBなら勝手に仕様を作ってるわけだから言語仕様に組み込むことさえできる。
647:デフォルトの名無しさん
05/01/15 00:59:24
マルチスレッドのサンプルプログラムがきまってコンソールアプリなのは
この制限のため。System.Console系は複数スレッド共有できます。
648:デフォルトの名無しさん
05/01/15 02:29:18
ライブラリの先頭ってどこだ。
ライブラリのヘルプには書いてあるが。
※分かりにくいのは確かなのでもっと分かりやすいとこに書いといて欲しいのは事実だが。
ついでだがThread内からは使えないと言う意味不明の理解は正しておく事をお奨めする。
649:デフォルトの名無しさん
05/01/15 04:14:40
VBの人って何でこんなにレベル低いの?
650:デフォルトの名無しさん
05/01/15 05:24:47
>649
2ちゃん全体がそうだよ。
651:デフォルトの名無しさん
05/01/15 07:03:13
>>625
だれもわかんないか
652:デフォルトの名無しさん
05/01/15 07:22:04
>651
どこをどう探したか書かないと誰も答えてくれないよ。
653:デフォルトの名無しさん
05/01/15 07:27:11
>651
ただのネタだと思って普通にスルーしてたけど、難しいのかと
思って今やってみたら1分でできたよ。
でも>651みたいな書き込みしちゃー、もう誰も教えてくれないわな。
残念だったね。
654:デフォルトの名無しさん
05/01/15 09:28:53
InstallShieldの質問はここでしてよいでしょうか。
655:633
05/01/15 10:28:06
>>634
ソリューションエクスプローラ見ても、basモジュールはありませんでした。また、ヘルプでbasモジュールで検索かけても
basモジュール自体については何も書かれていません。質問を変えます。basモジュールを作成するには
℃の様にすればよいのでしょうか??何度もすみません。
656:621
05/01/15 10:49:25
>マルチスレッドのサンプルプログラムがきまってコンソールアプリなのは
>この制限のため。System.Console系は複数スレッド共有できます。
そうなんですか? それは無茶苦茶制限ですね。
Console.Write("hello")くらいしかできないとしたら寂しいかぎりですよ。
System.Objectの派生クラスで
OK... System.Console
NG... System.Windows
その他不明
これがMSの公式見解ですかね? 実際に使ってみないと解らないので経験則で
判断してほしいってことでしょうか?
しかし「任意のスレッドから安全に呼び出すことができる関数として、コントロールには、
InvokeRequired、Invoke、BeginInvoke、EndInvoke、および CreateGraphics の 5
つがあります。ほかのメソッドを呼び出す場合は、Invoke のメソッドの 1 つ
を使用します。」
とありますので、Invokeを使えば、System.Windows.Formsも問題ないと
いうことらしいですね。
657:621
05/01/15 10:55:19
>ライブラリのヘルプには書いてあるが。
どこにかいてあるんですか?
>ついでだがThread内からは使えないと言う意味不明の理解は正しておく事をお奨めする。
解りません。おしえてください。お願いします。
「threadサブルーチン内でコントロールにアクセスすると変な挙動を示す。」では
だめ?
そもそも必ず誤動作するのにコンパイラエラーがなぜでないのかが不思議です。
658:最凶VB厨房
05/01/15 11:06:51
>>621
ウザイ
659:最凶VB厨房
05/01/15 11:25:59
>>622
System.Text.RegularExpressions
660:デフォルトの名無しさん
05/01/15 11:31:44
まぁ、621 が馬鹿なのはおいておいても、せっかく属性があるんだから、
スレッドセーフかどうかを示す属性があってもいいな。
661:デフォルトの名無しさん
05/01/15 11:33:25
>>655
.bas も .vb に置き換わってる。ということで、.bas モジュールを作成する
ことは不可能。.vb で .bas 相当のものを作ればいい。
662:デフォルトの名無しさん
05/01/15 13:19:06
ある一定時間ごとに、ファイルを読み込みたいのですが、
ただ、まだ読み込みたいファイルは存在せず、作成されるまで
数秒おきに読み込みを行い、読み込みに成功したら
ループを抜け出すというものを作りたいのですが
ループの中をうまく作れません。
とりあえず、countという変数を5秒ごとに1増えるというよう
にしました。
663:デフォルトの名無しさん
05/01/15 13:29:25
>>655
ここで書き込んでる連中もC#中心に使ってるやつらはたまに知らないことがあるんで正解を
書いとこう。項目の追加でクラスというのとモジュールというのがあるだろう。
どっちも拡張子は.vbだがモジュールのほうはModule Module1 - End Moduleのブロックが出
てくるだろう。それがBASにあたるわけで、ここでPublicにしたものは他のクラスからその
まま使える。モジュールで定義したものはModule1.の修飾も省略できる。
Public NotInheritable Class GConst
Private Sub New()
End Sub
Shared Sub New()
TESTCONST = "Hello"
End Sub
Public Shared ReadOnly TESTCONST As String
End Class
こういう得体の知れないコードを書いてるやつがいたら間違いなくC#かJava厨なので気をつけろ。
おれも実は最近までこうやってたよぉ〜〜
664:デフォルトの名無しさん
05/01/15 13:51:25
>663
脳内乙。
665:デフォルトの名無しさん
05/01/15 13:54:32
サービスに登録するにはどうすればいいのでしょうか。
666:デフォルトの名無しさん
05/01/15 14:26:55
URLリンク(www.microsoft.com)
667:デフォルトの名無しさん
05/01/15 14:45:52
>666
ありがとう。
668:デフォルトの名無しさん
05/01/15 14:52:04
>>633
おしい、Imports プロジェクト名.GConst をほかのモジュールの先頭に入れれば完璧。
>>664 乙厨? 乙であります。 >>430 >>642と同一犯かなアンカーの付け方が一緒。
他でいじめられたんだろうな。
669:668
05/01/15 14:55:41
上記の>633は >>663 のミスです
670:デフォルトの名無しさん
05/01/15 15:08:32
>668
俺のアンカーの付け方って特殊?
>100 か >>100 の2通りあるだけだと思うんだけど。
自分が >>100 だから俺を特殊と言ってるの?
671:670
05/01/15 15:10:08
ちなみに430や642は俺じゃないよ。
672:デフォルトの名無しさん
05/01/15 15:11:06
>>668
乙厨に文句言うのはいいんだけど、実際君の書き込みが脳内だから
いまいち説得力ないねw
673:デフォルトの名無しさん
05/01/15 15:13:15
だれか662よろしくお願いします
674:デフォルトの名無しさん
05/01/15 15:16:58
>>662
書き込みの続きがあるのかと待ってたのですけど
675:デフォルトの名無しさん
05/01/15 15:18:56
>>662
タイマーとDIRを使って、ファイルが存在するか調べる。
ファイルが存在すれば、ファイルの読み込みを行い、タイマーを止める。
つーやり方でいいんじゃないの?
676:デフォルトの名無しさん
05/01/15 15:19:33
>>674
スマソ。あれだけです。
よろしくお願いします
677:デフォルトの名無しさん
05/01/15 15:24:33
>>675
ループでやってる以上、存在しない間は他の処理をしてはいけないんじゃないか?
しらんけど。
678:663っす
05/01/15 15:27:01
663の脳内書き込みは俺なんだが、匿名版は誰が書いてるかわからんからややこしいな。
ここもIDを出して欲しいよ。書き方はあれだがうそは書いてないつもりだぞ、脳内な部分は
指摘してくれ。受けてたつぞい。
679:デフォルトの名無しさん
05/01/15 15:35:37
>>675
ファイルが存在しなかったら
またループさせるとこが、うまく作れないんですorz
680:最凶VB厨房
05/01/15 15:38:28
While Not File.Exists("読み込みたいファイル")
End While
681:& ◆R7PNoCmXUc
05/01/15 15:49:05
インスタンス変数でフラグを持たせて処理が必要ならONにします。
同時にタイマーは数分おき切り替えし起動にします。
タイマーの処理ルーチン内で
フラグチェックOFFならルーチン終了
ファイルの存在チェック、無いならルーチン終了
読み込み、エラーならルーチン終了。読まなかったことに。
ファイルを処理済み用の名前に改名、エラーならルーチン終了。読まなかったことに(できるか??)
フラグをOFFにしてルーチン終了
タイマーは回り続ける。
ファイルは書き込み途中で読みにいくことがあるから、書き込んでから
処理対象の名前にリネームかけてもらうとよいです。
682:デフォルトの名無しさん
05/01/15 15:51:14
>>679
>>680のやり方でいいとおもうけど、数秒おきにしたいなら
While Not File.Exists("読み込みたいファイル")
i = DateTime.Now.Second + "待機したい秒数"
While DateTime.Now.Second < i
End While
End While
683:デフォルトの名無しさん
05/01/15 15:54:48
へんなコテハンになってしまった orz
ロジックがわからないのか、具体的な命令の書き方がわからないのか
教えてください。
誤)切り替えし 正)繰り返し
684:デフォルトの名無しさん
05/01/15 15:58:33
待機用のループには是非ともThread.Sleepを入れていただきたい。
685:デフォルトの名無しさん
05/01/15 16:00:39
タイマーでやれって。
686:デフォルトの名無しさん
05/01/15 16:02:21
>>683
具体的な命令の書き方です
687:662
05/01/15 16:06:24
もしかして、ループとかタイマーとか使わなくても
ファイルが作成されたら、イベント発生させるような
ものがVB.NETにあったりするんですか?
688:デフォルトの名無しさん
05/01/15 16:11:35
System.IO.FileSystemWatcherクラスがそうだが、NT系限定。
689:662
05/01/15 16:17:29
NT系限定とは??
690:デフォルトの名無しさん
05/01/15 16:27:14
>>689
FileSystemWatcherクラスのヘルプ嫁。
691:デフォルトの名無しさん
05/01/15 16:36:43
マニュアル読んでもよくわからないのは FileSystemWatcherが
今回の案件に使えるかどうかですね。今ひとつ使いどころが不明。
イベントがもれたり、逆に多すぎたりがないか不安ですね。
素直にタイマーでポーリングのほうが簡単じゃないかな。
692:デフォルトの名無しさん
05/01/15 17:04:05
>>680
こんなやり方したらメッセージループが固まらないのか?それともそれでも無問題?
まあ無問題にしてもSleep(1)は是非入れないとな。
693:デフォルトの名無しさん
05/01/15 17:36:43
予定のファイルがなかなかこなかったらずっとループしてますね。
ワーカースレッドやSystem.Timers.TimerならSleepを入れればいいかもしれ
ませんが、Windows.Forms.Timerだと画面が固まってしまいます。
それにマルチスレッドだとちょっと前の論争が復活しそうで怖い。
694:デフォルトの名無しさん
05/01/15 17:36:49
Thread.Sleep(5000)とすれば、タイマいらないんじゃないか?
695:デフォルトの名無しさん
05/01/15 17:55:53
>>674
どんな続きを期待したの?
>>678
アッヒャッヒャッヒャッヒャッヒャ。腹いてー!!こいつおもしれーよ!!
今度から名前欄に「僕はピエロ」って書いてくれ!
アーーーーッヒャッヒャッヒャッヒャ!!
696:最凶VB厨房
05/01/15 17:59:20
>>695
ワロタ
が、放置プレイよろ
697:デフォルトの名無しさん
05/01/15 18:01:55
>>696
え?どこか面白かった?
698:僕はピエロ
05/01/15 18:06:40
>>695
期待通りに来てやったぞ。さあ、どこが具体的に脳内か具体例を挙げてくれ。
さぁ。笑うだけなら猿以下だぞ。明日も休みだ思い切ってつられてやるぞい。
699:デフォルトの名無しさん
05/01/15 18:12:43
>>698
えー、めんどくさいなぁ。他の人はみんな分かってるのに・・・
そのうちスレ違いって怒られるからイヤなんだ。
君が休みとかは全然関係ないんですわ。
例えば>>663の下から2行目とかな。
700:デフォルトの名無しさん
05/01/15 18:14:36
>>695-699
いい加減にしろ。ピエロ君が>>663の件を謝罪して
終わりにしとけ。
701:699
05/01/15 18:15:44
>>698
あとは↓のサイトで自習してもらえると(私も他の皆さんも)助かります。
URLリンク(www.media-k.co.jp)
702:& ◆R.0ARCa5Ow
05/01/15 18:19:35
>>699
そこは当然主観だ。サンプルコード以下は最後の1行の笑いを取るための
レトリックって気づけよ。
あげ足取りにもならん、もっと骨のあるやつを頼む。
703:デフォルトの名無しさん
05/01/15 18:22:31
>>702
意味不明な開き直りはやめてください。
まともな反論もできない方のようですので、もういじめるのは
やめておきます。
きっとあなたはこの後捨て台詞を吐くのだと思いますが、
私が呆れ果て、スレが汚れるのを防ぐために相手をするのを
やめたことは(あなた以外の)誰の目にも明らかですので
構いません。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
さあ、どうぞ!捨て台詞&勝利宣言を!!
704:703
05/01/15 18:23:42
↓が変な位置に入ってしまいましたが、捨て台詞&勝利宣言を
次に書き込めよ、という指示事項です。
705:デフォルトの名無しさん
05/01/15 18:24:21
>>702
>>701はスルーですか?w
706:デフォルトの名無しさん
05/01/15 18:27:23
>>702
すげー開き直りだな。お前専用の別スレ立てな。遊んであげるから。
707:703
05/01/15 18:28:14
なんか誤解されそうでイヤだけど、>>705-706はオレじゃないよ。
708:デフォルトの名無しさん
05/01/15 18:28:46
まだか?
709:デフォルトの名無しさん
05/01/15 18:29:14
誰か代わりに捨て台詞書けよ。それで次の質問行こう。
710:デフォルトの名無しさん
05/01/15 18:32:01
まだ?
711:デフォルトの名無しさん
05/01/15 18:32:47
>>693
ループ内にDoEventsを入れることで画面が固まるのは回避できるが、ループから抜けるコードの作成はしておいた方がいいぞ。
712:デフォルトの名無しさん
05/01/15 18:44:30
まだ?
713:デフォルトの名無しさん
05/01/15 20:52:30
While Not File.Exists("読み込みたいファイル")
i = DateTime.Now.Second + "待機したい秒数"
While DateTime.Now.Second < i
End While
End While
↑これやったんですが、Fileのとこでエラーでるんですが・・
714:デフォルトの名無しさん
05/01/15 21:04:19
エラーは実行時かコンパイル時か?エラーの内容は?
715:デフォルトの名無しさん
05/01/15 21:14:16
コンパイル時にFileが宣言されてませんと
なんでや〜わからん
716:デフォルトの名無しさん
05/01/15 21:20:02
System.IO.Fileだから次の1文がソースの先頭に必要。
Imports System.IO
それか
While Not System.IO.File.Exists("読み込みたいファイル")
717:デフォルトの名無しさん
05/01/15 21:30:41
まだ?
718:デフォルトの名無しさん
05/01/15 21:47:47
>>716
thanks
719:デフォルトの名無しさん
05/01/15 21:53:55
ここは質問スレなので、無意味な揚げ足取り等はやめて頂けると助かります。
みんな、分かってて無視してたんだったらごめんなさい。
720:デフォルトの名無しさん
05/01/15 21:56:06
>>719
どれのこと言ってるの?
721:デフォルトの名無しさん
05/01/15 21:58:24
>>719
荒らしやあおりは完全スルーが良い。
俺は2ch専用ブラウザを使っているので、
目に付く煽りレスや嵐レスは片っ端から透明アポーン。
これで全然気にならなくなるよ。
722:デフォルトの名無しさん
05/01/15 22:03:22
While Not Sstem.IO.File.Exists("読み込みたいファイル")
i = count + 5
While count < i
End While
End While
Label1.text = "test" 'とりあえずできてるどうか試すため
countは1秒ごとに1増えるとタイマを
使ってやってみたのですがうまくいかないorz
コンパイルはできるのだが、 testが表示されない
砂時計がずっとでてる状態です。
なにを付け加えればいいですか?
723:719
05/01/15 22:09:25
>>720
>717
>712
>710
>708
想像つきそうなものだが・・・。
724:デフォルトの名無しさん
05/01/15 22:10:03
このループでスレッドが占有されてるから、同じスレッドで動くSystem.Windows.Forms.Timerはカウントできない。
カウントにタイマを使うんじゃなくて、ループの中でSystem.Threading.Thread.Sleepを使って時間を稼ぐとか。
というかUIを止めてていいの?
ループを使わずに、タイマで発生するイベント内で存在チェックをするべきだと思うんだけど……。
725:デフォルトの名無しさん
05/01/15 22:11:41
Windows.Forms.Timerを使ってるならそのプログラムがループしてる間は
イベントは発生しない。つまり、countは永遠に加算されない。
根本的にロジックを見直したほうがよいが、あえていうなら、内側の
ループにDoEventsをいれる。
726:デフォルトの名無しさん
05/01/15 22:13:12
>>723
バカが。せっかくオレがスルーの練習させようと思ったのによ。
あっさりレスすんなよ。
727:デフォルトの名無しさん
05/01/15 22:20:06
>>722
While count < i
system.Windows.Forms.Application.DoEvents
End While
こうやれば、countに数値が加算されるので、できないこともない。
が、普通はそう言うやり方はしない。
728:デフォルトの名無しさん
05/01/15 22:26:26
>>727
普通のやり方を教えてください!
729:デフォルトの名無しさん
05/01/15 22:31:25
>>728
sleep()使えよ。
730:デフォルトの名無しさん
05/01/15 22:32:25
>>729
えええええ、一体どうやれば。ソースコードを掲載してくださいよ。
731:デフォルトの名無しさん
05/01/15 22:34:24
ワーカースレッド内ならThread.Sleepでいいが同一スレッド内だとUIが固まる。
732:デフォルトの名無しさん
05/01/15 22:39:11
>>722
結局何がしたいのかをもう少し明確にしないとまともな人の回答は得られないよ。
DoEventsとか書いてる人はまともなプログラマじゃないから。
733:デフォルトの名無しさん
05/01/15 22:40:49
>>732
え?DoEvents使っている人は全てまともじゃないって意味ですか?
734:デフォルトの名無しさん
05/01/15 23:42:36
>>733
お前が学生なら違うやり方を考えたほうがいい。
お前が働いててVB使ってるなら先輩に相談しろ。
735:デフォルトの名無しさん
05/01/15 23:57:09
俺は先輩からループ構造はifしか使うなって叩き込まれたなぁ。
736:デフォルトの名無しさん
05/01/16 01:09:58
ListViewで選択されているアイテムのインデックス番号を取得する方法はないのでしょうか?
調べてみても、インデックス番号を指定して選択や
ListBoxのインデックス番号取得しか見つかりませんでした。
737:デフォルトの名無しさん
05/01/16 01:14:21
ListView.SelectedIndices
738:デフォルトの名無しさん
05/01/16 01:25:41
namespaceを利用してパッケージ化したいんですが、
何かサンプルになるようなページ知りませんか?
基本的な機能をもつクラスをライブラリ化したいです。
739:736
05/01/16 01:32:45
>>737
出来ました!ありがとうございました。
それも先ほど見つけたのですが、経験不足故少し勘違いしてたみたいです。
740:デフォルトの名無しさん
05/01/16 02:39:45
すいません。変数名.ControlChars.NextLineで改行文字が付加できますよね?
今度は改行文字があるかないかを判定してあれば削除したいのですが
どうすればできるんでしょうか?すいませんが教えてやってくださいまし。。。
741:デフォルトの名無しさん
05/01/16 06:34:42
>え?DoEvents使っている人は全てまともじゃないって意味ですか?
そんなことはないと思うよ。DoEventを使ってシーケンシャルに書く方が
処理の流れがわかって解りやすい。DoEventを使うのが正解。
レベルの低い先輩はDoEventを使わない。
さらにレベルの低い先輩はDoEventを多用する。
こういう性質があります。
742:デフォルトの名無しさん
05/01/16 06:51:35
>>741
だよな。>>734みたいなのが前者の先輩ってことかな。
>>735
これはどういうこと?
743:MSのバグ発見?
05/01/16 07:37:21
'すいません。で改行文字が付加できますよね?
' 今度は改行文字があるかないかを判定してあれば削除したいのですが()
'どうすればできるんでしょうか?すいませんが教えてやってくださいまし。。。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim strData As String
RichTextBox1.Text = "test" + ControlChars.NewLine + "A"
strData = RichTextBox1.Text
Dim src, dest As String, n As Int16
For n = 0 To strData.Length - 1
src = strData.Substring(n, 1)
If src = ControlChars.NewLine Then Exit For '判定できないBUGか?
dest += src
Next
RichTextBox2.Text = dest
End Sub
何で判定できないの? わーいバグ駄馬具
744:最凶VB厨房
05/01/16 08:27:00
>>743
改行文字が1文字だと決め付けているおまえがバグ
745:デフォルトの名無しさん
05/01/16 08:28:33
>>743
アホさ加減でギネスに認定されました。
おめでとう!!
746:MSのバグ発見?
05/01/16 08:48:51
Debug.Write("漢字は一文字で判断するくせに、NewLineも一文字で読めよボケー")
747:デフォルトの名無しさん
05/01/16 08:49:29
身近にいれば泣きたくなるが、遠めに見てると微笑ましいな
748:MSのバグ発見?
05/01/16 09:03:14
>改行文字が1文字だと決め付けているおまえがバグ
アフォか? NewLineは一文字だろが。漢字が8バイトだから
つーて8charに分解するかボケ。
お前な。ストリングつーのは文字あつかうオブジェクトなんだよー。
文字扱うオブジェクトで何でバイト展開すんだよ。
そういうのを中途半端いうんやな。わかったか?
次ページ最新レス表示スレッドの検索類似スレ一覧話題のニュースおまかせリスト▼オプションを表示暇つぶし2ch
4849日前に更新/258 KB
担当:undef