[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 02/18 18:27 / Filesize : 282 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

VB.NET質問スレ (Part21)



1 名前:デフォルトの名無しさん [2007/04/23(月) 12:42:36 ]
前スレ

VB.NET質問スレ (Part20)
pc11.2ch.net/test/read.cgi/tech/1173061176/

テンプレは2〜10くらいまでの間にある予定

666 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 00:36:12 ]
全くって言われても……言葉通りとしか……。
とりあえずファイルに書き込むことはできてる? どうやって書き込んでる?

667 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 00:41:37 ]
>>666
すいません質問が漠然としすぎていて・・
もう少し勉強してから出直してきます。

668 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 00:43:40 ]
2005で作ったプログラムを2003に変換する方法ってありますか。

669 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 01:40:00 ]
1.1にない機能を使ってたらどうすんの?

670 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 10:08:10 ]
>>668
コピペしてエラーがでたら考える。

671 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 10:40:30 ]
AddHandlerでLeaveイベントでを関連付けて、テキストボックスからフォーカスが移動した際に
入力のチェックをしているのですが、ツリービューをクリックした際になぜか
入力チェックが2回実行されます。

この原因及び解決法が分かる方がいましたらご教授願います。

672 名前:デフォルトの名無しさん [2007/06/15(金) 10:47:45 ]
2005のDataGridViewでDataGridViewButtonColumn列を使用して一覧の表を作成しています

ある特定の行のときだけ
DataGridViewButtonCellの中にあるボタンを無効化(enable=false みたいに)出来ないでしょうか?


673 名前:デフォルトの名無しさん [2007/06/15(金) 12:41:48 ]
すみません。www.cbook24.com/bm_detail.asp?sku=4798011126を買おうと思っているんですが、
下の方に印刷のところで、クリスタルレポートっていうのが、でてきます。他の本をみていても時々でています。

色々と調べてみたんですが、VB2005Proffessionalエディションじゃないとクリスタルレポートというのは
つかえないんでしょうか・・・

Professionalエディションって結構高いですよね・・ よろしくお願いします。

674 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 12:43:10 ]
>>671
それで原因がわかったらエスパーだなw
原因および解決法が分かる方がいましたら、ってなんだよ。
まるで原因は自分のミスじゃない、とでも言いたげだな。

そういう時は原因としてどういう可能性が推測できるか、と聞けよ。



675 名前:デフォルトの名無しさん [2007/06/15(金) 12:53:56 ]
>>673
Expressでは少なくとも無いなぁ
Standardはしらんが多分Pro以上

Express5000くらいで買ってProにアップグレードしたら多少安く手に入るんじゃないかな?

676 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 12:54:13 ]
>>673
www.microsoft.com/japan/msdn/howtobuy/vs2005/editions/stdexp/#stdexp_feature

677 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 12:57:12 ]
>>673
バンドル版はPro版以上。それ以下でも製品版を買えば使える。
japan.businessobjects.com/products/crystal/
もちろん製品版も結構高いけどな。

678 名前:デフォルトの名無しさん [2007/06/15(金) 13:02:18 ]
タグ上で右クリしたときContextmenuStripが表示されるようにしたいんですが
なんかいい手無いかなー?
要はタブを追加、タブを閉じるのメニューを表示したいんす

679 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 13:03:23 ]
>>672
以前自分もこれしらべたことあったけど、現状じゃ無理ー。

680 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 13:05:51 ]
>>678
タブコントロールのタブか?
普通にマウスクリックイベントに書けば?

681 名前:デフォルトの名無しさん [2007/06/15(金) 13:08:44 ]
>>679
やっぱむりっすか・・・
中のボタンコントロールみたいなのとれればなとか
あれこれ調べたんですがこれもムリだったので、まぁ、今回はちょっと別の方法模索してみようかなとおもいます。

レスありがとうです!

682 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 13:14:45 ]
>>681
正確にいうと、ReadOnlyにすることで、無効化は可能。
ただ、視覚的にenabled=false(グレー表示)にすることが不可能。
ボタンを押す行為自身はできちゃうんだよね…

683 名前:デフォルトの名無しさん [2007/06/15(金) 13:28:06 ]
>>682
もうちょっとツボ抑えた機能がほしいところですね
全部既存のコントロールが中にあるんだろうし 少しくらい公開してくれても・・・(;´Д`)


684 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 13:34:46 ]
中にコントロールはなかったような。
編集するときEditControl生成するくらいじゃね?
Buttonの絵を書いてるだけだよ。
じゃなきゃ何千ものコントロールのハンドル管理しなきゃいけなくなるっしょ。

だから継承して自分で描画すればいいだけの話



685 名前:デフォルトの名無しさん [2007/06/15(金) 14:04:58 ]
>>684
いいヒントもらえたのでちょっと強引にやってみました。
セルのボタンを表示したくないValueにはNothing そうじゃないばあいNothing以外を入れて
CellPaintingイベントで

If e.RowIndex >= 0 AndAlso e.ColumnIndex >= 0 AndAlso dgvList.Columns(e.ColumnIndex).Name Is 該当のカラム Then

Dim temp As DataGridViewCell = dgvList.Rows(e.RowIndex).Cells(e.ColumnIndex)

If temp.Value Is Nothing Then

Dim TempPoint As New Point(e.CellBounds.X + e.CellBounds.Width - 1, e.CellBounds.Y)
Dim TempPoint2 As New Point(e.CellBounds.X + e.CellBounds.Width - 1, e.CellBounds.Y + e.CellBounds.Height)

e.Graphics.FillRectangle(New SolidBrush(Color.White), e.CellBounds)
e.Graphics.DrawLine(New Pen(SystemColors.ControlDark), TempPoint, TempPoint2)

e.Handled = True

End If

End If

ボタンを表示したくない時は自分で塗りつぶして線も描画し、表示したい時はコントロール任せ
こんな感じでとりあえずいけそうかなぁと
助かりました〜

686 名前:デフォルトの名無しさん [2007/06/15(金) 14:42:56 ]
グループボックスの中にボタンが配置してある場合、グループボックスの背景色を
変更したらボタンも一緒に変わってしまう。。

再度ボタンを設定しなおせば良いのは分かりますが、
予め反映させないようには出来ないのでしょうか?

687 名前:デフォルトの名無しさん [2007/06/15(金) 15:22:57 ]
>>686
????
今やってみたけど変わらないと思うぞ

あらかじめGroupBoxに背景色が設定してあって、そのうえにボタン追加したらその現象が出るなぁ・・・
ちなみに2005IDEね


688 名前:686 mailto:sage [2007/06/15(金) 15:37:46 ]
ぇええぇぇええ〜。

実験どうもです。
自分の所もVS2005のVB。

ちょっと新規にプロジェクトを作成して試してみましたが、
グループボックスの中にボタンを配置して、以下のプログラムで再現します。

GroupBox1.BackColor = Color.Aqua


この場合、グループボックスもボックス内にあるボタンもAqua色。。



689 名前:デフォルトの名無しさん [2007/06/15(金) 15:46:23 ]
>>686
あ〜
ボタンのスタイルをスタンダードにしてるから
見た目かわらないだけでグループの背景色変えたらボタンの背景色変わってるな〜
たしかにFlatとかにしてたらIDEでも変わるのが目に見えて判る

こういう処理やったことないからわからないけど・・・・自動で子にいろいろ設定されるのは難しいんじゃなかろうか・・・
FormのFontSizeとか変えたら子のサイズも変わるのと同じ原理なんだろうなぁ・・・
ある意味気が利いてていいんだが・・・

690 名前:686 mailto:sage [2007/06/15(金) 15:47:58 ]

コードとか関係なくGUIでもそうなっているんですね。。

ラベルやチェックボックスとかには便利だけど、
ボタンにこれは必要ないだろ〜。

ぅう、面倒くさー。

691 名前:686 mailto:sage [2007/06/15(金) 15:50:10 ]
>>689
入れ子になりました。

度々どうもです。
うーん、小さな親切って奴ですな〜。

692 名前:673 mailto:sage [2007/06/15(金) 15:51:01 ]
>>675
どうもありがとうございます。ExpressからProにアップグレードできるんですか?
以前のエディションのPro版からしかアップグレードできないとおもっていたので、
とても助かります。ありがとうございました。

>>676
どうもありがとうございます。わざわざURLを貼っていただきまして。やっぱりPro版じゃないと
だめみたいですね。

>>677
製品版なんてものもあるんですね。CrystalReport単品ですね。でも、7万しますね・・
MicroSoftはここまで金をもうけないと駄目なんですかね・・

どうもありがとうございました。お礼が遅くなりすみませんでした。料理してたら忘れてまして・・

693 名前:686 mailto:sage [2007/06/15(金) 15:54:48 ]
>>689
ああ、どうもです。

FlatStyleプロパティをSystemにする事で、回避できそうです。

694 名前:デフォルトの名無しさん [2007/06/15(金) 16:01:58 ]
>>693
ついでにちょっと試してたんだけど

IDEでグループボックス貼り付け
IDEでボタン貼り付け
ボタンのスタイルをフラットにして、色をREDに変更

このあとグループボックスの色変えてもボタンの色変わらなくない?
もちろんコードでグループボックスの色変えても



695 名前:686 mailto:sage [2007/06/15(金) 16:06:56 ]
>>694

自分が確認した範囲では、一度ボタンの色を任意に設定した後は、
ボタンのスタイルに関わらず、グループボックスと連動する事はなさそうです。

スタイルをSystemにするか、BackColorをColor.Transparentにするかの
どちらかになると思います。

696 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 16:11:53 ]
>>674
ではその可能性とやらを教えてください

697 名前:デフォルトの名無しさん [2007/06/15(金) 16:20:47 ]
>>696
またお前かw
偉そうな質問者よ
他のスレで大暴れしているな?

698 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 16:25:08 ]
>>697
完全に人違い。
さっきのはもうあきらめました。

ちなみに別のところで詰まってるんだけど
教えてもらえるかな

699 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 16:54:12 ]
だがことわる



って言われたら諦めるの?

700 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 17:11:23 ]
やだ

っていったら教えてくれるの?

701 名前:デフォルトの名無しさん [2007/06/15(金) 17:23:11 ]
>>700
お前には教えない
教える気になる書き方しろやカス

つうか、おまえはそういう聞きかたされておしえるのか?

もしそうなら教えてほしいんだが
Form閉じる時に何か処理したいんだがなんてイベント使えばいいんだ?
たのむから教えてくれカス

702 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 17:57:14 ]
何でお前はそんなに偉そうなんだ

お前は俺の質問に答えられるのか

無理なくせにえらそうにするなよ

703 名前:デフォルトの名無しさん [2007/06/15(金) 17:59:13 ]
DataTableでColumnsの最大値っていくつまで指定可能ですか?

704 名前:デフォルトの名無しさん [2007/06/15(金) 17:59:25 ]
>>698 = >>700 = >>702 = Null
つまり奴はこの世の中には存在しないんだよ!!!!

>>702
それまさにお前 m9(^Д^)
ところで釣れますか?



705 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 18:02:41 ]
>>701
FormClosingだ、馬鹿。
Closingが見つからないからってあせるな馬鹿。

706 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 18:04:52 ]
>>703
Columns.CountプロパティがIntegerだからそこから最大値は必然的にわかるだろ。

707 名前:デフォルトの名無しさん [2007/06/15(金) 18:09:53 ]
>>706
おお!
盲点ってか全く気がつかなかった。
サンクスです。

708 名前:デフォルトの名無しさん [2007/06/15(金) 18:13:21 ]
ぜひ>>671には
わ○くま とかの掲示板で質問していただきたいw

709 名前:703 mailto:sage [2007/06/15(金) 18:14:17 ]
もうひとつ聞きたいことがあるんですが、
DataTableにNewRowした時点で、
あらかじめ項目に規定値をセットする方法ってあるのでしょうか?

710 名前:デフォルトの名無しさん [2007/06/15(金) 18:15:14 ]
>>705
ばっかw
そこは2003か2005か聞くところからはじめさせるための釣りの布石なんだよwwww







 MayBe...
BoyesBe...

711 名前:デフォルトの名無しさん [2007/06/15(金) 18:18:11 ]
>>709
DataColumn みてみ?

712 名前:703 mailto:sage [2007/06/15(金) 18:24:59 ]
>>711
どうもです。
試してみます。

713 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 18:47:12 ]
VB2005が何か落ちまくる。

コピペしようとすると、コピーの段階でdevenv.exeのCPU使用率が
急上昇して最終的に落ちるか固まる。

はー・・・。

714 名前:デフォルトの名無しさん [2007/06/15(金) 18:48:28 ]
Dim str As String = "abc"

str = Format(str, "@,@,@")

MsgBox("str")

これで出力をすると結果が「@,@,@」になるのですが、どうしてなのでしょうか?;

どの解説サイトを見てもFormat関数の書き方は間違ってないはずなのですが・・・



715 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 18:49:12 ]
ちなみにHndles Button.click内にあります。

716 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 19:09:04 ]
すみません、上記は間違いです

Dim str As String = "abc"

str = Format(str, "@,@,@")

MsgBox(str)

自分では「a,b,c」と出ると思ってるのですが、どこか間違ってるんでしょうか?

717 名前:716 [2007/06/15(金) 19:14:32 ]
VB2005です

718 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 19:16:07 ]
TextBox/DateTimePicker/CheckBox/RadioButton などのコントロールが
50個以上あるフォームが有るのですが、フォームのクローズボタンなどで
閉じられた際に、内容が修正された場合には確認のメッセージを
表示させたいのですが、どうすれば良いでしょうか?

TextBoxの場合はModified がありますが、それ以外のコントロールはありませんし・・・。


719 名前:デフォルトの名無しさん [2007/06/15(金) 19:19:03 ]
>>718
起動した時に覚えておいて
Closingかなんかでチェックすればいいんじゃね?


720 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 19:27:46 ]
>>719
やっぱりそれしか無いですかね。

なんか遅くなりそうで心配・・・。

721 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 19:32:32 ]
フラグ一つ見るのに時間がかかるわけがないと思うんだが。
たぶん1nSecもかからないと思うぞw

722 名前:718 mailto:sage [2007/06/15(金) 19:50:28 ]
>>721
え?フラグ一つってどういうことでしょうか?

今、修正される可能性があるコントロール全てを、データクラスにして
表示する時と閉じる時にセットして比べようとしているんですが・・・。

もしかして自分は壮大な過ちを犯してしまっているのか!

723 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 20:09:45 ]
そのデータクラスにIChangeTrackingを実装すればいい。

724 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 20:14:26 ]
フラグを一つ付けるためだけにコントロールを継承するのはアホらしいでしょ
Control.TagプロパティやDictionary(Of Conrtol, Boolean)でいいと思うけど



725 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 20:15:13 ]
フラグはフォーム全体に一つで十分だろ…

726 名前:724 mailto:sage [2007/06/15(金) 20:18:21 ]
すまん>>723はデータクラスにフラグを付けろって言ってたんだな
それでいいと思う


727 名前:718 mailto:sage [2007/06/15(金) 20:28:27 ]
ありがとう御座います。

IChangeTrackingってググってもあんまり情報が無いですね。
インターフェースですか。

変更されたかどうかと、それをリセットする事が出来るみたいですね。
まさにこれが欲しかった!
.NET2.0スバラシイ!

でも使い方が良く分からない・・・。

ちょっと、いろいろ実験してみます。




728 名前:718 mailto:sage [2007/06/15(金) 21:07:50 ]
駄目だ!
全然値が入らない。

そもそもインターフェースの使い方も良く分からなかった。

作ったデータクラスに、下記を書き込んで
Public Interface IChangeTracking

End Interface


下の変数でどうにかするんだろうけど、、サパーリネ
Dim instance As IChangeTracking


729 名前:デフォルトの名無しさん mailto:sage [2007/06/15(金) 21:28:11 ]
>>718
すまん。
あんたPGの才能ないと思うわ。

たぶんデータが変更された後セーブされずにプログラムが終了されようとしてる時に
そのまま終了するかセーブするかユーザーに確認したい、ということだと思うけど、
それなら、仮に厳密にやるとしてもセーブした時点のデータと
プログラムが終了されようとした時点のデータを比較するだけじゃん。

普通はそこまでしなくても、例えば

Private dataModified as Boolean = False

みたいなフィールドを作っておいて、何か一つでも変更があったらこれをTrueにすれば
用は足りるんじゃないの?
もちろんundoした場合の動作の厳密さが必要ならこういう手抜きはダメだけどね。

730 名前:718 mailto:sage [2007/06/15(金) 21:37:08 ]
>>729
才能無くてサーセンwwwww


それって、修正される可能性があるコントロール全てに
イベントを作るって事ですか?

731 名前:デフォルトの名無しさん [2007/06/15(金) 22:17:30 ]
>>730
そういう聞き方するってことはたぶんコントロール自体をデータの入れ物にするような設計、
つまり何かのタイミング(ファイルにセーブするとか?)で一度に全部のコントロールの
プロパティをまとめて読むような設計なんだろうけど、普通はそもそも
そういうプログラムの書き方しないと思うよ。

732 名前:718 mailto:sage [2007/06/15(金) 22:55:30 ]
ガーン。
そうなんですか。

>>731の書いてある通りに、登録ってしたらコントロールの内容をDBへ
一括に書き込もうとしているんですが、これってオカシイんですか。
(コントロール→データクラス→DB)

それで、登録されずに閉じられようとした場合には、確認のメッセージを
出したいって感じですが・・・。

733 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 00:37:24 ]
いや、検証はいつかしなくちゃいけないんだから、

・コントロール全部にイベントつけて値が変わったら個別の検証コード走らす
・close, apply, ok等のアクションで全体の検証コード走らす

のどっちかでしょ。

前者だったらclose,apply,ok等のアクションで判定するのは一つのフラグで済むけどイベントがたくさん
後者だったらイベントたくさんはいらないけどアクションで全体を検証しなくちゃいけない

どっちでもいいと思うけど、コントロールが多いなら後者がいいんじゃないの?

734 名前:716 [2007/06/16(土) 01:43:54 ]
どなたか分かりませんか?;
ボタンのクリックイベントで

Dim str as string

str=Format("ABC","@,@,@")

Msgbox(str)

とだけやっても結果が@,@,@となりできませんでした・・・
数字の場合だと

Dim str as integer

str=Format("123","00000")

Msgbox(str)

00123となり大丈夫だったんですが、Stringになると・・。

開設サイトを見ても文字列の書式は

Format("ABC","@@@@@")

で結果が  ABCとなると書いてあるのに私のプログラムですと@@@@@なってしまいます;



735 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 10:04:26 ]
まあ何が間違ってるか、ってそれはきみの学習姿勢が間違ってるんだよ。煽り抜きで。
または致命的に頭が悪いか。

いずれにせよ、そのレベルのことを人に聞くのは恥ずかしいことだ、って意識がないとしたら
PG向いてないよたぶん。

736 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 10:19:00 ]
>>734
ここの下のほうを見ろ
msdn2.microsoft.com/ja-jp/library/wb216dct(VS.80).aspx

737 名前:デフォルトの名無しさん mailto:age [2007/06/16(土) 16:41:37 ]
>>735
ま た お ま え か

煽り抜きで言わせてもらうが頭大丈夫か?
このスレで「PGとして〜」「仕事として〜」「才能が〜」「素質が〜」とか言って叩かれてるやつ全部お前だろ?
お前はプログラマという職業が素質、才能のあるやつにしかできないものだと思っているみたいだが
もはやPGが流れ作業員として溢れている現状を把握できていればそんな高貴なもんじゃないと分からんのかw

そもそも、ここはVB.NET質問スレであって
ここに来ているやつは初心者はもちろんの事、仕事外で趣味でやってるやつもいて当然なんだが
そこを把握できてない点で頭でっかちなお前さんはPG向いてないよ?
チームで組んだことがない孤独PGか、自分の発想しか受け付けないワンマン上司と見たな。

そんなハイクオリティなお前さんには
つ「【才能(笑)】高貴なVB.NET質問スレ【才能(笑)】」



738 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 17:02:51 ]
>>737
> このスレで「PGとして〜」「仕事として〜」「才能が〜」「素質が〜」とか言って叩かれてるやつ全部お前だろ?
俺も言ってるから、全部同一人物ではないよ。

739 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 17:05:57 ]
「VB.netの」質問をするレベル以前の質問があるのも事実

740 名前:737 mailto:sage [2007/06/16(土) 17:12:17 ]
>>738
ちなみに俺も。

741 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 17:12:21 ]
「VB.netの」回答をするレベル以前の回答があるのも事実

742 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 18:30:05 ]
>>737
何度言っても分からん馬鹿だね。
初心者であることと叩いてるんじゃないんだよ。
怠惰を叩いてるの。

初心者でも怠惰じゃなきゃ734みたいな質問はしない。

743 名前:デフォルトの名無しさん [2007/06/16(土) 18:39:35 ]
>>742
かわいそうな  ゆ  と  り  w

744 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 19:00:10 ]
>>741
低レベルな質問には低レベルな回答で十分



745 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 19:06:25 ]
VBスレだけは回答者がアホ杉。 C丼スレと比べても明らか。

746 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 19:08:19 ]
c#スレもここ1年ぐらいはずいぶんレベル低いんだけどな。

747 名前:デフォルトの名無しさん [2007/06/16(土) 20:12:18 ]
てかみんなC#もVB.NETも同じように使えるんだろ?

748 名前:デフォルトの名無しさん [2007/06/16(土) 21:02:23 ]
同じように使えるがVB上がりは総じてバカなんだお^^

749 名前:デフォルトの名無しさん mailto:sage [2007/06/16(土) 21:49:57 ]
VB6しかできません><

750 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 02:43:45 ]
>>742
怠惰?お前は734の何が分かってるんだ?
分かったから>>737で書いたとおり専用スレにでも行っとけ

751 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 02:45:45 ]
>>742
あと「何度」って
どれとどれとどれとどれどれと、どれだよ?

752 名前:デフォルトの名無しさん [2007/06/17(日) 03:35:48 ]
>>742
そう思えばスルーすればいいじゃないか?
別にここはそういう人間が来ていけない理由もないし
怠惰であろうがなかろうが答えてもいいと思える人間が答えられるならそれでいいじゃないか

753 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 05:56:12 ]
throw new exception("他でやれ")

754 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 22:58:03 ]
VB2005からVCで作られたDLLをコールするときにエラーが出て困ってます。
関数のパラメータに構造体を指定して、構造体のメンバの文字列を渡したいけれど、
なんかうまく行かないんですよね。VB2005だと固定長文字列ってのがサポートされて
いないとか何とか言うのは分かったけれど、解決方法が不明となっています。アドバイスをお願いします。

コードはこんな感じ。
*VC2005*****************************************************************
typedef struct{
 int iTemp;
 char cTemp[256];
}tag_strTemp;

void __declspec(dllexport) WINAPI TestFunction(tag_strTemp* pstrTemp)
{
 MessageBox(NULL, pstrTemp->cTemp, "", 0);
}

*VB2005*****************************************************************
Moduel Module1
 Public Structure tag_strTemp
  Public iTemp as Integer
  Public cTemp as String ←ここの定義に問題があるんだと思ってます。
 End Structure
End Module

Public Class Form1
 Private Sub Form1_Load(・・・)
  Dim strTemp as tag_strTemp
  strTemp.cTemp = "ABCDE"
  TestFunction(strTemp)
End Sub
End Class



755 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 23:03:16 ]
MSDN の相互運用マーシャリング以下の項目見れ
サンプル付きで解説されてる

756 名前:デフォルトの名無しさん mailto:sage [2007/06/17(日) 23:34:39 ]
つうか
chrにString渡してどうする・・・・
Chrで渡せばいいのに・・・・

757 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 00:12:40 ]
>>756
君も恥かかないうちにその辺で止めといたほうがいいよw

758 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 00:23:27 ]
>>757
まぁ・・・書き方はともかく理由は分かってそうなイメージだけどな

759 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 00:41:08 ]
756が分かってるわけないでしょw

値型と参照型の区別もついてないか、あるいはCで>>754みたいな構造体を
作ったときのメモリイメージが理解できてないか、少なくとも何れかではある。

760 名前:デフォルトの名無しさん [2007/06/18(月) 09:14:20 ]
>>759
まさか・・・Stringを値型と勘違いしている・・・わけねぇべ
そんなPGいねぇだろ




761 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 10:07:38 ]
>>754
<StructLayout(LayoutKind.Sequential)> _
Public Structure tag_strTemp
  Public iTemp as Integer 
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst := 256)> _
  Public cTemp as String
End Structure

詳細は>>755 の通りでMSDN参照のこと。
複雑になるようならC++/CLIでアセンブリラッパを作ってもよい。

762 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 12:24:29 ]
アラインメント(パッキング)も指定した方がいいんじゃない?
まあMSDNライブラリにデフォのパッキングサイズは8Byteって書いてあるのは
間違いっぽいから要らないのかもしれないけど。

あとOut属性も。

763 名前:デフォルトの名無しさん [2007/06/18(月) 13:32:31 ]
SQL鯖のDBのカラムで AAA というカラムがあり VarChar(100)でNotNull+デフォルト空文字だとして
データ取得する時に

1: dim temp as string
2: temp = directcast(dt.rows(0).item("AAA"),string)

として取得している部分があったとき
2の部分でこうやってやるのってムダダしやる必要ってあると思う?
俺は定義で必ずNullはないとしているんだからナンセンスだと思うんだが みんなはどうやってるんだろ?

if dt.rows(0).item("AAA") isnot dbnull.value then
 temp = directcast(dt.rows(0).item("AAA"),string)
else
'あれば何か書く
end if


764 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 17:59:04 ]
SQL文中で
ISNULL(対象カラム,'')
ってしておけばいいんでない。



765 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 19:42:13 ]
やる必要なし
NotNull制約を外した場合を考慮するってことなんだろうけど
そんなこと考え出したら、システムがややこしくなっちまう
心配ならデータ設計見直すべき

766 名前:デフォルトの名無しさん mailto:sage [2007/06/18(月) 21:37:34 ]
>>762
適当なこと言うな。
.NET のマーシャリングのデフォルトパッキングは8で間違いないし
この場面ではパッキングサイズは問題にならない。
文字列を DLL に渡したいのに Out 属性つけてどうする。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<282KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef