1 名前:デフォルトの名無しさん [04/10/02 11:10:17] VB.NETの質問全般です 過去スレ VB.NET質問スレ (Part6) pc5.2ch.net/test/read.cgi/tech/1088812165/ VB.NET質問スレ (Part5) pc5.2ch.net/test/read.cgi/tech/1078134703/ VB.NET質問スレ (Part4) pc2.2ch.net/test/read.cgi/tech/1065269043/ 【老若】VB.net質問スレ【男女】 (Part3) pc2.2ch.net/test/read.cgi/tech/1056281084/ 【老若】VB.net質問スレ【男女】 (Part2) pc2.2ch.net/tech/kako/1043/10436/1043629429.html 【老若】VB.net質問スレ【男女】 pc2.2ch.net/tech/kako/1025/10258/1025848458.html
267 名前:デフォルトの名無しさん mailto:sage [04/11/01 11:43:59] すいません、少しお聞きしたいのですが ファイル(画像データ、テキストファイル)を16進数に変換したいのですが なんか、いい方法はありませんでしょうか? 目的は友人と暗号化の勉強をしようと思いまして ファイル→16進数化→暗号化→復号化→16進数化→ファイル という流れなのですが・・・ 自分が使用できる言語はC,Java,VB.netです
268 名前:デフォルトの名無しさん mailto:sage [04/11/01 11:48:04] >>267 釣りはよせ
269 名前:デフォルトの名無しさん mailto:sage [04/11/01 11:50:23] >>268 たぶんマジなんじゃない?
270 名前:デフォルトの名無しさん [04/11/01 12:06:27] stringSize = e.Graphics.MeasureString("” 名医 ”", f) MeasureString でお尻にスペースがあると正常にサイズを返さない。 なんとかする方法はないんでしょうか?
271 名前:デフォルトの名無しさん mailto:sage [04/11/01 12:23:09] お尻に.を付けて求めたサイズから少し減らす
272 名前:252 mailto:sage [04/11/01 12:40:51] >>259 >>258 に書いたとおり、VB.NETではデフォが値渡しに変更されているから midiOutOpen の >lphMidiOut As IntPtr ここはByRefを指定してやる必要がある。 それでも音がでなければ、メッセージのフォーマットが間違ってるか OSの規定のMIDI音源が設定されてないんじゃないかな。
273 名前:デフォルトの名無しさん mailto:sage [04/11/01 13:00:47] >>270 StringFormatオブジェクトのFormatFlagsにStringFormatFlags.MeasureTrailingSpacesを設定し、 MeasureStringのStringFormatをパラメータに使うオーバーロードを使って測定する。
274 名前:270 [04/11/01 17:06:04] >273 ありがとう。やってみますしかしなんか難しそうですね。
275 名前:270 [04/11/01 17:08:15] >お尻に.を付けて求めたサイズから少し減らす 点をつけて求めて、1文字分は引くわけですね。なるほど。
276 名前:デフォルトの名無しさん [04/11/01 17:09:13] PrintPreViewDialogとPrintDocumentコントラールを使ってプリントをおこないます。 この場合 PrintDocument1_PrintPage でプリント処理をおこないますが、1ページ以上の データがある場合は、1ページ出力完了で再度このプログラムに飛んでくる ようにする必要がありますが、どうやって実現するのでしょうか
277 名前:デフォルトの名無しさん mailto:sage [04/11/01 17:15:27] 引数PrintPageEventArgsのHasMorePageをtrueにしてやれば自動的にもう一度PrintPageイベントが発生する。
278 名前:デフォルトの名無しさん mailto:sage [04/11/01 17:17:10] HasMorePagesだった。 最後のページになったら一応明示的にHasMorePagesをfalseにしておく。
279 名前:デフォルトの名無しさん [04/11/01 17:31:04] >278 ありがとう。やってみます。
280 名前:デフォルトの名無しさん [04/11/01 17:45:52] VB.netではFilestreamというのが新しく出てきましたが、 Fileアクセスでランダムアクセスはどのようにやるのでしょう。 20Kの固定長レコードが10000件ありますが、適当なIOコントロール 関数といえば、どれになるのでしょうか?
281 名前:デフォルトの名無しさん mailto:sage [04/11/01 17:48:49] FileStream.Position
282 名前:259 mailto:sage [04/11/01 22:31:17] >>252 つきあっていただいてありがとうございました! >動かない理由はまず第一にmidiOutOpen で取得したデバイスハンドルを >捨ててしまっているから。 というのが、今一よくわからないのですが。 Ret = midiOutOpen(hMid,-1,0,0,0) で Private hMid As IntPtr に入ったんじゃないんですか? ……ってか、それは関係なかったみたいで、 >midiOutOpen の >>lphMidiOut As IntPtr >ここはByRefを指定してやる必要がある。 を勘違いして、3つの宣言全部By Ref lphMidiOut As IntPtrにしてまったが、 直したら音出ました! 停止がされなかったが、Noteが中と外で重複してたのが原因でした。
283 名前:デフォルトの名無しさん [04/11/02 21:52:05] >281 ありがとう。 ストリングをFilestreamで保存して、指定のPositionに seekしたいのですが、このようとではバイト配列に変換する必要が あるようです。 Stringをバイト配列に変換する方法はどうやるのでしょう?
284 名前:デフォルトの名無しさん mailto:sage [04/11/02 22:14:48] StreamWriter で FileStream をラップしてやるか、System.Text.Encoding クラスを使う。 前者の方が簡単。
285 名前:デフォルトの名無しさん [04/11/03 03:49:22] >284 ありがとう。 なんとかできそうです。
286 名前:デフォルトの名無しさん mailto:sage [04/11/03 10:54:06] 見つけられなかったので、教えて下さい。 VB.NETに正規表現を判定する関数ってないでしょうか? 英大3文字なら[A-Z]{3}ってヤツです。
287 名前:デフォルトの名無しさん mailto:sage [04/11/03 11:06:17] Regexp()
288 名前:286 mailto:sage [04/11/03 13:37:28] >>287 即レスどもです。 これってVBScriptのObjectだけど、 VBから使えるのですか?
289 名前:デフォルトの名無しさん mailto:sage [04/11/03 13:51:33] >>288 君頭おかしいの? MSDNすら検索しない奴に今日を生きる資格なし。
290 名前:デフォルトの名無しさん mailto:sage [04/11/03 14:00:57] ああうん、正しくはRegexクラスだな。
291 名前:286 mailto:sage [04/11/03 15:45:42] >>289-290 ありがと。 MSDNにそのまんま有りますね。 検索済みと勘違いしてた、スマン。
292 名前:デフォルトの名無しさん [04/11/04 20:50:24] ストアドの戻り値を数値で受け取る方法をご存知の方いらっしゃったら教えて下さい。 Count(*)を打ってその結果件数を受け取りたいのですが(´・ω・`) SQLServer2000でやっております。 パラメータを渡した後にExecuteReaderを実行してストアドを呼び出し Console.ReadLineで結果を読み取ろうと思ってたのですが、 根本的に間違えてたらすいません。 宜しくお願いします。
293 名前:デフォルトの名無しさん mailto:sage [04/11/04 20:57:15] ええと何でConsoleが出てくるのかな……?
294 名前:デフォルトの名無しさん mailto:sage [04/11/04 21:08:54] >>293 いきなり違うんですか Σ(´Д`:) 初めてなんで色々ネットで調べてみたんですが orz MSサイトで While AAA.Read() Console.ReadLine(以下略 という記述を見つけたのでこれを使おうと思ってた次第です。
295 名前:デフォルトの名無しさん mailto:sage [04/11/04 21:15:10] そこと思われる部分のMSDNの記述 > Console.WriteLine((myReader.GetInt32(0) & ", " & myReader.GetString(1))) ……なぜConsole.ReadLine? SQL文によってmyReader.Get...を適当に書き換えれば良いわけだが。
296 名前:デフォルトの名無しさん mailto:sage [04/11/05 01:31:32] >>295 その記述は初めて見ました orz 調べ方がマズかったのかSQLCommandってのを調べて掘ってたら Console.ReadLineの記述があったので、ストアドの実行結果を読み取るのかと思い Console.ReadLineが使えるのかなと思った次第です。 人手不足で開発に回されたばかりなんですが無知で申し訳ないです(;´д⊂) もっと勉強してから出直します。すいませんでした。
297 名前:デフォルトの名無しさん mailto:sage [04/11/05 02:09:09] >>296 イ`。焦るとどんどん正解から遠ざかるものだ。そういうときは一服しる。
298 名前:デフォルトの名無しさん mailto:sage [04/11/05 11:27:47] 取りあえずアレだ。 ・該当部分のコードを書く ・どこかのページを参考にしたなら参照したページのアドレスを書く ・例外が投げられているなら例外メッセージを書く をしてくれないとアドバイスもしようがないぞ。
299 名前:デフォルトの名無しさん mailto:sage [04/11/05 11:35:51] >>297 タバコの数だけ増えていきます orz >>295 ExcuteReaderメソッドの説明を読んだのですが 実行結果をConsoleに「書き込む」という意味合いでしょうか?(つД⊂) やりたいのはそのConsoleに書き込んだ値を見て処理を分岐させたいのです。 count(*)してその件数で処理変更という具合なのですが。 無知なのは重々承知しておりますが、よろしければ教えて頂けないでしょうか?
300 名前:デフォルトの名無しさん mailto:sage [04/11/05 11:55:30] >>298 確かにそうですね(´・ω・`) 申し訳ないのが作業をするPCが手元に届いておらず、全て机上でのコードなのです。 来週ぐらいにPCが来るそうなのですが、VB.NETもSQLServerも動かしたことないんです。 ワードとエクセルしかやったことがなくて(;´Д⊂) いきなり開発に回されてメモ書きで作る処理を指示されて色々調べたのですが…。 通るかどうかもわからないのですが、以下にコードを。 Dim mySQLcon As New SqlClient.SqlConnection Dim myProc As String = "ストアド名称" Dim myCommand As New SqlCommand(myProc, mySQLcon) Dim myReader As SqlDataReader mySQLcon.ConnectString = "接続情報" mySQLcon.Open myCommand.CommandType = CommandType.StoredProcedure myCommand.Parameters.Add("@ユーザID", SqlDbType.VarChar).Value = "ユーザID文字列" myCommand.Parameters.Add("@パスワード", SqlDbType.VarChar).Value = "パスワード文字列" myReader = myCommand.ExecuteReader(CommandBehavior, SchemaOnly) ↑ 当初はここにストアドの実行結果(count(*)の結果件数)が入ると思っていたので If myReader = 0 Then 処理1 Else 処理2 End If というコードを脳内で展開してたのですが、Consoleの記述を見つけ>>292 に繋がるのです(´・ω・`)
301 名前:デフォルトの名無しさん [04/11/05 12:05:30] どこに質問を書くべきかわからなかったのですが、一応vb.netのことなのでここに書かせてもらいます。 Microsoft access2000とvb.net2002を使っています。 データベースのアクセス履歴をとってそのアクセスした時間をデータベースに記録する というプログラムを書いているのですが、日付/時刻型のデータにvb.net側で現在時刻を取ったときは [年/月/日 時:分:秒]というデータが格納されているのですが、それをaccessに送ると[年/月/日]の部分しか受け取ってくれません。 [時:分:秒]の部分は[00:00:00]となっています。 Dim r As DataRow r = DsAccess1.T_アクセス履歴マスター.NewRow() r("アクセス日時") = Date.Now ←この時点で[年/月/日 時:分:秒] r("アクセス元") = "制作部" r("T_商品仮変更マスター") = "開始" r("T_商品変更履歴") = "開始" r("T_仕事一覧") = "開始" DsAccess1.T_アクセス履歴マスター.Rows.Add(r) odaAccess.Update(DsAccess1, "T_アクセス履歴マスター") ←ここでaccessに渡すと[年/月/日] こんな感じのプログラムです。 ちなみにaccessの方で「アクセス日時」の設定は、 データ型:日付/日時型 書式:日付(標準) 1994/06/19 17:34:23 値要求:はい です。 一度、これを解決するために、テキスト型で値を保存するという方法をとったのですが、 これだと並べ替えをしたときに9:55:55の方が10:00:00より未来だと取られてしまってだめでした。 どうすればちゃんと時刻まで渡すことができるかご教授ください。
302 名前:デフォルトの名無しさん mailto:sage [04/11/05 12:57:33] >>300 まず、SqlCommand.ExecuteReaderメソッドは、 CommandTextプロパティに設定されたSQL文/ストアドプロシージャをデータベースに投げて、 その結果のストリームを読み取る為のSqlDataReaderクラス(のインスタンス)を返すわけだ。 SqlDataReaderクラスは、あくまでストリーム(まあ流れのあるデータって事)を読み取るためのクラス。 実際のデータを読み取るのはこのクラスの各種メソッドを使う。 例えばファイル(ファイルもストリームの一種)を読み取るクラスを考えてみて、 ファイルを開けただけでいきなり全部のテキストが返ってきても困るのは分かるよな? それは実はバイナリファイルだったのかも知れないし、欲しかったのは1行目だけだったかも知れないのに。 そういうわけで、ストリームから読み取るクラスにはどう読み取るかを指定して実行するメソッド群が用意されている。 SqlDataReaderクラスでは、Readメソッド、GetBytesメソッド他の類が用意されている。 Readメソッドは、「今見てるところを次のレコードに進める」メソッドだ。 クエリの結果はレコード一つとは限らないと言うかそっちの方が多いだろう。 多くのサンプルで While (sqlDataReader.Read) となってるのは全てのレコードを読み取る為のコードだ。 ちなみに一番初めにSqlDataReaderが作られた時の「今見てるところ」はクエリ結果の最初のレコードの前。なのでデータを読み取るにはまずReadメソッドを使う必要がある。 さて、一つのレコードには普通複数の行があるわけで、それを取得するのがGet...メソッドだ。 「今見てるところの特定の列の値」をある型として読み取るメソッド群だな。 mySqlDataReader.GetInt32(0) なら今見てるレコードの0列目(最初の列)をInt32(VB.NETではInteger)として取り出すわけだ。 要約すれば、ExecuteReaderから返ってきたSqlDataReaderをReadしてGetInt32(実際はCount(*)が返してくる型に一致するGetなんとか)しろということ。 さて、これで別にConsoleクラスを使う必要が無い事が分かってもらえたかな。 >>301 こいつかね。 ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=10611&forum=7 @ ttp://www.google.com/search?num=100&hl=ja&lr=lang_ja&oe=utf8&q=DATETIME+ACCESS+VB%2ENET
303 名前:デフォルトの名無しさん mailto:sage [04/11/05 13:45:56] >>302 御丁寧に教えて頂き大変感謝しております(;´Д⊂) myReader = myCommand.ExecuteReader(CommandBehavior, SchemaOnly) の後に While myReader.Read() ←結果の最初のレコードに移動(sqlDataReaderのOpen?) Integer型の変数 = mySqlDataReader.GetInt32(0) ←結果をIntger型で格納する End While myReader.Close ←sqlDataReaderを閉じる ↓ Integer型の変数にcount(*)の結果が格納される この解釈で合っておりますでしょうか? orz 複数行数があった場合は型に合わせた変数を作って、Get...を型に合わせて指定し レコードの何列目かを指定する(GetInt32(1)などのように)とそのレコードのデータが取れる。 と解釈したのですが(´・ω・`)
304 名前:デフォルトの名無しさん mailto:sage [04/11/05 14:03:31] >>303 そんな感じ。 > myReader = myCommand.ExecuteReader(CommandBehavior, SchemaOnly) ExecuteReader の引数は CommandBehavior列挙型 一つだけで、列挙型の指定は「型名.メンバ名」。 だから CommandBehavior.SchemaOnly > While myReader.Read() ←結果の最初のレコードに移動(sqlDataReaderのOpen?) ストリームそのものはExecuteReaderから返ってきた時点で開かれている。Closeするかストリームの終わりに達するまで、データはいつでも読みとれる。 //SqlDataReaderは、ストリームの実体ではなくて、ストリームを読み取る処理を簡単にするためのクラスである、というのはここでは余談。 あとはどこを読むかを決めるだけ。 一回目のReadで一番始めのレコードに目をやるわけだ。 > 複数行数があった場合は型に合わせた変数を作って、Get...を型に合わせて指定し 複数列、な。 あと必ずクエリ結果のレコードが一つに限られるならWhileする必要もないとか(一度だけ {ReadしてGet...して} Close)。
305 名前:301 mailto:sage [04/11/05 14:57:14] >302 まさにそれでした。ありがとうございます。 ただ、accessの書式が「年/月/日 時間」なのに対しvb側の書式が「日/月/年 時間」だったことが 問題となって「データ型が一致しません」というエラーが出たのですが、これはvb側を「Date.Now.Yera & "/" & Date.Now.Month & …」 とすることでなんとか解決することができました。
306 名前:デフォルトの名無しさん mailto:sage [04/11/05 15:27:47] >>304 ありがとうございます(;´Д`) 訂正も含め助かりました。 >>295 のレスの意味もなんとか掴めました。 重ね重ね感謝致します(;´Д⊂)
307 名前:デフォルトの名無しさん mailto:sage [04/11/05 16:20:29] ノータッチデプロイで起動したEXEに引数渡したいんだけど、 ttp://サーバ名/hoge.exe?a=b のように起動してもTypeInitializationExceptionが出て画面表示すらされない。 試しに引数処理のロジックをコメントアウトしてもエラーがでる。 というか、?以後を付けるともうエラーがでる。 なぜだか知ってる人いますか?
308 名前:デフォルトの名無しさん mailto:sage [04/11/05 23:05:23] >>307 これ? msdn.microsoft.com/library/default.asp?url=/library/en-us/dnforms/html/winforms05152003.asp
309 名前:デフォルトの名無しさん mailto:sage [04/11/05 23:09:57] >>305 そういうときはそんな回りくどいことをせず、DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss") とでもしる。
310 名前:デフォルトの名無しさん [04/11/07 01:11:29] 質問があります。 SqlCeDataReaderではHasRowsメンバが無いようですが、 レコードが存在しない事を検出するにはどうすれば良いのでしょうか?
311 名前:デフォルトの名無しさん mailto:sage [04/11/07 01:22:25] >>310 .NET Framework1.1でHasRowsプロパティが追加されてるが。 1.0でならReadしたら分かるんじゃないかな。
312 名前:デフォルトの名無しさん mailto:sage [04/11/07 02:26:29] ファイルの保存をするにはButtonコントロールにどんなプログラムを書けばいいんでしょうか? 俺の持ってる教本には載っていなかった・・・ 新しい本を買うお金もないし立ち読みしても頭に入らないだろうし エロイ人教えてください><
313 名前:デフォルトの名無しさん mailto:sage [04/11/07 02:29:45] >>312 漠然としすぎだが取りあえずファイルに書き込む部分はこれ。 ttp://dobon.net/vb/dotnet/file/writefile.html
314 名前:デフォルトの名無しさん mailto:sage [04/11/07 03:17:01] >>313 ありがとう! 後で試してみます
315 名前:デフォルトの名無しさん [04/11/07 06:21:19] form1.show vbModalがしたいんですが、VB.NETの場合どうするのでしょう。 1)ボタンを押すたびに新しいフォームが立ち上がります。 2)親フォームは子がshowしているときは黙らせたい 以上よろしく。
316 名前:デフォルトの名無しさん mailto:sage [04/11/07 07:14:52] >>315 .showdialog はだめなんけ?
317 名前:デフォルトの名無しさん [04/11/07 09:55:15] formのコンストラクターってなんなん? form_loadか?
318 名前:デフォルトの名無しさん [04/11/07 09:57:02] >316 ありがと。それです。
319 名前:デフォルトの名無しさん mailto:sage [04/11/07 10:01:43] >>317 フォームもクラスなのでクラスと同じNew。 というかform_load? まさかVB6か? VB6でも当然フォームもクラスなのでクラスと同じ クラス(フォーム)名_initialize。
320 名前:デフォルトの名無しさん [04/11/07 10:26:24] >>311 ここをみる限りではHasRowsメンバは無さそうですが・・・。 www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemdatasqlservercesqlcedatareadermemberstopic.asp SqlDataReaderやOleDataReaderにはあることは知っているんですが・・・。 CompactFrameworkならではの制限なんでしょうか? そうすると、やはり読んでみて、エラーをcatchするしかないんでしょうか?
321 名前:デフォルトの名無しさん mailto:sage [04/11/07 10:33:18] >>320 いや失敬、2.0からだった。 別にレコードがなくてもReadは例外を投げないはずだが。 単にFalseを返してくるだけで。
322 名前:317 [04/11/07 14:26:01] >319 >フォームもクラスなのでクラスと同じNew。 ところが Public Class frmData Inherits System.Windows.Forms.Form Public Sub New() End Sub ってやるとNewのところが波線になる。書き方まづいの?
323 名前:デフォルトの名無しさん mailto:sage [04/11/07 14:41:00] >>322 新しいフォームプロジェクトに追加したときに、 既に自動作成されているコード(Regionディレクティブで畳まれてる)見てみ。
324 名前:フナ太郎 mailto:sage [04/11/07 14:42:37] >>322 やってみたけど波線になんないよ。もっと 外側に原因がありそうだ。
325 名前:317 [04/11/07 15:01:40] >323 Regionに入ってた。ありがと。
326 名前:317 [04/11/07 15:05:25] VB6で使ってたDLLを呼び出す関数って、NETではmodule1の中に書いたら 動いたけど、使い方はそれでいいの?
327 名前:323 mailto:sage [04/11/07 15:36:45] 便乗質問なんだけど、コンストラクタをオーバーロードするときって どうしてOverloads付けなくていいんですかねえ? MSDNのどこ見てもこの辺触れられてないように思うんだけど。
328 名前:デフォルトの名無しさん [04/11/07 16:18:57] VB.NETって開発環境を消したらうごかなくなる? VB6のときは、そのまま出荷ってのが多かったけど。
329 名前:デフォルトの名無しさん mailto:sage [04/11/07 16:29:09] .NET Frameworkを消したら動かない。 VBランタイムみたいなもん。 .NET Frameworkのみで開発もできるから開発環境を消したら動かなくなると言うのは正しい。 VB.NETのIDEやSDKを消しても問題はない。
330 名前:デフォルトの名無しさん [04/11/07 18:18:09] >329 ありがと。も一つ聞きたいんだけど、以前開発が終わったのでVB6.0を削除したのだけど バグが出たのでもう一度インストールしようとしたら、インストールできなかった。 VisualStudio6.0だけど。 .NETもそんなこと起こるのかなー。 だから怖くて消せない。どうせバグ出るし。なんか対策あるんだろか?
331 名前:デフォルトの名無しさん mailto:sage [04/11/07 18:21:15] >>330 なにが言いたいのかよくわからないけど まだ起こってもいない問題の対策聞くってどういうこと。。。?
332 名前:最凶VB厨房 mailto:sage [04/11/07 19:07:55] >>327 www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbcn7/html/vaconOverloadingInVisualBasicNET70.asp?frame=true
333 名前:デフォルトの名無しさん mailto:sage [04/11/07 21:48:55] ame.dip.jp/upload/1099/831643.JPG 上のアドレスの画像の赤で囲ってあるコントロールってなんですか?
334 名前:最凶VB厨房 mailto:sage [04/11/07 21:49:19] スマン誤読。 基底クラスのコンストラクタが引数なしのみ() 派生クラスのコンストラクタが(a As String)と(a As String,b As String) のものを作りたいとする。 Overloadsキーワードをメソッドで使うと派生クラスから見た場合、 ()と(a As String)と(a As String,b As String)となる。 (仮にコンストラクタにOverloadsをつけるとすると) Overloadsの意味がメソッドとコンストラクタでは意味が 異なってしまう。 +基本的に基底クラスと派生クラス間の問題を解決するもので ある(Overrides,Shadows,Mustほにゃららetcも)。 +コンストラクタは特別なメソッドである。 これらのことを考慮すると、コンストラクタにOverloadsはつけないと いうことに自然となると思われ。推測。
335 名前:デフォルトの名無しさん mailto:sage [04/11/07 21:58:29] >>333 ラジオボタン
336 名前:327 mailto:sage [04/11/08 00:19:17] >>334 レスありがとう。 正直勉強不足で書いてもらったこと完全にはわからないけど、 Overloadsつけると継承する場合を考えるとなにか矛盾が起こるのかな? 。。。ん〜やっぱりいまいちわからない。
337 名前:デフォルトの名無しさん mailto:sage [04/11/08 13:48:53] .netで組んだシェアウェア売ってる方に質問 .net製のアプリは嫌がられませんか?
338 名前:307 mailto:sage [04/11/08 15:33:25] >308さん それを参考にプログラムしました。 どうやら、WEBサービスを参照してると、xxx.exe?param=abcのような起動ができないみたいです。。。 うぅぅ・・・・。
339 名前:デフォルトの名無しさん mailto:sage [04/11/08 18:14:14] .netのアプリってフレムワークのインストールもあるんだろ。 面倒だな。
340 名前:デフォルトの名無しさん mailto:sage [04/11/08 20:52:00] >>339 そうだな
341 名前:デフォルトの名無しさん mailto:sage [04/11/08 21:16:59] VB6のランタイムインスコしろっていうシェアウエアもある哀
342 名前:デフォルトの名無しさん mailto:sage [04/11/08 21:19:22] リッチテキストボックスにかいてある内容を左や右、中央揃えにする方法って よくわからないんですけど、参考になるサイトなどありませんか?
343 名前:デフォルトの名無しさん [04/11/09 02:10:09] DateTimePickerかMonthCalendarの日付を選択して 配置されてるか、もしくは新しいtextboxを呼び出すことは できるんでしょうか?
344 名前:デフォルトの名無しさん [04/11/09 02:22:42] >>343 TextBoxを持ったフォームを別に作っといて、 MonthCalendar.DateChangedあたりで、フォームを表示させるとか?
345 名前:デフォルトの名無しさん [04/11/09 02:27:23] >>342 dobon.net/vb/dotnet/control/rtbselectionalignment.html こんなん?
346 名前:デフォルトの名無しさん mailto:sage [04/11/09 02:49:58] >>344 レスありがとうございます 正しくそのとおりで、おかげさまで 新しいフォームを作りそこにtextboxを配置されて MonthCalendar.DateChangedの日付をクリックすると 新しいフォームに飛ぶというところまではできました
347 名前:デフォルトの名無しさん [04/11/09 21:08:46] Dim sr As StreamReader = New StreamReader("c:\test.txt") streamReader でPositionをつけて、たとえば10バイトめから 読むにはどうしたらいいの?
348 名前:デフォルトの名無しさん mailto:sage [04/11/09 21:17:12] >>347 BaseStreamプロパティからPositionをいじる。 でも根本的にStreamReader使うのはシーケンシャルなアクセスだけにしといた方が良いと思う。
349 名前:デフォルトの名無しさん [04/11/09 21:57:18] Magic Dockingを使うために DockingManagerExtenderを入れたのですが 「MagicLibrary.DLL」が「参照設定」に追加された状態で、 「ツールボックス」の「コンポーネント」に「DockingManagerExtender.DLL」を追加し、 これをフォームに貼り付けてあるパネルに貼り付け, DockingManagerExtenderのContainerControlプロパティを パネルの貼り付いているフォームに設定し、 パネルの「DockingManagerExtenderのADockingEnable」プロパティをTrueと して,パネルの張り付いているフォームをnewしようとすると, 以下のようなエラーが出てしまいます System.ArgumentNullException: 値を Null にすることはできません。 パラメータ名 : DockingManager at Crownwood.Magic.Docking.Content.InternalConstruct(DockingManager manager, Control control, String title, ImageList imageList, Int32 imageIndex, Icon icon) at Crownwood.Magic.Docking.Content..ctor(DockingManager manager) at DockingManagerExtender.DockingManagerExtender.SetADockingEnable(Control control, Boolean enable) at SampleListForm.InitializeComponent() DockingManagerExtenderについて簡単に説明のあった backno.mag2.com/reader/BackBody?id=200402230600000000104516000 に書いてあるとおりにやってるのですが,どこが問題なのでしょうか
350 名前:フナ太郎 mailto:sage [04/11/09 23:13:17] >>347 10バイト空読みする。
351 名前:デフォルトの名無しさん mailto:sage [04/11/09 23:19:29] >>350 StreamReaderではバイト単位で読む事はできないよ。あくまで文字単位。 //まあ形式が固定ならそれでいいんだけど。
352 名前:デフォルトの名無しさん [04/11/09 23:53:07] 質問です。 DataAdapterをコントロールボックスから 選択して使用していますが、 その際DataSourceやプロバイダ等を チュートリアルに従って設定しております。 自動生成されたソースを見ると、 DataSourceのパスは絶対指定となっていますが、 これをソースを直接触らずに相対指定にする方法はありますか? 相対パスにするには自動生成されたソースを 触らなくてはならないのでしょうか?
353 名前:デフォルトの名無しさん [04/11/10 04:33:36] >348 BaseStreamをStreamReaderがオープンしたファイルと関連付ける方法が分かりません。 おそらく「オーバーロード、オーバーライド、継承」になどVBNETが導入した新しい技術に 関することだとおもいますが、まだ使い方がはっきりと理解できていないのです。 基本的にはリードライトのクラスがあって、それを補うためにリードライトする データを加工するクラスがあればよいと思うわけです。 そしてこのリードライトのクラスはランダムアクセスとシーケンシャルアクセスを 用意するというのが歴史的つまり基本的方法です。 そうすると、StreamReaderでオープンしたファイルをBaseStreamでアクセスするのは 継承関係からして誤りだと思います。おそらくBaseStreamでオープンしてリードライトは BaseStreamで行い、データの加工を下位のクラスで行う? そこでStreamReaderは 適当ではない? では適当な方法は?その具体的方法が分からない。 >10バイト空読みする。 色のみ読みたいのです。空はいりませんので。 >351 >StreamReaderではバイト単位で読む事はできないよ。あくまで文字単位。 >//まあ形式が固定ならそれでいいんだけど。 形式は固定です。 固定長レコードのテキストファイルをランダムアクセスするための 具体的な方法が知りたいのです。MSDNには例がありません。
354 名前:デフォルトの名無しさん mailto:sage [04/11/10 07:43:16] >>353 > そしてこのリードライトのクラスはランダムアクセスとシーケンシャルアクセスを > 用意するというのが歴史的つまり基本的方法です。 で、そのシーケンシャルとかランダムとか言うのを一緒にしたのがストリーム。 //厳密にはランダムアクセスベースだけど、ランダムアクセスならシーケンシャルなアクセスにも耐えられる。 //そう考えれば両者を分ける必要はどこにもない。 StreamReaderの役割は指定した文字コードを元に文字単位でストリームから読み出すことだ。 本来バイトベースであるストリームを文字ベースで扱いやすくするためのクラスであって、そこにアクセス方法など関係ない。 ところが、文字ベースで考える場合文字コードという問題が生ずる。 例えばShift_jisの場合、「官」の字は8AAFと言う16進コードで表現される。 これを2バイト目から読み出すと、AF、つまり半角カナの促音記号「ッ」ととられてしまう。 これではよろしくないから、「基本的に」先頭から順次読み取りするようになっている。 でも任意の位置から読み込みたい時もあるだろう、とStreamReaderが読み取る対象のストリームをBaseStreamで直接公開してるわけだ。 //ファイルパスを指定してStreamReaderをnewした場合、内部でFileStreamが作成されている。実際に公開するのはこれ。 StreamReaderで文字を読み出すと、読み出した文字分この内部のFileStreamのPositionが読み込んだ文字に応じて動く。 でもあくまで内部のFileStreamが指している所から文字になるバイトデータを読み出すわけで、 いつのまにかこれがさっきまで見てた所と違ってても気にせずそこから読み出すようになっている。 てことで、streamReader.BaseStream.Positionをいじくれって言ったの。 > 固定長レコードのテキストファイルをランダムアクセスするための > 具体的な方法が知りたいのです。MSDNには例がありません。 固定長かどうかなんかストリームとしては知った事ではない。
355 名前:デフォルトの名無しさん [04/11/10 08:59:20] >354 >てことで、streamReader.BaseStream.Positionをいじくれって言ったの。 これが分からなかった。ありがとう。 Do Debug.Write(sr.BaseStream.Position) line = sr.ReadLine() debug.Write(line) Loop Until line Is Nothing Positionの移動をプリントして見ると ラインは10行あっても最初のReadLine()で全部読み込んじゃうね。 読み出し開始位置はPositionで設定できるけど、一旦ReadLineして しまうとPositionでは制御できないようです。 だからstreamReaderではRandomアクセスはできないです。もちろん Open、Closeを繰り返せばできますが、それはだめですね。 ファイルは一旦オープンすれば、仮想メモリー空間にマッピングされるわけだから 1バイト単位で自由にアクセスできるはずですよね。クラスの制約でわざわざClose するのはばかげてます。 結局Stringファイルをランダムアクセスする方法は、どうすればいいのでしょう?
356 名前:デフォルトの名無しさん mailto:sage [04/11/10 09:28:54] もともと複数バイトで意味のあるデータを読み込む時に任意のバイトからってのが今一なじまないんだけどな。 .NETのファイルアクセスは十分に高速だから空読みも大したコストにならないし。 どうしてもStreamReaderを使いたいなら、 FileStreamでストリームを開いて、 FileStream.Positionを操作してからそのFileStreamを元にStreamReaderをそのたびに作成。読み込み終わってもStreamReader.Closeは呼び出さない。 一通り処理が済んだらFileStream.Closeを呼び出す。
357 名前:デフォルトの名無しさん [04/11/10 10:13:57] 次のような例がVBの本にあるのですが、 Dim st as Stream = New NetworkStream(...) ... st.Write(buf,0,255) st.Close() Dim under_stream as Stream = New NetworkStream(...) Dim st As Stream = new BufferedStream(under_stream) ....@ ... st.Write(buf,0,255) st.Close() @の行を追加するだけで、バッファリング機能を追加しています。これは 非常にスマートですね。 で私のやりたいイメージはこういうことです。(LineSizeは100byte程度です。) for i=0 to 100 st.WriteLine(linedt(i)) next ... st.Position = 55*LineSize linedt = st.Read() st.Position = 3*LineSize linedt = st.Read()
358 名前:デフォルトの名無しさん mailto:sage [04/11/10 10:14:49] FileStream.ReadとEncoding.GetStringでいいじゃん。
359 名前:デフォルトの名無しさん [04/11/10 10:17:49] 欲を言えば st.LineSize = 100 linedt = st.Read(55) ... linedt = st.Read(3)
360 名前:デフォルトの名無しさん [04/11/10 10:20:04] >358 そうなの? しらべてみますが、もし例があればよろしく。
361 名前:デフォルトの名無しさん [04/11/10 10:29:02] [Visual Basic] Overloads Public Overridable Function GetString( _ ByVal bytes() As Byte _ ) As String [C#] public virtual string GetString( byte[] bytes ); VBの場合、宣言が複雑ですが、どういう意味があるんですか? 単に多弁?
362 名前:デフォルトの名無しさん mailto:sage [04/11/10 10:30:14] >>360 Dim fs As FileStream = sr.BaseStream Dim data(55) As Byte fs.Position = 55 * LineSize fs.Read(data, 0, 55) linedt = Encoding.UFT8.GetString(data) ... sr.Close() 事前にStreamReaderである程度読んでる場合を想定してるけど、そうでないならはなからFileStreamでファイルを開けばいい。
363 名前:デフォルトの名無しさん mailto:sage [04/11/10 10:31:58] >>361 VBの過去のしがらみです。 書くのが嫌ならC#に移れと言うMSの暗黙のプレッシャーもあります。
364 名前:デフォルトの名無しさん [04/11/10 12:44:30] >362 ご丁寧にありがとう。 Dim fs As FileStream = sr.BaseStream これが分かりませんでした。 FileStreamの場合Positionがリードポジションと同じなんですよね。 やってみます。
365 名前:デフォルトの名無しさん [04/11/10 14:29:09] 技術評論者のVisualBasic.NET プログラミングマニュアル ってもってる人いないですか? そこの133ページに 「委譲を使った問題点(1)の解決」ってのがあって Stack ClassはListを継承するのではなくListの実装を内部で利用すれば いいのです(つまり委譲のことだと思う) Public Class Stack Inherits List ....@ Private ListField As New List() Public Function Pop() as Object ..... という様になっているのだけどどうもおかしい。 @のInheritsって継承のことだよね。これってImplementsの間違いか? 継承の例は1ページしかないのに、間違えられるとさっぱり分からん。 Inheritsって委譲にも使うのか? Implementsって要するに外部クラスの参照のことだよね。要するに EXTERNってことだよね。ほかには意味ないですよね。
366 名前:デフォルトの名無しさん mailto:sage [04/11/10 14:35:57] >>365 持ってないけど多分Implements IList辺りの間違いだろうね。 //……継承の例が1ページ? 委譲の例?
367 名前:デフォルトの名無しさん [04/11/10 14:41:03] 質問させてください。 a b c と3つの変数があるとして、テキストボックスに "1:"&a&"2:"&b+c みたいな式を任意にユーザーが設定できるようにして、 それを実際に他の変数に入れるようにしたいんですけどどうしたらいいのかわかりません。 普通のコードで書くと kekka="1:"&"2:"&b+C ってなりますよね。この右辺の部分をテキストボックスから取り出して 直接コードで書いたように動作させたいのですけど、どうしたらできるんでしょうか?