VB.NET質問スレ (Part16)
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
2006/06/04(日) 23:48:00http://pc8.2ch.net/test/read.cgi/tech/1143631763/
0002デフォルトの名無しさん
2006/06/04(日) 23:52:39CType(sender, TextBox).Nameが"textBox1"か"textBox2"で判断したら?
0003デフォルトの名無しさん
2006/06/04(日) 23:52:46言語仕様などのリファレンス
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbref/html/vbmscLROverview.asp?frame=true
.NET Framework リファレンス
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/netstart/html/cpframeworkref_start.asp?frame=true
.NET Framework を使用したプログラミング
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpguide/html/cpconprogrammingwithnetframework.asp?frame=true
正規表現
http://www.microsoft.com/japan/msdn/library/?url=/japan/msdn/library/ja/cpgenref/html/cpconregularexpressionslanguageelements.asp?frame=true
サンプルコード
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/vbref/html/vboriVBVCSharpSamples.asp?frame=true
0004デフォルトの名無しさん
2006/06/04(日) 23:53:52http://dobon.net/vb/
http://dobon.net/vb/dotnet/index.html
Microsoftクイック スタート チュートリアル
http://ja.gotdotnet.com/quickstart/default.aspx
Insider.NET
http://www.atmarkit.co.jp/fdotnet/index.html
宇宙仮面の C# プログラミング
http://ukamen.hp.infoseek.co.jp/
.NET のつぼ
http://park16.wakwak.com/~mimi/dotnet/top.html
.NET TIPS
http://www.atmarkit.co.jp/fdotnet/dotnettips/index/index.html
緑のバイク ★ 初めてのC# プログラム全般
http://homepage3.nifty.com/midori_no_bike/CS/
VB.NETとC#でデザインパターン
http://hccweb1.bai.ne.jp/tsune-1/
匣の向こう側
http://www.ne.jp/asahi/nami/mei/index.html
WisdomSoft
http://wisdom.sakura.ne.jp/
じゃんぬねっと
http://jeanne.wankuma.com/
どっとねっとふぁん - C# Tips And Samples -
http://homepage3.nifty.com/dotnetfan/index.html
C#プログラミングTips
http://www.atmarkit.co.jp/fdotnet/csharptips/index/csharptips_index.html
CodeProject
http://www.codeproject.com/vb/net/
0005デフォルトの名無しさん
2006/06/04(日) 23:55:31http://www.codeproject.com/vb/net/
the GotDotNet Home Page
http://www.gotdotnet.com/
KEN's .NET
http://www5b.biglobe.ne.jp/~yone-ken/VBNET/index.html
Cetus Links: 19,498 Links on Objects and Components / .NET
http://www.cetus-links.org/oo_dotnet.html
HIRO's.NET
http://vbdotnet.fc2web.com/index.html
@IT:特集 .NET開発者のためのオンライン・リソース・ガイド
http://www.atmarkit.co.jp/fdotnet/special/onlineres/onlineres_01.html
.NETでいきまっしょい!
http://santamartadotnet.hp.infoseek.co.jp/
これがほしかった!厳選サンプルツール集
http://anetm.com/dev/tools/vbdotnet.htm
ぬーやんのdotNET講座
http://www.geocities.jp/nuu_yan/dotNET/index.html
PINVOKE.NET
http://www.pinvoke.net/
WinAPI Database for VB Programmer
http://www.geocities.co.jp/SiliconValley-Cupertino/5872/
Windows Api programming in C# , VB.NET, and VB6. Examples of P/Invoke and DllImport with Source code
http://custom.programming-in.net/
0006デフォルトの名無しさん
2006/06/04(日) 23:56:29http://www.kamalpatel.net/ConvertCSharp2VB.aspx
@IT:.NET Tools
http://www.atmarkit.co.jp/fdotnet/tools/index/index.html
SharpLibrary Redirector
http://www.sharplibrary.com/
MSDN アカデミック アライアンス 技術資料
http://www.microsoft.com/japan/msdn/academic/articles/
「300 秒でズバリ !!」&「10 行でズバリ !!」シリーズ
http://www.microsoft.com/japan/msdn/thisweek/wednesday/default.asp
PAPA'n VB
http://www.mitene.or.jp/~sugisita/index.html
VB レスキュー花ちゃん
http://www.bcap.co.jp/hanafusa/dotnet/index.html
(Java覚え書き)デザインパターンあれこれ
http://www.dmz.hitachi-sk.co.jp/Java/Tech/pattern/
algorithm
http://www.mnet.ne.jp/~tnomura/algorithm.html
ラムダ計算入門
http://www.kb.ecei.tohoku.ac.jp/~sumii/class/keisanki-software-kougaku-2005/lambda.pdf
数値計算の基礎
http://www7.ocn.ne.jp/~kawa1/numeric.pdf
0007デフォルトの名無しさん
2006/06/04(日) 23:58:01ました。過去スレリンクは前スレと同様に外してます。
0008デフォルトの名無しさん
2006/06/05(月) 00:12:44そもそも名前である必要はあるのか?
単純に sender と TextBox1 の参照を比較するだけじゃ駄目なのか?
0009デフォルトの名無しさん
2006/06/05(月) 01:13:250010デフォルトの名無しさん
2006/06/05(月) 10:37:27Stackに格納できる要素の数を制限する方法はないでしょうか?
Pushするたびに、ある数以上の要素になった場合、
古いものから削除したいのです。(常に最新のx個からだけPOPできればよい)
何か良い方法はないでしょうか?
0011デフォルトの名無しさん
2006/06/05(月) 12:38:070012デフォルトの名無しさん
2006/06/05(月) 12:45:33001310
2006/06/05(月) 12:49:17>必要なきゃpopしなきゃいいだけだと思うけど。。
いえ、最新のもののPOPはしばしば必要なのです。
Undoちっくな動作をさせたいのですが、
追加する要素の一つ一つ(実際には数M単位のクラスの実体)が結構大きいため、
メモリの消費を少なくするために、せいぜい最新3,4個の要素だけ
保持しておきたいのです。
>>12
あくまでさせたい動作はFIFOではなく、LIFOです。
0014デフォルトの名無しさん
2006/06/05(月) 18:30:02そこはかとなくウンコ設計の匂いがする。。
なんで参照のコピーじゃいかんの?
本当にクローンをバッファにぶち込む必要なんてあるのか?
質問に関してはStackじゃそれはできないと思う。
っていうかそれ既に純粋なスタックじゃないし。
多分自分でも分かってると思うけど、
配列をラップしてそういうクラスを作るしかないんじゃないかな。
0015デフォルトの名無しさん
2006/06/05(月) 23:07:56話だと思うが。
まあどっちにしても自作かな、やっぱり。
0016最凶VB厨房
2006/06/05(月) 23:31:59|○○○○
push操作
|●○○○
push操作
|●●○○
pop操作
|●○○○
---------------
|●●●●
push操作
●|●●●
push操作
●●|●●
pop操作
●○|●●
こんなイメージかねぇ・・・。
デクがあるともっと楽チンに作れそうな感じだけどね
0017デフォルトの名無しさん
2006/06/05(月) 23:53:47閉じてしまうのは仕様ですか?
0018デフォルトの名無しさん
2006/06/06(火) 00:58:440019デフォルトの名無しさん
2006/06/06(火) 10:21:00基礎しか習っていないので何をしたらいいのか全然わかりません
アルゴリズム等、簡単に教えてもらえるとありがたいです。
参考になるHPや本なども紹介してくれるとうれしいです
002010
2006/06/06(火) 10:42:24>14-16
やっぱ自作しかないかな〜とは思ってました。
ウンコ設計の可能性は否定できません。。。
当方どうも論理的思考回路が欠如してるのは自覚しております。
もちろんクラス変数でStack定義してるので中身はクラスへの参照です。
ただ、参照のコレクションってことは、その先に当然実体があるわけで、
その実体の数を減らしたいために、コレクションの要素数を制限したかったのです。
Stackそのまま使えたら楽だな〜と思ったんですが、やっぱ自作しますです。
レスありがとう!
0021sage
2006/06/06(火) 15:15:02ものをcsvファイルの中から検索するプログラムを作ってみようと
思ったのですが、どうやってcsvファイルと条件(文字列)を比較して
いいかわかりません。
また、csvファイルを何行何列で指定して比較できるか。などわかりません。
やり方をご存知の方、またはこれに使えそうなサイトを知っている人
がいましたら、教えていただけると幸いです。
0022デフォルトの名無しさん
2006/06/06(火) 15:30:25CSVファイルと言えども、単純なファイルの読み書きと文字列の操作で処理ができる。
CSVファイルの大きさに制限が入ってよいならCSVファイルを1行ごと読み込んで
それをカンマで区切って(splitメソッドなどを使用)配列にいれるなり、コレクションに入れるなりすればよい
0023デフォルトの名無しさん
2006/06/06(火) 17:04:57こんな感じじゃなかろうか。実行してないから動くかしらねw
'TextFieldParserでファイル開く
Dim reader As New Microsoft.VisualBasic.FileIO.TextFieldParser("c:\test.csv")
reader.TextFieldType = FileIO.FieldType.Delimited
reader.SetDelimiters(",") 'デリミタはカンマ
’現在行をフィールドに分解した結果を格納するString配列
Dim currentRow() As String
Dim colCount As Integer ’カレント列
While Not reader.EndOfData
currentRow = reader.ReadFields()
colCount = 1
For Each field As String In currentRow
If field.Contains("条件") Then ’検索したい条件をこんな感じで検索する
Debug.Print(reader.LineNumber - 1 & "行目の" & colCount & "列目にあるお!")
End If
colCount += 1
Next
End While
End Sub
002423
2006/06/06(火) 17:15:070025デフォルトの名無しさん
2006/06/06(火) 17:30:26http://dobon.net/vb/dotnet/control/buttonarray.html
ここに書いてある方法(newして、サイズ指定して、場所指定して・・・を繰り返す)ではなく、
既存の、デザイナで配置したコントロールを配列にしたいんですが、どうやるんでしょうか?
おねがいします。
0026デフォルトの名無しさん
2006/06/06(火) 17:42:510027デフォルトの名無しさん
2006/06/06(火) 17:45:45普通にtextbox1とかを配列にほうりこんでも、型○○の値を○○の1次元配列に変換できませんってでます。
0028デフォルトの名無しさん
2006/06/06(火) 18:04:21Visual Basic における配列 以下一通り目を通せ。
0029デフォルトの名無しさん
2006/06/06(火) 18:40:230030デフォルトの名無しさん
2006/06/06(火) 19:44:31(正直、だったらそのように書けよ、と思う)
旧VBのコントロール配列に相当する機能は.NETにはないよ。
つーか、そんなへっぽこならMSにある移行ガイドぐらい読めよ
0031デフォルトの名無しさん
2006/06/06(火) 20:06:32>>26は十分具体的だと思うんだが。
つーか、参照先のアドレスに書かれているソース、ちゃんと読んでる?
2番目に配列作って放り込むソースが書いてあるんだが。
0032デフォルトの名無しさん
2006/06/06(火) 21:51:15ほんとだ!見逃してました。どうもありがとう!
0033デフォルトの名無しさん
2006/06/06(火) 22:07:250034デフォルトの名無しさん
2006/06/07(水) 13:53:16.Net Frameworkの範囲内で(WindowsAPIを呼ばずに)
点を描く方法はないでしょうか?
0035デフォルトの名無しさん
2006/06/07(水) 14:42:41数学的には点というのは幅も高さも0なので意味がない、と言う判断のようだな
003634
2006/06/07(水) 15:00:46やっぱりFillRectangleとか使うしかないんですかねぇ
まあ内部処理的には点を描くのも、幅・高さが1のFillRectangle描くのも
あんまかわんないだろうからいいとするか(*´д`*)
ありがとう〜
0037デフォルトの名無しさん
2006/06/07(水) 16:40:260038デフォルトの名無しさん
2006/06/08(木) 08:47:39MDI親フォームから子フォームを呼び出して動作するアプリを開発しています。
Windowsタスクマネージャを見ていると、子フォームを開くとメモリ使用量が
増えるのですが、そのフォームを閉じてもメモリ使用量が元に戻りません。
MDI親フォームでは下記のようにして子フォームを呼び出しています。
Sub Form_Show()
Dim f As New Form1
With f
.MdiParent = Me
.Show()
End With
f = Nothing
End Sub
この f を Dispose してしまうと子フォームは閉じてしまうし。。。
子フォーム側で閉じる際に何か処理をしなくてはいけないのでしょうか?
0039デフォルトの名無しさん
2006/06/08(木) 09:12:58そのうち GC が片づけてくれる。
004038
2006/06/08(木) 09:29:14なんかアプリを使用し続けているとだんだんと動きがモッサリしてきます。
さらに長時間使用していると「仮想メモリの値が(ry」となります。
GCが片付けてくれる「そのうち」って、もしかしてアプリ終了時?
0041デフォルトの名無しさん
2006/06/08(木) 09:30:07作った子フォームのクローズイベントとかに、親側の関数をAddHandlerしとけばいいんじゃないの?
そうすれば作った子供が死んだら、風の便りが届くようになる。
0042デフォルトの名無しさん
2006/06/08(木) 10:40:59004338
2006/06/08(木) 11:15:23そして元のサイズに戻すと、最小化する前と比較するとかなり少なくなっています・・・
>41 これから試してみます。
>42 そういうものは使用していないんですが・・・でもAdo.Netを使用しているので
その後処理も再確認してみます。
0044デフォルトの名無しさん
2006/06/08(木) 12:41:00そりゃチミが書いたコードが腐ってるんだよw
あたりまえだろ
ダメな奴の特徴として、何でもかんでもMSのせいにするんだよなw
問題の切り分けもろくにしないうちから
0045デフォルトの名無しさん
2006/06/08(木) 12:55:140046デフォルトの名無しさん
2006/06/08(木) 13:00:390047デフォルトの名無しさん
2006/06/08(木) 14:38:54SyncLockやら同期オブジェクトを使う。volatileは手軽そうに見えて割と制約が多い。
その上C/C++のvolatileは動作が違ったりするので混乱のもと。
0048デフォルトの名無しさん
2006/06/08(木) 14:56:27CLRのメモリの状況を見たいならパフォーマンスモニタの.NET CLR Memoryを見る。
タスクマネージャのメモリ使用量はワーキングセットなので指標にならない。
MDIの子フォームを閉じるタイミングで開放されてない非マネージドリソースがあるんじゃないか?
コンポーネントの非マネージドな部分が確保したメモリが大きくてもマネージドな部分は小さいことが多いので、
自然なGCにたよっててもなかなか開放されずにメモリ不足に陥ることがある。
GCはマネージドなヒープが不足したとき初めて起きるもので、非マネージドのメモリが足りなくなってもGCは発生しない。
0049デフォルトの名無しさん
2006/06/08(木) 15:24:090050デフォルトの名無しさん
2006/06/08(木) 16:21:500051デフォルトの名無しさん
2006/06/08(木) 16:26:130052デフォルトの名無しさん
2006/06/08(木) 16:29:050053デフォルトの名無しさん
2006/06/08(木) 17:02:28tyr&catchで対応しました。
ありがとうございます。
0054デフォルトの名無しさん
2006/06/08(木) 17:51:000055デフォルトの名無しさん
2006/06/08(木) 18:34:15画像に線などを描画して、保存してみたのですが、描画したものが反映されません。
どうすれば反映されるんでしょうか?
0056デフォルトの名無しさん
2006/06/08(木) 18:37:05それでいけたんだけど、画像じゃないファイルを表示しようとまずtryするんで、
catchするまでに2秒ほどスリープされます。
0057デフォルトの名無しさん
2006/06/08(木) 18:57:09Graphics.FromImage
0058デフォルトの名無しさん
2006/06/08(木) 19:02:26同じ初心者のする質問でも共感できるのとできないのがあるよ。
自分でろくに調べも考えもせず、安直に人に聞いてるのがミエミエの質問になんか
普通死んでも答えたくないだろ。
0059デフォルトの名無しさん
2006/06/08(木) 19:23:40まあそんなの自分を責めるなって。
0060デフォルトの名無しさん
2006/06/08(木) 20:21:19SQLのSYSDATEでOracleサーバから日付を取得し、「yyyy/mm/dd」という形で変数に格納したいのですが、うまくいきません。
SQLの使い方が悪いのでしょうか?よろしくお願いします。
StrHiduke = String型
dbDataTable = DataTable型
dbAdapter = New OracleDataAdapter("select to_char(sysdate,'yyyy/mm/dd') from Table名", dbConnect)
dbAdapter.Fill(dbDataTable)
StrHiduke = dbDataTable.Rows(0).Item(0)
0061デフォルトの名無しさん
2006/06/08(木) 20:46:02どのタイミングで、どんなエラーが出るのか明記してくれ。
0062デフォルトの名無しさん
2006/06/08(木) 20:48:48でDBNULLとか言われます。
0063デフォルトの名無しさん
2006/06/08(木) 20:50:26こうでます。
0064デフォルトの名無しさん
2006/06/08(木) 21:49:28↓
SQL自体に問題は無いだろうか?
↓
SQLを生成した時点でブレークして、どんなSQLが実行されようとして
いるのか確認してみよう。
‥‥と、ふつうなら考えるだろうな。
つか、簡単に取得できるクライアント側のシステム日付を使わないのは
なぜ?
0065デフォルトの名無しさん
2006/06/08(木) 21:53:40を実行するとちゃんとに日付が出ます。
SYSDATEを使えとの仕様なので、なぜと言われても(^_^;)
0066デフォルトの名無しさん
2006/06/08(木) 22:03:560067デフォルトの名無しさん
2006/06/09(金) 01:09:58もしDUAL表を使った1行1項目の問い合わせならAdpaterなんて使わずに
OracleCommand.ExecuteScalar で済ませない?
0068デフォルトの名無しさん
2006/06/09(金) 02:55:37C/Sならサーバサイドの時間を使うなんて普通だろ
むしろクライアントサイドの時間なんて動作ログや乱数のシード以外に使い道は無い
0069デフォルトの名無しさん
2006/06/09(金) 09:10:18質問があるんですけど〜
VB.netのトラックバーコントロールを
かっこよくデザインする方法ってどうやればいいんでしょうか。
たとえばWMPの音量バーみたいな感じにしたいんですけど。
0070デフォルトの名無しさん
2006/06/09(金) 09:24:39007169
2006/06/09(金) 09:26:480072デフォルトの名無しさん
2006/06/09(金) 12:26:37お前のかっこいい基準はなんなんだ?
0073デフォルトの名無しさん
2006/06/09(金) 12:27:51>>71
ごめ、69だったのか 見落としてた
グラフィック自作でやればいいんでね?
0074デフォルトの名無しさん
2006/06/09(金) 18:36:440075デフォルトの名無しさん
2006/06/09(金) 19:55:35ないのでしょうか?
0076デフォルトの名無しさん
2006/06/09(金) 19:58:410077デフォルトの名無しさん
2006/06/09(金) 20:00:34ttp://dobon.net/vb/dotnet/file/xmlserializer.html
0078デフォルトの名無しさん
2006/06/09(金) 20:07:08xmlを使ってみます。
0079デフォルトの名無しさん
2006/06/09(金) 22:31:06テキストエディタで”31”と打ったテキストファイルを読み込み、
VBで変換して、ファイルに書き込み、バイナリエディタで開いたときに
31と表示させたいのですが、どのように変換したら宜しいでしょうか?
文字列「31」⇒変換⇒「1」
文字列「80」⇒変換⇒「・」
など
上記の変換の方法が分かりません。
ちなみに、ファイルのopen , close , read , writeはプログラムできました。
0080デフォルトの名無しさん
2006/06/09(金) 22:44:110081デフォルトの名無しさん
2006/06/09(金) 22:46:450082デフォルトの名無しさん
2006/06/10(土) 01:04:37RotateTransformっていうそれっぽいのを使ってみたんですが、一部しか回転しませんでした。
0083デフォルトの名無しさん
2006/06/10(土) 22:08:46ネットワークプログラミングの知識が劣るので助け舟をください。
ネットワークゲームでTCPサーバー、クライアントプログラムを作るとき、
やはり非同期接続式にしないとだめでしょうか?
0084デフォルトの名無しさん
2006/06/10(土) 22:12:020085デフォルトの名無しさん
2006/06/10(土) 22:16:280086デフォルトの名無しさん
2006/06/10(土) 22:30:140087デフォルトの名無しさん
2006/06/10(土) 22:32:310088デフォルトの名無しさん
2006/06/10(土) 22:36:18大人気ない煽りは止めていただきたいです。
0089デフォルトの名無しさん
2006/06/10(土) 22:43:46データベースに接続できません
このバージョンのVisual Studioを使った場合に限り、SQL Server Desktop Engine
データベースおよびMicrosoft Accessデータベースに接続することができます。
ってでます。これってひょっとして(も何も)MySQLにはVB.Net 2003では
MySQLに接続できないってこと????
0090デフォルトの名無しさん
2006/06/10(土) 22:46:100091デフォルトの名無しさん
2006/06/10(土) 22:55:530093デフォルトの名無しさん
2006/06/10(土) 23:20:210094デフォルトの名無しさん
2006/06/10(土) 23:21:42>>非同期接続
そのあたりは好みだと思うんだが。
駄目とか聞いてるけど、つまり非同期接続は嫌だってことか?
0095デフォルトの名無しさん
2006/06/10(土) 23:29:420096デフォルトの名無しさん
2006/06/10(土) 23:51:55.net faramework2.0SDK+SharpDevelopは?
俺はこれしか知らないがこれって意外とマイナー?
0097デフォルトの名無しさん
2006/06/11(日) 00:01:190098デフォルトの名無しさん
2006/06/11(日) 00:04:44開発環境はないんじゃないか?
0100デフォルトの名無しさん
2006/06/11(日) 00:16:280101デフォルトの名無しさん
2006/06/11(日) 00:18:580102デフォルトの名無しさん
2006/06/11(日) 00:32:16な、何を言っているのかね?
0103デフォルトの名無しさん
2006/06/11(日) 00:39:01ありがとうございます。
これは移動するだけで回転はできないんでしょうか??
0104デフォルトの名無しさん
2006/06/11(日) 01:08:30ttp://thesource.ofallevil.com/japan/msdn/net/books/ProgVBNET/chapter18.asp
0105デフォルトの名無しさん
2006/06/11(日) 01:24:390106デフォルトの名無しさん
2006/06/11(日) 01:40:350107デフォルトの名無しさん
2006/06/11(日) 01:42:050108デフォルトの名無しさん
2006/06/11(日) 02:04:360109デフォルトの名無しさん
2006/06/11(日) 02:25:47プロダクトキーのメールは届いたが、込み合っててダウンロードできねぇ
込み合ってますのが面が文字化けしてるし
0110デフォルトの名無しさん
2006/06/11(日) 13:41:58株なんかの取引を自動化したいのですが、どうしても、
「特定の座標にマウスを移動させて、クリックする」という作業が発生するのですが、
これを簡単に実行するには、どうも「なでしこ」ぐらいしかみあたらないのです。
なでしこだと、ちょっと安定性に不安が残るのと、ちょっとした計算ぐらいはするし、
なんとなくですが、VBとかWSHみたいなものでも簡単に出来そうな気がするので、
何かヒントになりそうな情報がありましたら、是非ご教授ください。
0111デフォルトの名無しさん
2006/06/11(日) 14:19:44514 名前: デフォルトの名無しさん [sage] 投稿日: 2006/06/11(日) 13:41:24
かなり必死に探したものの見つからないので、質問させてください。
株なんかの取引を自動化したいのですが、どうしても、
「特定の座標にマウスを移動させて、クリックする」という作業が発生するのですが、
これを簡単に実行するには、どうも「なでしこ」ぐらいしかみあたらないのです。
なでしこだと、ちょっと安定性に不安が残るのと、ちょっとした計算ぐらいはするし、
なんとなくですが、VBとかWSHみたいなものでも簡単に出来そうな気がするので、
何かヒントになりそうな情報がありましたら、是非ご教授ください。
515 名前: デフォルトの名無しさん [sage] 投稿日: 2006/06/11(日) 13:47:46
>>514
っmouse_event API
0112デフォルトの名無しさん
2006/06/11(日) 16:53:110113デフォルトの名無しさん
2006/06/11(日) 17:26:38myPath.StartFigure()
myPath.AddLine(60, 10, 10, 10)
myPath.AddLine(10, 10, 10, 60)
myPath.AddArc(10, 10, 100, 100, 180, 90)
g.FillPath(Brushes.White, myPath)
myPath.CloseFigure()
g.DrawPath(Pens.White, myPath)
これは、うまくいくんですが、
myPath.StartFigure()
myPath.AddLine(10, 110, 60, 110)
myPath.AddArc(10, 10, 100, 100, 180, -90)
myPath.AddLine(10, 60, 10, 110)
g.FillPath(Brushes.White, myPath)
myPath.CloseFigure()
g.DrawPath(Pens.White, myPath)
角度を変えた、こっちがうまくいきません。
2つ目のコードだけ、三角形のカーブさせたいところに直線が引かれてしまいます。
なんででしょうか??分かる方、お願いいたします。
0114デフォルトの名無しさん
2006/06/11(日) 17:28:26VB.NETでボタンを作成し7バイトで改行するように幅を調節したのですが、「12345678」と言った文字だと「7」と「8」の間で改行するのですが、
「いわし(バラ)」のような文字列だと「し」と「(」の間で改行されてしまいます。
これを「(」と「バ」の間で改行させるためのプロパティや方法は有りますでしょうか?
ちなみにフォントは「MSゴシック」
0115113
2006/06/11(日) 17:33:32addArcの角度の指定に誤りがあったようです。
ありがとうございました。
0116デフォルトの名無しさん
2006/06/11(日) 17:47:19button1.Text = "いわし(" + Environment.NewLine + "バラ)"
0117デフォルトの名無しさん
2006/06/11(日) 19:14:55.NET FrameWork SDKと、VisualStudio EEの二つを見つけることができました
ですが、VS EEはSP2環境必須だったので諦めざる終えず、FrameWorkという物にしようと思うのですが
こちらはどうやら毎回DOS環境でしかコンパイルできないみたいで少々不憫に思いました
それでもしこの他に便利なものがあればそれに越した物が無いと思い、VBを扱えるフリーの開発ソフトはあれば教えていただけないでしょうか?
よろしくお願いします。
0118デフォルトの名無しさん
2006/06/11(日) 19:53:48どうやら入れ食いとはいかないようですなw
0119デフォルトの名無しさん
2006/06/11(日) 19:58:43WIN98ユーザーをなめんな
0120デフォルトの名無しさん
2006/06/11(日) 19:59:59コメント欄も注目。
0121デフォルトの名無しさん
2006/06/11(日) 20:38:47SP2は場合によっては不都合が出るらしくて入れていない人は多いみたいですよ
0122デフォルトの名無しさん
2006/06/11(日) 20:50:100123デフォャ泣gの名無しさb
2006/06/11(日) 20:55:13ノシ
0124デフォルトの名無しさん
2006/06/11(日) 20:58:52SharpDevelopでぐぐれ。
>>120
なんて言うか、ヒューマンスキルって大切だよなと気付かせてくれた。
0125デフォルトの名無しさん
2006/06/11(日) 23:24:380126デフォルトの名無しさん
2006/06/12(月) 01:28:53>>124
>SharpDevelop
こんな便利なツールがあったんですね、感謝します
>>125
SP2でしか動かないソフトの話ですよ>VisualStudioEE
0127デフォルトの名無しさん
2006/06/12(月) 17:28:18(必ずデータベースとの連結が必要?)
0128デフォルトの名無しさん
2006/06/12(月) 17:36:24ま、別に連結せんでも使えるがした方が楽。
そもそも連結対象はデータベースじゃなくて DataSet/DataTable 。
0129デフォルトの名無しさん
2006/06/12(月) 17:38:35DataSetとペアになってればいいから、DBからではなくDataSetオブジェクトを直接コードで生成する。
0130127
2006/06/12(月) 19:19:51すみません。Windows Forms でした。
>>129
DataSet オブジェクトに直接コードで、という事ですが、グリッドの、行列を指定して直接値を
投入する、という事はできない、という事ですね。
DataSet/DataTable とグリッドをペアで使う必要がある、と。
0131デフォルトの名無しさん
2006/06/12(月) 19:35:33ことは可能だよ。テンプレサイトで検索したらコードも見つかる。
0132デフォルトの名無しさん
2006/06/13(火) 01:58:020134デフォルトの名無しさん
2006/06/13(火) 19:37:58不特定の長さの文字列に、4文字毎にスペースを入れる
為にはどのようなコードをかけばいいでしょうか?
例えば
"ABC_EFG_HIJKLMN_OPQ"
(_はスペース)
などとありましたら、"ABC__EFG__HIJK_LMN__OPQ" と出力したく思います。
よろしくお願いします。
0135デフォルトの名無しさん
2006/06/13(火) 20:25:570136デフォルトの名無しさん
2006/06/13(火) 20:44:54y = Regex.Replace(x, "(....)", "$1_")
0137134
2006/06/14(水) 10:48:24>136
おふた方どうもありがとうございます。
正規表現面白そうですね。調べてみます。
0138デフォルトの名無しさん
2006/06/14(水) 16:27:44C#だと
if (handler1 != null)
{
handler1(this, e);
}
と同じだと思っているのですが、
C#で以下の様に書いたのをVB.NETのEventでもやりたいのですが
できるでしょうか??
if (handler1 != null)
{
handler1(this, e);//イベントハンドラがセットされている場合呼ぶ
}
else
{
otherProc();//セットされていない場合別の処理を呼ぶ
}
0139138
2006/06/14(水) 16:37:22Event EClick As System.EventHandler
のようにEventとして宣言してしまうと
VB.NETではできない(C#ではできるのに)
という結論になりつつあるのですが。。。
Eventではなく単なるDelegateとして
Dim EClick2 As System.EventHandler
のように宣言すると可能ですが、もちろん「Event」として
扱ってくれないのでVS上で雷マークで出てきてくれません。
0140デフォルトの名無しさん
2006/06/14(水) 16:40:47でも正直それはイベントの使い方が変。
裸のデリゲート使った方が良いかも。
0141138
2006/06/14(水) 17:39:312003ではこれは仕様ですね。。。
0142デフォルトの名無しさん
2006/06/14(水) 18:51:43Dim b as 引数の型
End Sub
引数aがintegerだったら、Monaの中でbはintegerを宣言
引数aがdoubleだったら、Monaの中でbはdoubleを宣言のようなことってできますか?
0143デフォルトの名無しさん
2006/06/14(水) 18:56:310144デフォルトの名無しさん
2006/06/14(水) 18:58:17オーバーロードについて調べた方がいいよ。
っていうか、最低入門書ぐらい一通り目を通せよ。
人に質問なんてそれからだろ。
0145デフォルトの名無しさん
2006/06/14(水) 19:03:04継承もついでに勉強しましょう。
0146デフォルトの名無しさん
2006/06/14(水) 19:08:560147デフォルトの名無しさん
2006/06/14(水) 19:12:030149デフォルトの名無しさん
2006/06/14(水) 21:05:360150デフォルトの名無しさん
2006/06/14(水) 22:24:35常識を言っただけだろ。
ところで、論理シフトって組み込みの機能で用意されてないのかな
やっぱり、例えば次のようにやるしかない?
Public Shared Function LogicShiftRight(ByVal x As Integer, ByVal amountOfShift As Integer) As Integer
Dim bitMask As Integer = &H7FFFFF >> amountOfShift
Return ((x >> amountOfShift) And bitMask)
End Function
0151デフォルトの名無しさん
2006/06/14(水) 22:28:23Public Shared Function LogicShiftRight(ByVal x As Integer, ByVal amountOfShift As Integer) As Integer
If amountOfShift < 0 Then Return LogicShiftLeft(x, amountOfShift)
Dim bitMask As Integer = &H7FFFFF >> (amountOfShift - 1)
Return ((x >> amountOfShift) And bitMask)
End Function
0152デフォルトの名無しさん
2006/06/15(木) 10:20:53それともアプリ起動時に1回openして終了時にcloseという感じなのでしょうか?
0153デフォルトの名無しさん
2006/06/15(木) 10:46:57SQL実行後とにopen/closeは論外だろうが
フォーム単位とかイベント処理の単位とかならあり
最近のはコネクションプールされてるからopen/closeのコストもたいしたこと無い
無用なセッションの増加やトランザクションの維持を避ける事と秤に掛けて検討するのが良い
0154デフォルトの名無しさん
2006/06/15(木) 13:03:16だから、毎回(検索の場合、更新はトランザクション単位で)開閉するのが当然。
0155デフォルトの名無しさん
2006/06/15(木) 18:04:47亀だが…
http://support.microsoft.com/kb/895474/
0156デフォルトの名無しさん
2006/06/15(木) 20:24:25本とか読んでてもいまいち理解不能・・・
0157デフォルトの名無しさん
2006/06/15(木) 20:32:280158デフォルトの名無しさん
2006/06/15(木) 20:41:13そういう技術を一から解き明かすようなことを掲示板に求めたって無理だろw
MSDNライブラリのチュートリアルとか、案外丁寧に書いてあるからあれ読めば
理解できるでしょ。
あとMSDNライブラリに『プログラミング Microsoft Visual Basic .NET』って本の、
ちょうど継承の部分を抜粋した奴が入ってるけど、けっこういい文章だよ。
アメリカのエンジニアらしく、論理的で網羅的に書いてあるし。
http://www.microsoft.com/japan/msdn/net/books/ProgVBNET/chapter5.asp
0159デフォルトの名無しさん
2006/06/15(木) 22:23:350160デフォルトの名無しさん
2006/06/15(木) 23:13:351) フォーム内で FLASH の SWF ファイルを再生する事はできますか?
2) Windows エクスプローラのように、コピー中などのアニメーションを表示させたいのですが
どうやって実現したらよいかわかりません。
アニメーションはどうやって実現できますでしょうか?
アドバイスを頂けるとうれしいです。よろしくお願いします。
0161デフォルトの名無しさん
2006/06/16(金) 10:42:391) AxWebBrowser
2) SHFileOperation
0162160
2006/06/16(金) 11:02:52ありがとうございます。
1)AxWebBrowser を調べてみましたが、ブラウザコントロールだと思うのですが Flash Player のプラグインが
インストールされている前提が必要になるようです。
そういった前提条件なく flash を再生する方法はないでしょうか?
(VB.NET のコントロールで flash を再生できるとベストなのですが)
2) SHFileOperation ですが、私の説明がまずかったのですが、
ファイルのコピーや移動が行ないたいのではなく、例えばエクスプローラなどで
ファイルのコピーを行なうと、アニメーションが表示されると思います。
これを、自前のアプリの中で同じように、何かの処理中にアニメーションを表示したいのですが
vb.net のアプリの中でアニメーションを表示させる定石みないな事があれば教えてください。
アドバイスのほど、よろしくお願いします。
0163デフォルトの名無しさん
2006/06/16(金) 11:10:181)無理
でも、古いバージョンのSWFなら標準のflashプラグインで行けるよ
2)AVIファイルを貼り付ける
0164デフォルトの名無しさん
2006/06/16(金) 11:10:25> そういった前提条件なく flash を再生する方法はないでしょうか?
> (VB.NET のコントロールで flash を再生できるとベストなのですが)
Flash は Microsoft の製品じゃない。
> これを、自前のアプリの中で同じように、何かの処理中にアニメーションを表示したいのですが
> vb.net のアプリの中でアニメーションを表示させる定石みないな事があれば教えてください。
アニメーションGIF 使うかタイマで書き換え。
0165デフォルトの名無しさん
2006/06/16(金) 12:33:15パソコンの存在を前提とせずにエクセルを使いたいのですが、
みたいな電波な質問をする人はこの世界入っちゃダメだと思うけど。
0166デフォルトの名無しさん
2006/06/16(金) 12:46:32誰にでもできるよ!できるよ!(AA略
0167デフォルトの名無しさん
2006/06/16(金) 13:11:01それはプログラミングでは無い
コードの編集作業だ
プログラミンは選ばれた者だけが行える至高の労働だ
0168デフォルトの名無しさん
2006/06/16(金) 13:54:27とは言えない罠。仕様書に沿ってアルゴリズムを組み上げて、ムダな
くムリなくバグも少ないコードが書けてこそだ。
0169デフォルトの名無しさん
2006/06/16(金) 15:03:21死んだじいちゃんに言われた。「コーダーだけにはなっちゃなんねぇ・・・」って
0170デフォルトの名無しさん
2006/06/16(金) 15:16:380171デフォルトの名無しさん
2006/06/16(金) 15:34:29ttp://pc8.2ch.net/test/read.cgi/prog/1150027539/
0172デフォルトの名無しさん
2006/06/16(金) 17:39:15宿題で、 「与えられた半角文字列中に含まれる単語のうち、 最も多く出現する単語を返す関数(MostFrequentWord) を作成しろ。条件として大文字、小文字を区別しない。
返される文字は最初に出現した表記。2つ以上の単語が
同数の場合、先に登場したものとする。 配列の考え方を利用せよ。」
という問題があるのですが、
この問題の前に、与えられた文字列中に含まれる単語の数を返す関数CountWords を作れという問題もあり、それは、何とか出来たのですが、 今回の問題に、この関数CountWords を利用して作成する。みたいな事らしいのです。
最終的に作成した関数MostFrequentWord を用いるとprint FrequentWord("I love you. You love me.")
実行結果 love となるように作るみたいです。
また 、 作成した CountWords を用いると、この場合
CountWords("I love you. You love me.")
実行結果は 6 と返されます。
分からない事があるのですが、 この与えられた文字列 "I love you. You love me."
は配列として考えることはできるのですか?
どなたか 教えて下さい
0173デフォルトの名無しさん
2006/06/16(金) 17:47:590174デフォルトの名無しさん
2006/06/16(金) 17:49:360175デフォルトの名無しさん
2006/06/16(金) 17:56:38文字列を配列として考えるのではなく、単語を配列の要素として考える。
6個の単語があるのだから、要素数6の配列が出来るよね。
6はループの回数とでもして使わせようとしてると予想。
既に答えが上がっているけど、せっかく書いたのでうp
0176デフォルトの名無しさん
2006/06/16(金) 19:33:170177デフォルトの名無しさん
2006/06/16(金) 20:12:43プログレスバーだっけ?
あれ使えばできる
0178デフォルトの名無しさん
2006/06/17(土) 21:27:550179デフォルトの名無しさん
2006/06/17(土) 22:12:210180デフォルトの名無しさん
2006/06/17(土) 22:51:320181デフォルトの名無しさん
2006/06/17(土) 22:57:520182デフォルトの名無しさん
2006/06/17(土) 23:39:07スマブラ(ネット対戦)
この3つ出来ますかね?
0183デフォルトの名無しさん
2006/06/17(土) 23:53:260184デフォルトの名無しさん
2006/06/17(土) 23:55:470185デフォルトの名無しさん
2006/06/18(日) 00:09:58コントローラやボールの移動、衝突判定など盛り沢山だ。
0186デフォルトの名無しさん
2006/06/18(日) 00:21:390187デフォルトの名無しさん
2006/06/18(日) 16:10:590188デフォルトの名無しさん
2006/06/18(日) 16:50:180189デフォルトの名無しさん
2006/06/18(日) 20:03:38移動とか当たり判定とか
0190デフォルトの名無しさん
2006/06/18(日) 22:04:110191デフォルトの名無しさん
2006/06/18(日) 22:06:310192デフォルトの名無しさん
2006/06/18(日) 22:07:270193デフォルトの名無しさん
2006/06/18(日) 22:49:470194デフォルトの名無しさん
2006/06/18(日) 22:52:290195デフォルトの名無しさん
2006/06/19(月) 16:55:22そのフォームで処理をすると、フォームが固まってしまいます。入力も受け付けてくれません。画面も真っ白になってしまいます。
ただ、バグを起こしているとか無限ループとかではありません。
途中で、メールを送るような処理をさせているのですが、メールもちゃんと送られています。
これでは、ユーザーからは、バグっているように見えてしまいます。これは何が原因なのでしょうか?また、対処法はあるのでしょうか?
ご存知の方、よろしくご教授願います。
0196デフォルトの名無しさん
2006/06/19(月) 16:59:420197デフォルトの名無しさん
2006/06/19(月) 17:48:55ループしてる処理があるなら、DoEvents入れてみるとか。
0198197
2006/06/19(月) 17:50:35http://www.atmarkit.co.jp/fdotnet/dotnettips/136doevents/doevents.html
こんな状態になってると思われる。
0199デフォルトの名無しさん
2006/06/19(月) 18:36:35どう贔屓目に見てもそういうのバグっていうんだよw
少なくともユーザーから見たらバグ以外のなんでもない。
こんなとこで自分を正当化して何になるんだよ
0200デフォルトの名無しさん
2006/06/19(月) 18:38:52DoEventsとかいってるヨタは無視してよろしい。
普通にスレッド起動して、重い処理はそこで実行するようにしましょう。
0201デフォルトの名無しさん
2006/06/19(月) 18:46:530202デフォルトの名無しさん
2006/06/19(月) 20:30:42CPU使用率見てみ
低ければリフレッシュで再描画とかしてみ
0203デフォルトの名無しさん
2006/06/19(月) 20:52:59Thread.Sleep(10000) とかな
0204デフォルトの名無しさん
2006/06/19(月) 22:19:15>>メールを送るような処理をさせているのですが、メールもちゃんと送られています。
かなり勘で言うけど、メールを送った後の応答待ちでフリーズかましているだけとか?
0205195
2006/06/20(火) 10:22:49みなさん、ご回答ありがとうございます。
処理には、確かに2時間かかります。それを一日に何度も繰り返します。
この処理中でも、バックアップ処理や他の業務アプリは正常に動いていました。
私もスレッドで処理したいのですが、設計書に「同期処理で行う」と書いてあるので
諦めました。
こういうのは、Windowsサービスにした方がいいと思うんですが、SEがWindowsサービスの
存在を知らないようです。
DoEvents、リフレッシュで再描画、BackgroundWorkerを試してみます。
みなさん、ありがとうございました。
0206ボンちゃん
2006/06/20(火) 10:26:45プロパティに値を設定しております。(色情報等)
ソースにはSiteMapDataSourceを使用しています。
Menuコントロール内のあるボタンをクリックすると、上記の設定が適用され
ボタンの色が変わります。
が、問題はその後なのです。
Menuボタンクリックによりコンテンツが表示されるのですが、その中で
違うページへ移動(ハイパーリンク等)すると、マスターメニューの
StaticSelectedStyleが適用されなくなってしまいます。(選択状態とならない)
具体的に表現すると。。。
・Menuコントロールによって大分類を選択する。
・選んだ大分類のボタン色が変わる。
・表示されたページ内で、小分類のリンクを選択する。
・小分類のページへ遷移すると、さきほど選んだ大分類のボタン色が初期状態に。
・本当は小分類のページへ遷移しても、大分類は選択されたままの状態にしたい。
といった感じです。
コンテンツページで遷移を行ってもマスターページのMenuコントロールボタン選択状態を
保つ方法はないでしょうか?
リクエストのurlとweb.sitemapを照らし合わせて、選択状態を管理しているのではと
考えているのですが、urlが変わると選択状態にならないみたいなので困っております。。。
根本的に間違っている可能性もあるので、似たような事を実現されている方、解決方法が分かる方
情報がありましたらよろしくお願いいたします。
0207デフォルトの名無しさん
2006/06/20(火) 11:46:050208デフォルトの名無しさん
2006/06/20(火) 12:19:50VBとVB.NETってどう違うんでしょう?
0209デフォルトの名無しさん
2006/06/20(火) 12:33:280210デフォルトの名無しさん
2006/06/20(火) 12:46:340211デフォルトの名無しさん
2006/06/20(火) 12:54:160212206
2006/06/20(火) 13:10:590213デフォルトの名無しさん
2006/06/20(火) 13:14:34良いけど、「実際に〜」って聞いてるから実際そうなった人がいないだけじゃない?
あと、再現する最少のソースをどっかに乗せるとかしないと
そういう質問はスルーされるよ
0214ボンちゃん
2006/06/20(火) 13:41:46その朕の質問に答えられないと申すか
0215デフォルトの名無しさん
2006/06/20(火) 14:12:38option strict = onにしてから、
そのサブプロシージャに文字列なり数値なりを渡すと文字列の場合でも数値の場合でも怒られるんですが、なぜ??
オーバーロードを解釈してないのかな?
0216デフォルトの名無しさん
2006/06/20(火) 18:27:31再現可能なコードぐらい出せよ。
0217デフォルトの名無しさん
2006/06/21(水) 17:44:05調べる方法はありますか?
PC_A のプログラムにて PC_B であるサービスが起動しているかを判断したいのですが。
方法があればアドバイス、よろしくお願いします。
0218デフォルトの名無しさん
2006/06/21(水) 19:07:540219VB初心者
2006/06/22(木) 09:56:09あるDLLを利用するのに、VB6では Anyキーワードを使っていました。軽い気持ちでAnyをそれぞれByRef B as Byte(),ByRef C as Char() と書き換えました。
※BもCも引数の受け渡しだけでなく、呼び出し先で書き換えられる仕様です。
期待する動きをしないので、デバック用のDLLを作って受け取った値をチェックすると...
紆余曲折をへて、Char配列は素直にString型で良い事が判明しましたが、Byte配列がうまくいきません。どなたか良い方法をご存知の方いませんでしょうか?
<DllImport("hBTR.DLL", EntryPoint:="TESTCALL", _
SetLastError:=True, CharSet:=CharSet.Unicode, ExactSpelling:=True, _
CallingConvention:=CallingConvention.StdCall)> _
Public Shared Function TESTCALL( _
<MarshalAs(UnmanagedType.U2)> ByVal op As Int16, _ '値渡 OK
<MarshalAs(UnmanagedType.LPArray)> <[In](), Out()> ByRef pBP() As Byte, _'参照バイト配列 X
<MarshalAs(UnmanagedType.LPStr)> ByRef pDB As String, _ 'String ○
)as integer
Byte配列もStringで渡せば! と思ったのですが、戻り値に0が含まれると、そこで切れてしまいます。
呼び出し部分
dim b() as string:redim b(127)
dim c as string
c="ABC":b(0)=1
Ret = TESTCALL(0, b, c)
RetはDLLからの値を受け取っている。1番目の引数0も正しくDLLに送られている。2番目の引数は受け渡しは成功するが、受け取りに失敗。3番目の引数は受け渡し、受け取り成功
たかが128バイト
本番で利用するDLLはこの128バイトを設定領域として利用。
ユーザーが保持しなければいけない仕様orz
テストDLL側で本番のDLLをコールしたら成功w(DLLの機能は問題なし)
VB2005<byte配列>DLL
いい方法をご存知なかた教えてください。
0220デフォルトの名無しさん
2006/06/22(木) 10:07:49なので ByRef As Byte() を渡すと言う事は byte** を渡すという事。
0221VB初心者
2006/06/22(木) 10:18:46レス有難うございます。
ポインタのポインタですよね^^
バイト配列のポインタ(引数の受け渡し)は成功している(呼び出し先のDLLで確認)ので、問題はアンマネージコードとの関連部分
<MarshalAs(UnmanagedType.LPArray)> <[In](), Out()> ByRef pBP() As Byte, _'参照バイト配列 X
このあたりだと推測されます。
上のスレへの追加情報
DLL呼び出しで、呼び出し先で引数の値を変更する場合。ByValは利用できない。
0222デフォルトの名無しさん
2006/06/22(木) 10:20:380223デフォルトの名無しさん
2006/06/22(木) 10:24:420224VB初心者
2006/06/22(木) 10:40:54Delphi7ですが
type
tPB = record
pb:array[0..127] of byte;
end;
ptpb = ^tpb;//tPBの配列へのポインタ宣言
function TESTCDLL(op:word; var PPB:ptpb;var PDB:pchar): Integer; stdcall;
var
_PPB:tpb;
begin
copymemory (@_PPB.pb,PPB,128);//デバックの為ローカルへCopy
//本番のDLL
ret:=MainDLL(_op,_PPB.pb,_PDB.db);//_PPB.pbのバイト配列が戻ってくる
copymemory (PPB,@_PPB.pb,128);//ローカル領域のデータをバイト配列のポインタ領域へコピー
//引数と戻り値の内容が、一致している事を確認
0225デフォルトの名無しさん
2006/06/22(木) 11:08:58PDB 周りは不明だが、C に翻訳するとこんな感じか?
typedef struct _tPB {
char pb[128];
} tPB, *ptpb;
int TestCall(short op, ptpb PPB, char* PDB) {
int ret;
tPB _PPB;
CopyMemory(&(_PPB.pb), PPB, 128);
ret = MainDLL(op, _PPB.pb, _PDB.db);
CopyMemory(PPB, &(_PPB.pb), 128);
return ret;
}
だとしたらやはり ptpb はポインタのポインタにはならんな。ただのポインタだ。
0226VB初心者
2006/06/22(木) 11:29:08レス有難うございます。大変ありがたい....
delphiの特徴として 関数定義の引数にVar 宣言をするとそれが「参照型」になります
PPB:ptbp |(C)ptpb PPB //varをつけない場合 値渡し
var PPB:ptbp |(C) ptpb* PPB //var をつけた場合 <このようになります
※しかし、呼び出し元からは値を受け取れているのですよねorz...
同じ場所へ同じくCopyMemoryで値を戻して受け取れないのは何故だろう
このようなデバックコードを試しましたが、呼び出し元では
PPB.pb[0]:=100;NG //byte配列
PDB:="ABC";//String OK
と言う結果ですね...
http://msdn2.microsoft.com/ja-jp/library/23acw07k.aspx
このあたりの話なのでしょうか?
128byteで深遠に足を踏み入れてしまったw
0227デフォルトの名無しさん
2006/06/22(木) 11:41:51とすると今度は copymemory の引数がおかしいという事にならんか?
> copymemory (@_PPB.pb,PPB,128);//デバックの為ローカルへCopy
の第二引数が PPB になってるって事はコピー対象が ptpb/tPB* であって、
頭の 4 バイトに tPB へのポインタを含み残り 124 バイトは意味不明の 128 バイト、をコピーする事になるような。
0228VB初心者
2006/06/22(木) 12:14:25ちょっと整理してみました。少し戻ってVB2005のバイト配列にこのようなデバックコードを用意しました。
間違いがあればご指摘ください
Dim sbb() As Byte
ReDim sbb(128)
For i = 0 To 16
sbb(i) = CByte(i)
Next
DLLインポート部分の宣言
<MarshalAs(UnmanagedType.LPArray)> <[In](), Out()> ByRef pBP() As Byte,
バイト配列の参照型を宣言。バイト配列のポインタを受け渡している
Ret = TESTCALL(sbb)
○delphi 側
function test (var PPB:ptpb)//
var _PPB:tpb//変数部に実体を同じ大きさのメモリ確保
begin
copymemory (@_PPB.pb,PPB,128);//@はCの&に当たる
ウオッチによる参照
PPB addressの値
PPB^ 0,1,2,3,4,5,6,...
_PPB.pb 0,1,2,3,4,5,6,...
正しく呼び出し元から値が入ってきています。
問題はこの値が呼び出し元に戻らないのですorz
copymemory (PPB,@_PPB.pb,128);
Delphiからのメモリコピーは正しく終わっているように思われますが
VB側に戻らないようです...
0229デフォルトの名無しさん
2006/06/22(木) 12:16:19Byte() 持った構造体書いて(MarshalAs で固定長配列を指示して)、
Marshal.AllocCoTaskMem/Marshal.StructureToPtr でメモリにコピーして、
その IntPtr を ByRef で渡す。
てのが妥当かな。
0230デフォルトの名無しさん
2006/06/22(木) 12:37:35たぶん、
<[In](), Out()> ByVal pBP As Byte()
でいいんじゃない?
呼び出し先がずっとバッファのアドレスの値を保持していて、
好き勝手なタイミングで書き換えるとかじゃなければ。
(この場合、ガベコレを抑制しないとまずかったはず)
MarshalAs属性はいらないと思う。
0231VB初心者
2006/06/22(木) 12:42:00構造体については試してみました。いろいろ有難う
<MarshalAs(UnmanagedType.Struct)> この宣言をおこなうと参照型が使えなくなりますorz
Lptstructにすると実行時に Structを使いなさいとコンパイラに怒られる
Structを使う(byValになる)と保護しているメモリーに書き込みをしましたエラー...
話を単純化すると
バイト配列をDLLに渡して[バイト配列の帰り値]を受け取りたいだけなんですが....
MSの責任者教えてくださいw
0232VB初心者
2006/06/22(木) 12:47:04レス有難う
<[In](), Out()> ByVal pBP() As Byte, _
で試してみました。
ByVal はメモリ保護で実行時エラー ... orz
0233デフォルトの名無しさん
2006/06/22(木) 12:53:18ていうか Delphi の方を var で受ける意味あるの?
今でてるの見る限り一切無いはずなんだけど。
ptpb で受ける限り、var の有無にかかわらず pb への変更は呼び出し元でも有効なはず。
それともつけなきゃ暗黙で const になるとでも言うのか。
それならそれで ptpb じゃなくて var の tPB で受ければいい話のはずだし。
0234VB初心者
2006/06/22(木) 13:02:20var 演算子をつけない場合、delphiはヒープに引数を丸ごとコピーします。
ポインタの場合はどしているんだろう?汗
もともとVBからはポインタ、サイズは4Byteしかないので意味がないといえばそうかもしれません。
いずれにしてもVARを外して試してみますね。
0235VB初心者
2006/06/22(木) 13:20:35VAR をつけないと引数の受け取りも失敗します
さて、その後も調査した結果 Byte配列の1バイト目はデーターが
戻っていることが判明しました。
しかしながら、配列サイズが1となっていました。
ReDim Preserve sbb(127)このようにサイズを戻しても先頭以外は0になっていました。
やはりDLLのインポート宣言に何かが必要なようです...
0236VB初心者
2006/06/22(木) 18:30:59方法は配列を以下のように宣言して
Public Structure pBPstruc
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=128)> <FieldOffset(0)> Public ByteB() As Byte
End Structure 'pBPstruc
DLL インポート部では
<MarshalAs(UnmanagedType.LPArray)> ByRef pBP() As pBPstruc, _
ということでした。
StringやChar Stringbuffでは配列に0が入った場合、長さが小さくされてしまう。
今回、調査して感じた事ですが
DLLの多くは(供給)された物が多い中、VB6のコードでDLL呼出は成功しない。
今回、多言語でテストDLLを作って動作をシミュレーションする事が出来たので、VB側からの
データーの流れを確認できたのですが、VBだけの環境では厳しかったかもしれません。
ポインタがない言語ではいろいろとねorz...
なぜC# C++を使わないのか? それは(笑...
0237デフォルトの名無しさん
2006/06/22(木) 18:44:20バッファの先頭アドレスを渡す方法は>>230に書いた通りで間違ってないと思うよ。
MSDNライブラリにもそのように書いてあるし、今までそれで問題は出てないから。
それでエラーが出るとすれば、原因は他の部分でしょう。
後C文字列の先頭アドレスを渡すときもStringをByValで渡さないとだめね。
ただし、これは呼んだ先で文字列を変更しない場合だけね。(つまりOut属性は不可)
呼んだ先で文字列を変更したい場合はStringBuilderをByValで渡すようにする。
この辺りもMSDNライブラリに書いてあるよ。
非常に散漫で分かりにくいけど。
0238VB初心者
2006/06/22(木) 20:17:33レス有難うございます。
ポインタの値そのものは書き換えることはないので ByValということですね。
※以下アンマネージドコード DLLコールに限った話
<MarshalAs(UnmanagedType.LPStr)> ByRef pKb As String
ByRefでString文字列をDLLに渡して、又、受け取ることも出来ました。
String のままでは、ByValではコンパイラが実行時に止めてしまいますw
byref Stringを ByVal StringBufferでにしたほうが良いという理由はどういった事でしょうか?
よろしければ理由を書いていただけると助かります。
0239デフォルトの名無しさん
2006/06/22(木) 20:37:14コンパイラはコンパイル時にしか仕事しないはずだよ。
コンパイラだからねw
>byref Stringを ByVal StringBufferでにしたほうが良いという理由はどういった事でしょうか?
StringBuilderね。
上の方で誰か既に書いてるみたいだけど、参照型をByrefで渡すってことは
Cで言えばポインタ変数のアドレスを渡すってことになるから。
ちなみに参照型をByValで渡すことはポインタ変数の値(つまりアドレス)を
渡すことになる。(Stringの場合は例えばUTF8をANSIに変換したりする必要があるから
完全に正確な表現じゃないと思うけど。)
VB初心者さんが欲しいのはこっちなんじゃ?
0240VB初心者
2006/06/22(木) 23:48:07デバック時における実行時エラーがありますよw
最大の難関? をクリアーして現在VB2005で色々と楽しんでいます。
ちなみにストリング変換はマネージドコントロールにANSI変換を指定しているので、
変換する手間はかかりません。
DLLを通じてDBからのANSI2バイトコードが変換作業なしに
そのまま表示されまして、これはちょっと感動w
VB6では byte<>UniCode(String)が必要でしたからね(苦笑
ByRef と ByVal についてはマネージコードとの兼ね合いと実行時の動作で決めました。
ByValにすると 引き渡す型とマネージコードの不一致、もしくは実行時エラーが起こります(謎
いすれにしてもバイト配列の相互受け渡しができれば、あとは何がおきても拡張すれば出来ると確信しております。
0241デフォルトの名無しさん
2006/06/23(金) 00:20:02っていうか、そんな姿勢じゃ遠からず痛い目見るよ間違いなく
0242デフォルトの名無しさん
2006/06/23(金) 00:55:450243VB初心者
2006/06/23(金) 00:56:05ソースデバック時のエラーは実行時エラーではないのでしょうか?(汗
コンパイラが出すわけではないですが、統合環境(デバッカ)が出すものですね。
0244デフォルトの名無しさん
2006/06/23(金) 02:12:00C++でDLLを作ってみました。
void PiTest(int mul, unsigned char *buf, char *msg) {
for (int i = 0; i<PITEST_BUFSIZE; i++) buf[i] = buf[i] * mul;
strcpy_s(msg, PITEST_MSGSIZE, "PiTest - PiTestDLL Complited !"); }
VB2005からはこれでOKでした。
Declare Sub PiTest Lib "PiTestDLL.dll" (ByVal mul As Integer, _
<[In](), Out()> ByVal buf() As Byte, ByVal msg As StringBuilder)
DelphiはよくわからないがC++で書くと次のようになってるので話がややこしくなっていると思われます。
void test(int op, unsigned char **buf, char **msg)
文字列の戻りにStringBuilderを使わなくてもよかったのはchar **になっていたためでしょう。
stringは変更不可ですが別のstringに入れ替えるのはByRefで出来たというわけです。
0245デフォルトの名無しさん
2006/06/23(金) 07:47:35> <[In](), Out()> ByVal buf() As Byte, ByVal msg As StringBuilder)
そこの<[In](), Out()>も省略できるはず。
0246デフォルトの名無しさん
2006/06/23(金) 08:28:42呼び出し先で文字列をmodifyするときは本来Out属性つけないとまずいでしょ
0247デフォルトの名無しさん
2006/06/23(金) 09:20:20それらを統合したものってそのものなんだから。
0248デフォルトの名無しさん
2006/06/23(金) 12:20:41そんな餌で俺様が(
0249デフォルトの名無しさん
2006/06/23(金) 12:23:30StringBuilder はデフォで In, Out だよー。
0250デフォルトの名無しさん
2006/06/23(金) 16:57:53byte配列の方のことを言ってるのだと思う。MSDNに記述あり
>blittable 型の配列と、blittable 型のメンバだけを含むクラスは、最適化のために、
>マーシャリング時にコピーされるのではなく固定されます。
>これらの型は、呼び出し元と呼び出し先が同じアパートメントに属する場合には、
>In/Out パラメータとしてマーシャリングされるように見えることがあります。
>ただし、そのような型は実際には In パラメータとしてマーシャリングされるため、
>引数を In/Out パラメータとしてマーシャリングする必要がある場合には、
>InAttribute 属性と OutAttribute 属性を適用する必要があります。
blittableって辞書に無いけどMSの造語?
0251デフォルトの名無しさん
2006/06/23(金) 17:06:39> blittableって辞書に無いけどMSの造語?
ttp://www.answers.com/blit&r=67
Computer Jargon、IT俗語。
で、私もそう思ってたんだが、
実際にはプリミティブ型配列は(属性の指定にかかわらず)強制的に In, Out になるっぽいんだよね。
非プリミティブな構造体の配列だと In だけなんだけど。
0252デフォルトの名無しさん
2006/06/23(金) 18:45:20あそっかそいうやStringBuilderは例外扱いだったね。
0253デフォルトの名無しさん
2006/06/23(金) 19:49:4832x32 の画像を二つ読み込んで、64x32 になるように、それぞれの画像を横に結合したいのですが、
結合するよい方法があれば教えてください。
0254デフォルトの名無しさん
2006/06/23(金) 19:54:370255VB初心者
2006/06/23(金) 23:53:54テストプログラムまで書いて頂いて恐縮です。 まさにChar** でした... さて1難去ってまた1難、こんな事がおきました。
Public Class Api32 'INIファイルから取得
<DllImport("kernel32", EntryPoint:="GetPrivateProfileStringW", _
SetLastError:=True, CharSet:=CharSet.Unicode, ExactSpelling:=True, _
CallingConvention:=CallingConvention.Winapi)> _
Public Shared Function GetPrivateProfileString( _
<MarshalAs(UnmanagedType.LPTStr)> ByVal lpApplicationName As String, _
<MarshalAs(UnmanagedType.LPTStr)> ByVal lpKeyName As String, _
<MarshalAs(UnmanagedType.LPTStr)> ByVal lpDefault As String, _
<MarshalAs(UnmanagedType.LPTStr)> ByVal lpReturnedString As System.Text.StringBuilder, _
ByVal nSize As UInt32,<MarshalAs(UnmanagedType.LPTStr)> ByVal lpFilename As String) As UInt32
End Function
End Class 'このAPIのコードは他の掲示板から借用したものです。もちろん動作します
Public Function GetPathDataforINITDLL(ByVal Head As String, ByVal Value As String, ByVal Df As String) As String
dim s as string
'引数を受け取って動作させようとすると動かない >NG
ret = CInt(Api32.GetPrivateProfileString(Head, Value, Df, DLLBuff, CUInt(DLLBuff.Capacity), IniFileName))
s = DLLBUFF.toString 'Sには"DEF"
'関数内にStringを宣言して動かすと動く...
dim HEAD2 as string ="H"
dim VALUE2 as string ="V"
ret = CInt(Api32.GetPrivateProfileString(Head2, Value2, Df, DLLBuff, CUInt(DLLBuff.Capacity), IniFileName))
s = DLLBUFF.toString'Sには INIファイルの内容 動作するorz...
end function
呼び出し元
API= New API32 'インスタンス化
GetPathDataforINITDLL("H","V","DEF")
感覚的には単に文字列を渡しているだけなのですが、何が抜けているのでしょうか?
VBは難しいなぁ... デバッカーでポインターの値が参照できれば...
0256デフォルトの名無しさん
2006/06/23(金) 23:59:490257デフォルトの名無しさん
2006/06/24(土) 00:35:16とりあえず〜WのWin32APIを使うのに引数に<MarshalAs(UnmanagedType.LPTStr)>
指定するのは矛盾してるんじゃないの?
つーか、自分で理解して使おうって気がないなら素直にコピペに徹すればいいのに。
こういう馬鹿なくせにどうでもいいところにこだわるのがプライドだと思ってる奴っているよなw
0258VB初心者
2006/06/24(土) 01:26:12すまん...DLL記章部分。その部分がコピペなんだorz...
DLL用の引数Stringを
DLL呼び出しFunction内部で作るとOK
関数の引数で受け取るとNG
こんな事ってあるのでしょうかw
どんな理屈なんだろう...まったく動かないならまだ理解できるのですが...
0259デフォルトの名無しさん
2006/06/24(土) 01:43:33君にはダメグラマの特徴の一つが現れてるよ。
その特徴とは、冷静に論理的な原因分析をせず、単なる思い付きをバグの原因だと
思い込んで疑わないという奴ね。
0260デフォルトの名無しさん
2006/06/24(土) 02:24:46> とりあえず〜WのWin32APIを使うのに引数に<MarshalAs(UnmanagedType.LPTStr)>
> 指定するのは矛盾してるんじゃないの?
いや、それは正しい。LPTStr の場合どの文字セットを使うかは DllImport/Declare で指定される。
ま、普通は省略するけどな。
0261デフォルトの名無しさん
2006/06/24(土) 02:49:38UPしてる分のコードには怪しいところはなさそうだ。省略してる部分でものすごい凡ミスしてると予想。
0262VB初心者
2006/06/24(土) 10:27:26それもかなり疑ったのですがorz...
確認した事
引数の文字列が間違っていないか?
動作する場合、動作しない場合、いずれも直前のデバック停止で確認
メッセージダイアログ等に出力 相違ない事を確認
動作する場合と動作しない場合、何が違うか?
動作する場合は、問題のAPI呼び出し関数の直前で引数のStringが作られている
元呼び出しf("ABC")
function f(H)
apicall(H) < NG
H="ABC"
apicall(H) < OK
'順番を入れ替えても同じ
end function
If String.Equals(Head, Head_) = True Then MsgBox(Head)'テストコード
結果はFalse orz... VBには魔物が住んでいる...
0263VB初心者
2006/06/24(土) 10:33:380264デフォルトの名無しさん
2006/06/24(土) 11:19:08せめてインデントが表示に反映されるように工夫してくれよ。
一度適当なエディタにコード貼り付けてから
タブ(またはスペース2N文字)をN文字の全角スペースに置換するだけだからさ。
0265デフォルトの名無しさん
2006/06/24(土) 11:44:430266デフォルトの名無しさん
2006/06/24(土) 16:04:00ファイルが無くてもこのAPIはエラーにはならない。
そのままコンパイルして再現できるコードをどこかのアップローダにアップしてurlをはる。
小出しはしないほうがよい。
0267デフォルトの名無しさん
2006/06/24(土) 16:14:24なんてオチだと想像するよw
デバッグの基本は実験と同じ『変数の分離』にあるのに、
それがわからないんだよねこういう人は。
「結果」(つまり意図しない動作)をもたらしている原因を探るためには
疑わしい要素のみを変え、その他の全要素を完全に同じにして実験を行って
結果が変わるかどうかをみないといけないのに、ダメグラマはそういうこと
基本に忠実にやらないんだよな。
複数の要素をいっぺんに変えて実験して結果が変わったのを見て、
全く見当違いの要素をその変化の原因だと思い込んでしまう。
0268デフォルトの名無しさん
2006/06/24(土) 16:44:29ただ、使用しているポートをサーバー側の XP の、Windows ファイアウォールを無効にするか
例外にて追加しないと通信できません。
vb.net 側で Windows ファイアウォールの該当ポートを許可するように設定する事はできますか?
当然一般ユーザでそういった設定をできたらまずいと思うので、管理者ユーザーのみと限定しても
構いません。
利用者がわざわざ設定しなくても、プログラムが勝手に通信を許可できるようにする方法はありますか?
悪意をもったソフトウェアを想定するとそのような機能は用意されておらず、手動で設定しなければならない
ような気もしますが、もし方法があれば教えてください。
0269デフォルトの名無しさん
2006/06/24(土) 17:14:50クライアントのセキュリティは各自が設定を弄るしかないと思う。
というのは、XPのファイヤーウォールだけど、シマンテックやらのそういったセキュリティ系のソフトを
導入している場合、Windows標準の設定は無効にされて、セキュリティソフトのファイヤーウォールが
適応される場合が多い。
特に、企業の場合、こういったソフトを導入している場合が多いので、
Windows標準だけでなく、こういったソフトのセキュリティまで勝手に設定できるようにするのか?
という問題も出てくる。
また、こういった企業が導入しているのはコーポレート版なので、管理用のサーバがあり、
ユーザが勝手に設定できないようにとかアンインストールする場合にも管理者が
直接PCにパスワードを打たないといけない場合がある。
ハッキリ言って、場合によりけりなのでプログラムで設定することはお勧めできない。
Windows標準のファイヤーウォールの設定手順書を書いて終わりのような気がする。
それ以外の場合は、その会社のシステム管理者やらセキュリティ管理者に出てもらわないと、
何も出来ん。
0270268
2006/06/24(土) 17:46:27アドバイス感謝します。
仰る通りなんですよね、確かに…。
実際は設定手順書でカバーするしかないのかな、と思います。
単純な技術的な興味なのですが、vb.net などのプログラムで実装を行なう方法はあるのでしょうか?
なければ、「手作業でやるしか方法はありません、以上」ですむのですが、技術的に解決する方法が
あるのであれば、それを踏まえつつ、手作業を行なうように方針を決定しなければ
なりません。
私の質問がちょっとずれてきてしまっている気もしますが、Windowsファイアウォールの設定を
vb.net もしくはなんらかの方法で設定変更する術は用意されていますか?
0271デフォルトの名無しさん
2006/06/24(土) 18:24:09SP2限定かもしれんが
http://www.atmarkit.co.jp/fwin2k/win2ktips/483sp2admin/sp2admin.html
管理者Onlyで良ければレジストリいじるのが早いんじゃないか?
0272デフォルトの名無しさん
2006/06/24(土) 21:27:36表示するにはどうしたらよいでしょう??
FORMにPICTUREBOXをおいてPICTUREBOXのIMAGEプロパティ
に設定するとアニメーションはしますが、透過部分がフォームを透過しません。
回避策があれば教えて頂けないでしょうか?
0273デフォルトの名無しさん
2006/06/24(土) 22:02:38つうか、簡単にプログラムから設定できるとそれをウィルスやワームが使うだろ
>>271のやり方なんかも別のツールなどでリモート管理をチェックするなりしてないと危ないよ
0274デフォルトの名無しさん
2006/06/25(日) 12:30:48普通エディタには、テキストエリアの左側に、灰色等の文字で現在行が表示されていますが、
この機能はどのようにして表示させているのでしょうか?
いろいろ試したのですが、描画速度が遅かったり、重すぎて使い物にならなかったり・・・
この問題を解決してくれるコントロールやプロパティがあるのでしょうか?
解決策があれば教えてください。
0275デフォルトの名無しさん
2006/06/25(日) 12:37:09っていうか、ステータスバーすらも知らない人間にエディタ作成なんて無理。
見た目が地味だから俺でもできそう、とか思ってるんだろうが
勘違いもいいところ。
0276デフォルトの名無しさん
2006/06/25(日) 13:07:110277274
2006/06/25(日) 13:17:12↓こういう機能を実装したいのですが
1 Public Class Form1
2 Inherits System.Windows.Forms.Form
3
4 #Region " Windows フォーム デザイナで生成されたコード "
5
6 Public Sub New()
あと、エディタ作成が大変難しいことは重々承知の上です。
0278デフォルトの名無しさん
2006/06/25(日) 13:24:29ああ、エディタの作業領域の左隅に行番号の表示したいわけねスマン。
それを実現するコントロールやプロパティー?
あるわけないでしょ。質問スレっていったって馬鹿をいうにも程があると思うけど
0279デフォルトの名無しさん
2006/06/25(日) 13:37:17それなら設定の項目にあるけど。
テキストボックスみたいなコントロールのことを言ってるなら、多分無い。
0280デフォルトの名無しさん
2006/06/25(日) 13:57:37そんな都合のいいコントロールはないので、自分で実装する必要が
ある。本文のスクロールと同期して行番号も再描画したりとかまで
やるのは、エディタ自体をたいへん難しいと感じている時点で高望
みかと。
現在のカーソル位置をステータスバーに表示するくらいでいいんで
ないの?
0281デフォルトの名無しさん
2006/06/25(日) 14:02:34http://www.vector.co.jp/soft/winnt/prog/se366984.html
こんなの見つけた。試してないけど
0283デフォルトの名無しさん
2006/06/26(月) 10:45:04レポート上のTextオブジェクトにコードで値を渡しているんですが
改行コードが無視されてしまいます。
レポートのデザイン時に直接改行コードを入れて、コード側で何もしなければ
印刷やプレビュー時にはちゃんと改行も出力されるのですが、
コードで改行コードを含む文字列を渡すと改行が無視されてしまいます。
しかし、ステップ実行でTextオブジェクトの値を確認すると、ちゃんと
改行コードも含まれています。
レポートのTextオブジェクトの書式で「複数行に出力」にチェックを付けても
結果は変わりません。
どこを弄ればコードから複数行出力することができるでしょうか?
0284デフォルトの名無しさん
2006/06/26(月) 11:18:150285デフォルトの名無しさん
2006/06/26(月) 13:28:49ttp://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=16826&forum=7&6
ttp://support.businessobjects.com/library/kbase/articles/c2015089.asp
0286283
2006/06/26(月) 15:05:490287デフォルトの名無しさん
2006/06/28(水) 03:39:362chブラウザを作っているのですが、
レスアンカーのポップアップ方法のところで詰まっています。
スレッドの表示にwebbrowserを使うとリロードの度にカチカチ言うので、
richtextboxに挿入していく形を取ろうと考えています。
レスアンカーをリンクにして、LinkClickedイベントで
ポップアップを表示させようと思っているのですが、
レスアンカーにリンク指定を出来るのか分かりません。
MSのリッチテキストフォーマットを見てみたのですがよく分かりませんでした。
どのようにしたらレスアンカーにリンクを指定できるのでしょうか?
0288デフォルトの名無しさん
2006/06/28(水) 20:32:29プログラムに画像を埋め込むと、ソリューションエクスプローラーで
「Resources」というフォルダに入るものと入らないものがあるみたいですが、
違いが全くわかりません。コンパイル後に、何か違いはあるのでしょうか?
0289デフォルトの名無しさん
2006/06/28(水) 20:38:14RichTextBox じゃリンクは URL 形式のにしかやれない。
もちろん色とアンダーバーを付ければそれっぽくはなるがイベントは発生しない。
それの判定をやろうとなると MouseUp とかで判定する必要があるな。
0290デフォルトの名無しさん
2006/06/28(水) 21:42:10そうだったのですか。
高度な技術が必要そうですね。
勉強してきます。
ありがとうございました。
0291デフォルトの名無しさん
2006/06/28(水) 21:43:12テキストラベルが配置してある新しいフォームをタイマーで開く時、
フォーカスがそのフォームに取られてしまいます。
フォーカスが取られるタイミングは別なプログラム
(たとえばIE等でネットをしているとき)で
何かのボタン(マウスのホイール、バックスペース、etc...)
を押しっぱなしにしている時です。
visible,show,showdialog全て取られてしまいました
ボタンを押しっぱなしにしているときに新しいフォームを開いても
フォーカスが取られないいい方法はないでしょうか。
0292デフォルトの名無しさん
2006/06/28(水) 22:18:290293デフォルトの名無しさん
2006/06/29(木) 00:05:13タブ型のテキストエディタみたいな奴です
0294デフォルトの名無しさん
2006/06/29(木) 00:25:31TabControl
0295デフォルトの名無しさん
2006/06/29(木) 00:33:57たとえば、起動時にコマンドラインを受け取って、それをTextBoxに表示するだけのアプリがあるとします。
VB2005で単一インスタンスのアプリケーションを作成すると、ApplicationEvents.vbに
StartupNextInstance:単一インスタンスアプリケーションが起動され、それが既にアクティブであるときに発生します。
こういうのが出てきます。
そこで、すでに起動している時にコマンドライン引数付きで再度起動が行われた場合、
StartupNextInstance内でうまくやれば、起動中のウインドウに引数を渡して表示できそうな
気がするのですが、そういったことは可能でしょうか?
0296デフォルトの名無しさん
2006/06/29(木) 00:52:05よければもう少し突っ込んで教えてもらえるとありがたいのですが
Dim tab As New TabPage
TabControl1.TabPages.Add(tab)
とかでやると何もないtabpageが出来るだけですよね
仮にtabpage1にボタンとテキストボックスがあったら同じコントロール配置で新しいタブを作りたいのです
言葉足らずで伝わりにくいかもしれませんがよろしくお願いします
0297デフォルトの名無しさん
2006/06/29(木) 01:45:09Str += "<" + ds.Tables("tb_n").Columns(num).ColumnName + ">"
Str += ds.Tables("tb_n").Rows(j)(num).ToString()
Str += "</" + ds.Tables("tb_n").Columns(num).ColumnName + ">" + vbCrLf
のように、Dataset からの値をフィールド名、値として文字列に結合して
いるのですが、あるフィールドにおかしな値?、NULL? がはいっているらしく、
そのフィールドの発生以降、文字列が連結されなくなってしまいます。
デバッグ中は str += ... の行は実行しているのですが、実際 Str の中身に、文字列は
連結されていません。
イミディエイトウィンドウで ?ds.Tables("tb_n").Rows(j)(num).ToString() の結果は
"" となるんですが、
if ds.Tables("tb_n").Rows(j)(num).ToString() <> "" then とやっても
デバッグすると、なぜか、True となり、if 文のブロックが実行されてしまいます。
なにがなんだかわかりません。何かアドバイス頂けることがありましたら、
よろしくお願いします。
0298VB初心者
2006/06/29(木) 06:40:52lengthでチェックしてみるとか
NULL<インスタンス化されていないセルデーター?
0299デフォルトの名無しさん
2006/06/29(木) 07:12:05>>296
tab.Controls.Add(New TextBox())
と書くと次の質問が目に見えるようだ
0300297
2006/06/29(木) 09:19:33length でチェックは試みたのですが、
If (ds.Tables("tb_n").Rows(j)(num).ToString().Length > 0) Then
MessageBox.Show("Length IS ZERO")
End if
の場合、Length IS ZERO が表示されます。
で、ブレークポイントを設定して、イミディエイトウィンドウで
?ds.Tables("tb_n").Rows(j)(num).ToString().Length を実行すると
0
がかえってきます。実際のコードのデバッグ中と、イミディエイトウィンドウで
確認する内容が異なるので、わけがわからなくなっています。
>>299
上記同様なのですが、ds.Tables("tb_n").Rows(j)(num) Is DBNull.Value
でチェックすると FALSE がかえってきます。
しかし、文字列を結合すると、それ以降、結合されません
何か気になる事があれば教えてください。
0301デフォルトの名無しさん
2006/06/29(木) 09:25:05上手くやれば可能なんじゃないの?
別プロセスだからプロセス間通信が必要になると思うけど。
0302デフォルトの名無しさん
2006/06/29(木) 09:27:38ひとつずつ分解して調べれば?
そのそも、DataSetを二次元配列のように扱うことのって余りメリット無いような。
型付DataSetにしてきちんと定義してこそのDataSetだと思うし。
0303七資産
2006/06/29(木) 12:03:09たとえば、コマンドラインを起動中のForm1.Textbox1に表示する場合...
My.Forms.Form1.TextBox1.Text = e.CommandLine.Item(0)
0304デフォルトの名無しさん
2006/06/29(木) 13:25:54背景や画像の変更方法はわかりますけど・・・時間経過を判断する方法がわかりません・・・
たとえば3秒ごとに切り替えというようなことをやりたいです。
どういった方法がありますか?どうかご教授お願いします。
0305デフォルトの名無しさん
2006/06/29(木) 13:38:520306デフォルトの名無しさん
2006/06/29(木) 13:43:46まだはじめて3日ほどで初日に習ったのにうっかりしてました、すみませんm(_ _)m
0307295
2006/06/29(木) 14:53:11できました! ありがとうございます!!
>>301
ありがとうございます。プロセス間通信は良くわからなかったんですが、
そのへんもMyでできるみたいですね。
0308デフォルトの名無しさん
2006/06/29(木) 14:58:57どなたか教えてください
0309デフォルトの名無しさん
2006/06/29(木) 15:18:50いまいち読み取れないんだけど、こんな感じ?
ttp://dobon.net/vb/dotnet/datagrid/selectedrows.html
0310デフォルトの名無しさん
2006/06/29(木) 20:30:45言語はVisual Studio Express .VB2005です。
________
|名前|年齢|性別|
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
という列を持ったテーブルがありまして、
そのうちの年齢をGROUP BYでまとめてコンボボックスに表示されるようにしました。
そこから選択→実行ボタンを押すと、WHERE = 選択年齢 の一覧を表示させたいのです。
できれば
○○○.○○○ = "SELECT 名前,性別 FROM table WHERE = 選択された年齢"
のように直接SELECT文をかけるような方法を知りたいです。
コンボボックスは ComboBox
表示部には DataGridView を使用しています。
コンボの値はComboBox.text で取得するのだと思うのですが
グリッド部のDataset Adapter BindingSource などのプロパティに対して
どうすればよいのかわかりません。
どうぞよろしくお願いします。
0311デフォルトの名無しさん
2006/06/29(木) 20:39:29その DataView の RowFilter に条件文書けばいけるだろう。SQLにちょっとだけ似てるが全く別物。
0312デフォルトの名無しさん
2006/06/29(木) 23:36:34自分でやっとかないと後で苦労するぞ
Select文はそのまま
Dim strSqlCommand as string=""
strSqlCommand ="SELECT 名前,性別 FROM table WHERE = " & ComboBox.Text
ってやればいいんでは?
あと
Dim con As New SqlConnection(接続文字列)
Dim da As New SqlDataAdapter(strSqlCommand , con)
でDBに問い合わせ準備して、
Dim ds As New DataSet
da.Fill(ds, "table")
でDataSetにデータ読み込んで
BindingSource1.DataSource = ds
BindingSource1.DataMember = "table"
でDataSet を BindingSource と連結して
BindingNavigator1.BindingSource = BindingSource1
DataGridView1.DataSource = BindingSource1
でBindingSource を BindingNavigator および DataGridView と連結する。
BindingSource1とDataGridView1は適当に書き換えろよ
0313310
2006/06/30(金) 01:42:07>>312
レスありがとうございます!
宿題ではなく実は就職のためなんです(^^;
実務未経験のJAVA使いだったのですが、一週間でこういったプログラムをVBで組めたら採用とのことで必死になっています。
参考になる本もなく本当に助かりました。
今日は徹夜でやりとげます!ありがとうございました!
0314デフォルトの名無しさん
2006/06/30(金) 02:10:12お持ちの方、またサイトを知っておられる方
教えていただけませんか??
0315デフォルトの名無しさん
2006/06/30(金) 09:43:20と
Dim a As Graphics = PictureBox1.CreateGraphics
a.FillEllipse(Brushes.Black, 0, 0, 200, 200)
の、違いは大まかにどういうことなのでしょうか?
*前者は再描写をしてくれることは分かっています。
PictureBox1.Paintのイベントでは
前者は動作するのですが、後者はここに書いても動作しません。
ただ、後者はボタンのスイッチイベントだと動作します。
なぜなのでしょうか?
0316デフォルトの名無しさん
2006/06/30(金) 11:03:17ビリヤード程度って簡単に言うけど、運動方程式や摩擦係数が入り乱
れる大規模シミュレーションになるよ。ブロック崩しでも入射角と反
射角をマメにチェックしないと単調なゲームになるしさ。
ttp://www.core.kochi-tech.ac.jp/math/highschool/billiards/
0317デフォルトの名無しさん
2006/06/30(金) 11:07:08subとFunctionの使い分けです。
あるサイトに値を返さないならsub、返すならFunctionと書いてました。
僕は自分で作るメソッドは値を返す返さないにかかわらずFunctionを使ってたんですが、
これは明確に使い分ける必要がありますか?
0318デフォルトの名無しさん
2006/06/30(金) 13:01:260319デフォルトの名無しさん
2006/06/30(金) 13:02:06判らないならファンクションにしとけば?
明らかに結果を返さなくて良いならサブ、それ以外はファンクション、どちらも責務上処理しないエラーは例外で返す。
0320デフォルトの名無しさん
2006/06/30(金) 13:13:31適当にIntegerとかにしてんのか、それともOption Strict Offで省略してんのか…
0321317
2006/06/30(金) 13:27:31Private Function メソッド名()
当然returnもありません。
今までなんの気なしにこれでやってきてちゃんと動いてはいますけど省略するとまずいですか?
0322デフォルトの名無しさん
2006/06/30(金) 13:34:020323317
2006/06/30(金) 13:34:07これ知りませんでした。今ググってああ、なるほどと思いました。
無知ですいませんでした。
0324デフォルトの名無しさん
2006/06/30(金) 13:43:45Anchor
0325デフォルトの名無しさん
2006/06/30(金) 14:01:06アンカーだと
上と右を設定すると最大化したときに全体的に右よりになり
アンカーを全方位解除すると最大化したときに全体的に真ん中よりになってしまいます
最大化したときに、全方位にバランスよく均等に再配置したいのですが、何かいい方法ないでしょうか?汗
0326デフォルトの名無しさん
2006/06/30(金) 14:08:16上と右=上と左
全体的に右より=全体的に上と左より
あ あ
あ
あ あ
これを最大化したとして
あ あ
あ
あ あ
こういう風にやりたいのです。
実際はもっとコントローラが多くて複雑ですが・・
0327デフォルトの名無しさん
2006/06/30(金) 14:10:58あ あ あ
ああ
ああ
ああ
ああ
を
あ あ あ
あ あ
あ あ
あ あ
あ あ
こんな感じです
0328デフォルトの名無しさん
2006/06/30(金) 14:55:12起動してから最大化をすると、各カードの間の横間隔のスペースがウィンドウ拡大したサイズに合わせて広がってくれるじゃないですか?
これをやりたいのですが、間のスペースの自動調整が・・・。
0329デフォルトの名無しさん
2006/06/30(金) 15:04:19各コントロールの位置指定を、フォームのClientRectangleプロパティ
から算出してそれぞれ定義する関数を自作するとか。
つか、どんな機能をどんなデザインで作ってるのかわからんからなん
とも。機能説明があれば、もっと抜本的な方法があるかもしれないし。
0330デフォルトの名無しさん
2006/06/30(金) 15:32:04どもです
一応、標準と最大化の2通り以外のサイズには変更できないようにしてますので
やはり最大化時の配置を直接指定するしかないんでしょうかね・・
機能はボタンとラベルとピクチャーボックスだけです
デザインは>>327みたいな並びです
0331デフォルトの名無しさん
2006/06/30(金) 15:51:47標準と最大化の2通りしかないのなら、いちいち計算しなくても決め
打ちで位置指定ができるね。真ん中にくるコントロールなど、Anchor
で位置決めができるものがあるなら、そこを基準にしてその周囲にあ
るコントロールを、そこから相対位置で求めるのが比較的楽かも。
0332デフォルトの名無しさん
2006/06/30(金) 16:46:03case 1
timer1.start()
button1.enabled=ture
case 2
timer2.start()
button2.enabled=ture
case 3
timer3.start()
button3.enabled=ture
case 4
timer4.start()
button4.enabled=ture
End Select
こういった流れで、timer数字.start()の数字部分をdata内の数字で判断してくれるようにするにはどうすればいいでしょうか?
続
0333デフォルトの名無しさん
2006/06/30(金) 16:46:54Select case data
case 1
timer&button()
case 2
timer&button()
case 3
timer&button()
case 4
timer&button()
End Select
private sub〜timer&button()
timer「data内の数字」.start()
button「data内の数字」.enabled=ture
end sub
という風に全体的に短くしたいのが目的です。
0334デフォルトの名無しさん
2006/06/30(金) 17:09:250335デフォルトの名無しさん
2006/06/30(金) 19:11:59Const ture = True
0336291
2006/06/30(金) 20:26:23ありがとうございました。
0337デフォルトの名無しさん
2006/07/01(土) 12:36:20ある時間受信がされなかったら、BeginReceiveを中止したくなったのですが
EndReceiveを使用すると、受信するまでブロックしてしまうので困っています。
一応ブロックされずに中止するにはSocket.Closeすればできるの分かったのですが
他にCloseしなくてもできる方法はありませんか。
0338デフォルトの名無しさん
2006/07/01(土) 13:50:48どのようにやるのが一番簡単でしょうか?
動画は固定ですが、テロップは随時変わるのでテキストファイルなどに保存させたいと思っています。
ご存じの方がいらっしゃったら是非教えて下さい。
0339デフォルトの名無しさん
2006/07/01(土) 13:58:33なんでCloseじゃ駄目なの?
0340デフォルトの名無しさん
2006/07/01(土) 23:54:150341デフォルトの名無しさん
2006/07/02(日) 06:58:52電卓起動している場合にボタンを押すとエラーが出てしまいます。
PInvokeStackImbalanceが検出されました。
PInvoke 関数 'calcChecker!calcChecker.Form1::GetWindowThreadProcessId' がスタックを不安定にしています。
PInvoke シグネチャがアンマネージ ターゲット シグネチャに一致していないことが原因として考えられます。
呼び出し規約、および PInvoke シグネチャのパラメータがターゲットのアンマネージ シグネチャに一致していることを確認してください。
実際のコードは以下です。(フォームはLabel1とButton1だけです)
Public Class Form1
Declare Function FindWindow Lib "user32.dll" Alias "FindWindowA" _
(ByVal lpClassName As String, ByVal lpWindowName As String) As Integer
Private Declare Function GetWindowThreadProcessId Lib "user32" _
(ByVal hwnd As Long, _
ByVal lpdwProcessId As Long) As Long
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim hWnd As Long
Dim hThread As Long
Dim ProcID As Integer
Dim PID As Long
hWnd = FindWindow(vbNullString, "電卓")
If hWnd = 0 Then
Label1.Text = "電卓動いてないよ。"
Else
hThread = GetWindowThreadProcessId(hWnd, PID)
ProcID = CType(PID, Integer)
Label1.Text = "電卓動いているよ。" & CStr(ProcID)
AppActivate(ProcID)
End If
End Sub
End Class
0342デフォルトの名無しさん
2006/07/02(日) 07:20:38メッセージ通り、シグネチャ(引数/返値の型)がまちがっとる
VB6 までのをそのままコピっても駄目だぞ
ついでに言うと Declare せんでも System.Diagnostics の Process クラス使えば何とでもなりそうだが
0343デフォルトの名無しさん
2006/07/02(日) 12:34:33ものはDataGridViewにはないのでしょうか?
0344デフォルトの名無しさん
2006/07/02(日) 13:08:210345デフォルトの名無しさん
2006/07/02(日) 13:35:22なにをしたいのかもっとはっきり書かないと。
再描画でチラツキが発生するのを回避したいってこと?
0346デフォルトの名無しさん
2006/07/02(日) 14:18:37すいません、まさにその通りです。
画面スクロール時の再描画を抑止したいと考えています。
0347デフォルトの名無しさん
2006/07/02(日) 20:21:03System.Diagnostics の Process クラス使うことにしました、ありがとうございました
0348デフォルトの名無しさん
2006/07/02(日) 22:09:580349デフォルトの名無しさん
2006/07/02(日) 22:30:420350デフォルトの名無しさん
2006/07/02(日) 22:30:44GetWindowText もしくは SendMessage
0351デフォルトの名無しさん
2006/07/02(日) 22:54:09ググってきます
0352デフォルトの名無しさん
2006/07/03(月) 04:58:29「画面スクロール時に再描画を抑止」
画面ってグリッドのことだよね?
スクロールバーをドラッグしてる間はグリッドを描画させないってこと?
スクロール時は再描画しないとダメじゃないの?
なんか redraw とは違うような…
一応、貼っとくけど(Control.DoubleBuffered プロパティ)
ttp://msdn2.microsoft.com/ja-jp/library/system.windows.forms.control.doublebuffered.aspx
っていうか、2chに書き込む前にgoogleとかしてみないのか?w
0353352
2006/07/03(月) 05:03:36「グリッド行を追加する毎に描画したくない」
ってことか?
SuspendLayout()
ResumeLayout()
0354デフォルトの名無しさん
2006/07/03(月) 10:16:03各対応したボタンを押すと、それに対応した画像が点滅するというようなプログラムがあるのですが
スイッチを押して画像が点滅するタイミングをすべて揃えるにはどうしたらいいと思いますか?
現状では各ボタンを押すごとに各画像が1秒づつ点灯していて、ボタンを押したタイミングでバラバラに点灯してしまいます。
0355デフォルトの名無しさん
2006/07/03(月) 10:21:020356デフォルトの名無しさん
2006/07/03(月) 10:28:05タイマーを統一したらNo1を押してTimerが作動したら他の所も点灯し始めてしまいます・・・
0357デフォルトの名無しさん
2006/07/03(月) 10:34:41Select Case s1
Case 1
画像有の処理
s1 = 2
Case 2
画像無の処理
s1 = 1
End Select
End Sub
こうやってこれを3つ用意して処理してます。
s○の変数もグローバル5つ用意してます。
0358デフォルトの名無しさん
2006/07/03(月) 11:09:04Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Dim g As Graphics = AutoGraphics(「ここ」)
中略
End Select
End Sub
「ここ」に、↓のbtn1というオブジェクトだったらpic1という風なオブジェクト名を入れたいのです。
btn1(pic1)はオブジェクトによりbtn2(pic2)、btn3(pic3)といろいろ変わります。
Private Sub btn1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn1.Click
Timer1.Start()
中略
End Sub
0359デフォルトの名無しさん
2006/07/03(月) 11:09:51タイマーは常時駆動、ボタンの状態に応じてリンクさせれば?
タイマーが動いてる and ボタンが押されてる then 画像点滅とか。
0360デフォルトの名無しさん
2006/07/03(月) 11:20:16レスありがとございます。
timer内の画像変更メソッドにボタン毎に対応した引数を渡してやれば各自に対応した動作ができそうですが>>358・・・それは可能ですか?
0361デフォルトの名無しさん
2006/07/03(月) 11:32:50おっしゃるとおりにやってみたら1秒間隔で統一することができました!ありがとうございます
ですが・・・まだ1秒間隔で交互になってしまうことがあります
前は押したタイミングで無統一にバラバラだったのですが、今度はひとつのタイマーを1秒感覚でオンオフになるので、裏か表かで点滅する間隔がばらばらになってしまうことがあります・・
0362デフォルトの名無しさん
2006/07/03(月) 11:55:19ボタンを押した時点で他の画像の状態をチェックして、これから操作
する画像にも適用させればいいじゃん。
各ボタンの状態をチェック→どれかが既に点滅してるなら、それに同
期して表裏を指定 or そうでないなら現状から点滅開始とか?
もしくはタイマー自体に表裏の情報を持たせて、各画像はその状態を
再現するだけにすれば? この場合、画像がタイマーにひっぱられて、
多少不揃いな挙動をするかもしれないけれどね。
0363デフォルトの名無しさん
2006/07/03(月) 12:02:21フォルダの中にタイムスタンプ「yyMMdd.txt」で命名されたファイルがいくつか(50個ほど)あるとします。
これを時系列でソートして、もっとも古いものを探したいのですが、何かスマートな方法はないでしょうか。
Directory.GetFilesの返り値からファイル名を切り出して、キャストして、各々比較しか思いつきませんでした。
0364デフォルトの名無しさん
2006/07/03(月) 12:08:450365デフォルトの名無しさん
2006/07/03(月) 12:11:11配列に入れてArray.Sort。
0366デフォルトの名無しさん
2006/07/03(月) 14:07:29毎回ボタンを押すたびに画像オンオフを判断する変数を初期化することで無事動作させることができました
お付き合いいただきありがとうございました
0367デフォルトの名無しさん
2006/07/03(月) 14:47:25例を挙げると、ボタンを押したらそのボタンを無効にしたいのですが数が多いのでそれを一括してくれるボタン無効メソッドを作り、そこで無効の処理をしてくれるようにします。
Buttom8を無効にする場合は、Buttom(8)でまず自作メソッドを呼び出して8という引数を渡してあげます
自作メソッドの処理は以下のとおりです。
Private Sub Buttom(ByVal ButtomNo As Integer)
Dim btn() As Object
'ボタンの数だけの配列の宣言
buttomn(ButtomNo).Enabled = False
'buttom(8)をFalseにする
End Sub
こうすると実行時に「オブジェクト参照がオブジェクトインスタンスに設定されていません。」とエラーがでます
0368デフォルトの名無しさん
2006/07/03(月) 14:49:43訂正
btn(ButtomNo).Enabled = False
0369デフォルトの名無しさん
2006/07/03(月) 15:23:030370デフォルトの名無しさん
2006/07/03(月) 15:23:200371デフォルトの名無しさん
2006/07/03(月) 15:36:07すみません
自作メソッドにオブジェクト名を引き継ぎ、それを元にオブジェクトを操作するということです
オブジェクト名は渡せるのですが、実行するとエラーが出てしまいます;
Private Sub Buttom(ByVal ButtomNo As Integer)
Dim buttom() As Object
'ボタンの数だけの配列の宣言
buttom(ButtomNo).Enabled = False
'buttom(引数(数字))をFalseにする
End Sub
これにこういう風にButtom(8)、数字の8を渡して
自作関数内でbuttom(8).Enabled = Falseを実行したいのです。
>>370
それはどういうことなのでしょうか?
0372デフォルトの名無しさん
2006/07/03(月) 15:40:00メソッドのほうを
Private Sub aiueo(ByVal ButtomNo As Integer)とでも読み直してください・・・
0373デフォルトの名無しさん
2006/07/03(月) 15:51:09おまいさんはaiueo(8)という表記で引数を渡し、Button8.Enabledを
操作したい。
では、aiueo(8)という「配列の一要素」が「Button8」というインス
タンスを示すという定義を、どこかに書かないとダメだろう?
Dim aiueo() As Objectってのは「まだ個数が決まってないけど、とり
あえず配列を使う準備だけやっておこう」って意味じゃん。VB6.0の
コントロール配列みたいな考え方が、微妙に混入しているような気が
する。
ここの2番目をよーく読んでみるといいよ。
ttp://dobon.net/vb/dotnet/control/buttonarray.html
0374デフォルトの名無しさん
2006/07/03(月) 15:56:47Handlesとsenderで、何とかならんのか?よくかんがえてみ?
本当にやりたいことが理解できないから、これ以上はなんとも・・・
0375デフォルトの名無しさん
2006/07/03(月) 15:59:25>>374
そのあたりを勉強してみたいと思います
VBはまだ初めて1週間もないのでVB6の方もほとんど分かりません;
ありがとでした
0376デフォルトの名無しさん
2006/07/03(月) 23:20:19ArrayList はさまざまなデータ型を取り扱いますが、
Borland の VCL のTStringList クラスみたいな文字
列を専用に扱うリストクラスはあるでしょうか?
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ArrayList1 As New ArrayList
Dim S As String
ArrayList1.Add("Str1")
ArrayList1.Add("Str2")
S = ArrayList1(1) ← キャストが必要になる
End Sub
0377デフォルトの名無しさん
2006/07/03(月) 23:23:08List(Of String)
0378デフォルトの名無しさん
2006/07/03(月) 23:26:51仕組みができたんだよね確か。
ジェネリックって言ったっけ?
0379デフォルトの名無しさん
2006/07/03(月) 23:41:41ありがとうございます。
0380デフォルトの名無しさん
2006/07/04(火) 04:54:070381デフォルトの名無しさん
2006/07/04(火) 05:28:18WM_CHARやらを送るのがせいぜい。
0382デフォルトの名無しさん
2006/07/04(火) 09:21:41TextBoxと別の経路(プロセス間通信)の入力結果を処理できる共通の関数作ればいいだけじゃん。
それを入り口を無理に一緒にする発想から離れないから変なことを考える。
0383デフォルトの名無しさん
2006/07/04(火) 09:38:280384デフォルトの名無しさん
2006/07/04(火) 10:16:20プログラムが終了時に最後にイベントを起こすにはどうしたらいいですか?
0385デフォルトの名無しさん
2006/07/04(火) 11:28:10フォームのサイズを変更するとそれに合わせてフォーム内に配置しているボタンやラベル、テキストボックスが自動位置調整されるような方法はありませんか?
アンカーを使ってみたんですが、アンカーを使うと害枠にあわせて調整されるため、中央付近が大きく開き配置がばらばらになってしまいます。
どうか助言のほうをよろしくお願いします。
0386デフォルトの名無しさん
2006/07/04(火) 11:31:43フォームのプロパティを最大化にしてもこれは起動時に最大化になるので編集画面内の配置とは異なってしまいます。
編集画面内のレイアウトを最大化のレイアウトにするという方法があればそちらの方で構いませんのでよろしくお願いします。
0387デフォルトの名無しさん
2006/07/04(火) 12:26:41VB.NETをやり始めたばかりの初心者です。
ファイルの中身をダンプ表示するプログラムを作成したいと考えています。
いずれはコンポーネント化したいと思っているのですが、どんな手法で
作ればよいか迷っています。
現在、Panelの上に文字を描画しようと考えていますが、他にスマートなやり方は
あるでしょうか。(まだPanelの上に文字を描画の仕方を調べている最中。とほほ。)
0388デフォルトの名無しさん
2006/07/04(火) 12:45:220389デフォルトの名無しさん
2006/07/04(火) 13:53:48どうしてでしょうか?
Dim wrt As New IO.StreamWriter("../../test.txt", True, System.Text.Encoding.unicode)
これがそのエラー文だそうです。
今までは普通に動いてましたし、ここは弄っていません。
0390デフォルトの名無しさん
2006/07/04(火) 14:07:020391デフォルトの名無しさん
2006/07/04(火) 14:09:56どなたか教えてください。。
フォルダを圧縮したいのですが、中々できません。
ファイル単体を圧縮することはできたのですが、
フォルダのツリー全体を圧縮かけたいのです。
0392デフォルトの名無しさん
2006/07/04(火) 14:12:140393デフォルトの名無しさん
2006/07/04(火) 14:25:130394デフォルトの名無しさん
2006/07/04(火) 14:43:490395デフォルトの名無しさん
2006/07/04(火) 14:46:100396デフォルトの名無しさん
2006/07/04(火) 16:25:040397デフォルトの名無しさん
2006/07/04(火) 17:07:59strutsでwebアプリを作成するのですが、諸般の事情によりsessionの
タイムアウトを設定できません(永続セッションにします)
なので、セッション領域の解放もれを回避する為に、JavaScriptの
onUnloadを使用して、セッションをinvalidする仕組みを考えて
いるのですが、思ったような動作をしてくれていません。
仕組みとしては、以下のようなscriptを考えています(ブラウザはIE6.0SP2以降限定です)。
function exitForm(){
if(event.clientX <= -8000 && event.clientY <= -9000 || event.clientX >= 32700 && event.clientY >= 32700) {
//ブラウザ閉じられたときの処理(テスト用にalert)
alert("exitForm");
}
}
<BODY onUnload="exitForm()">
↑のscriptをhtmlで試したところ、×ボタンによる画面クローズで
正常にalert出力されたのですが、Tomcat上にJSP化して配置してから
実行したところ、クローズ時のalertが出力されません。
event.clientXとevent.clientYの判定分をはずして試してみても、
結果は同じ(alert出ない)でした。
私の開発&実行環境は以下の通りです。
Windows XP SP2
IE6.0 SP2
Tomcat 5.0.30
よろしくお願いします
0398397です
2006/07/04(火) 17:09:11javaスレに再カキコします
0399デフォルトの名無しさん
2006/07/04(火) 17:11:520400デフォルトの名無しさん
2006/07/05(水) 00:19:29可能な場合, Access や Access のランタイムが導入されていなくても
vb.net だけの環境でクエリは実行可能ですか?
やはり、Access もしくは Access のランタイムは必要でしょうか?
0401デフォルトの名無しさん
2006/07/05(水) 01:48:45ヘルプの説明によくある「このメソッドは O(1) 操作です。」の
O(1)操作って一体何の事なのでしょうか?
0402デフォルトの名無しさん
2006/07/05(水) 02:35:32対象件数が増えても処理時間が一定ということ
0403デフォルトの名無しさん
2006/07/05(水) 09:48:03どんなクエリかわからないが、MDACがインストールされてればできると思うよ
少なくともうちでクロス集計のクエリは動いている
0404385=386
2006/07/05(水) 10:57:470405デフォルトの名無しさん
2006/07/05(水) 11:22:51>>322から似たような質問が出てるんで読むと大吉。
0406デフォルトの名無しさん
2006/07/05(水) 12:04:06それを他のPictureBoxの上に乗せても後ろにある画像を透過してくれません
これはどうやれば透過してくれるのでしょうか?
それと、画像を読み込んだりして操作したプログラムをずっと使い続けているとwindows自体が重く感じられるようになるんですが
これは詳しくはわからないのですが、実行中にもある程度の感覚でメモリの開放みたいなものをしないといけないのでしょうか?
0407デフォルトの名無しさん
2006/07/05(水) 12:35:35あのねえ、例えば額縁に「透明な」ガラスの板をのせたら額縁の裏板が透明になるか?
そんなガラスあったら怖いだろw
0408406
2006/07/05(水) 12:48:41>あのねえ、例えば額縁に「透明な」ガラスの板をのせたら額縁の裏板が透明になるか?
額縁に「透明な」ガラスの板をのせても透明なガラスの上から透けて見えるはずの額縁が見えないということですよ
画像ファイルとしては背景が透明なので、Paintなどで他の画像の上に重ねても、その下側になった画像を透過してくれるのに
PictureBoxに乗せて、他のPictureBoxの上に重なるように持っていっても下にあるPictureBoxを透過してくれないということです。
おそらくPictureBoxの下地を透過してるんだと思います。
あ、額縁とはそういうことですね・・。
この下地を透過する方法はないんでしょうか?
0409デフォルトの名無しさん
2006/07/05(水) 16:28:55ボタンやテキストボックス、ピクチャーボックスなどのコントロールの形を好きな形にすることはできますか?
0410デフォルトの名無しさん
2006/07/05(水) 18:21:40現在エディタでこのテキストを変更できませんってメッセージがでちゃいます。
調べてもよくわかりません。
どなたか教えてください。
0411デフォルトの名無しさん
2006/07/05(水) 19:06:100413デフォルトの名無しさん
2006/07/05(水) 20:54:31実行中に変更してどうするよ
0414デフォルトの名無しさん
2006/07/05(水) 21:42:490415デフォルトの名無しさん
2006/07/06(木) 00:14:09やろうとする人がいるってことでしょ。
0416デフォルトの名無しさん
2006/07/06(木) 00:17:39type A
B as long
C(7) as byte
end type
declare function xxx lib "xxx" (ByRef AA as A) as integer
sub D_Click()
Dim wkA As A
Dim Result As Integer
Result = xxx(wkA)
end sub
これでウマくいってたのに、VB2005 では、
structure A
dim B as long
dim C(7) as byte
end structure
declare function xxx lib "xxx" (ByRef AA as A) as integer
sub D_Click()
Dim wkA As A
Dim Result As Integer
Result = xxx(wkA)
end sub
C(7) でエラーになったので、C()になおしたら、
Result = xxx(wkA)のあと、C に値が入ってこなかった・・・。
修正お願いします。
0417デフォルトの名無しさん
2006/07/06(木) 00:38:33理屈も分からずに対処療法を聞いても危険なだけだから大人しく
MSDNでも熟読したほうがいいよ。
それが嫌ならプログラム書くのは止める事だな。
0418デフォルトの名無しさん
2006/07/06(木) 02:06:00VB6とVB2005では整数型のサイズが違う
http://msdn2.microsoft.com/ja-jp/library/7f5ztkz3.aspx
配列を含む構造体の渡し方
http://msdn2.microsoft.com/ja-jp/library/eadtsekz.aspx
0419デフォルトの名無しさん
2006/07/06(木) 09:40:37この左上固定って言うのを変更することができますか?
背景の開始位置の変更ということです。
0420デフォルトの名無しさん
2006/07/06(木) 11:29:330421デフォルトの名無しさん
2006/07/06(木) 12:46:490422デフォルトの名無しさん
2006/07/06(木) 13:11:57現在、カーナビの地図のようなプログラムを作っています。
仕組みは簡単で大きな地図が一枚あり、店の種類を明記したボタンを設置しています。
それでそのボタン押すと、たとえばコンビニというボタンを押すと、地図にあらかじめ設置していたコンビニの画像がピカピカ光るというようなものです。
現在は、PictureBox1に地図を貼り付けて、各店の画像もPictureBox(x)に貼り付け、PictureBox1の上に重ねて上乗せしています。
そしてボタンを押すと対応していPictureBoxの画像を点滅するよう元の画像と点灯画像を交互に変更するようにしています。
ですが地図をスクロールすると各店の画像が地図とずれてしまうのですが、これを下地と同じ箇所に固定するにはどうしたらよいでしょうか?
よろしくお願いします。
0423デフォルトの名無しさん
2006/07/06(木) 13:47:51ればいいんでは?
面倒だったら、透過画像にして地図と同じ大きさに全部配置したものを
用意、丸ごとスクロールに同期させるとか。
0424デフォルトの名無しさん
2006/07/06(木) 13:57:11早速のレスありがとうございます。
スクロールに同期させるのはちょっと私のレベルではまだ難しそうなので、後者の方を試してみたいと思います。
ありがとうございました
0425422
2006/07/06(木) 15:49:54Pictureboxの指定範囲内をクリックしたらイベントを起こせるようなことはできませんか?
通常はボタンならボタン全体PictureboxならPicturebox全体がクリックイベント範囲内だと思うのですが、コントロール内の一部分だけで範囲を指定したクリックイベントを起こさせるようなことです。
0426デフォルトの名無しさん
2006/07/06(木) 15:55:500427デフォルトの名無しさん
2006/07/06(木) 16:36:16必要なときは使う
0428デフォルトの名無しさん
2006/07/06(木) 17:00:29PictureBoxのMouseClickイベントで
(Rectangle型の特定範囲).Contains(e.Location);
とかやって自分で判定
0430デフォルトの名無しさん
2006/07/07(金) 15:49:21自作関数を呼び出して、そこでループを繰り返しているのですが、その場合グローバルにしないと自作関数を呼び出す毎に変数を初期化してしまうのですが
こういう場合はどうしたよいのでしょうか?
0431デフォルトの名無しさん
2006/07/07(金) 16:07:48処理状態を覚えとくならメンバに持てばいい。
0432デフォルトの名無しさん
2006/07/07(金) 16:27:04制御変数を保存するってそんなやつおらんやろ
0433426
2006/07/07(金) 17:00:47ピクチャボックスばっかり使ったプログラムを起動、停止ばかり繰り返しているとWindows全体がもっさりしてくるのはこのせい?
あと、Disposeはピクチャボックスを使ったプログラムで終了時にすべてのピクチャボックスをDisposeすればいいよね?
最後までグラフィックを描写してるから途中でDisposeはできないし。
0434426
2006/07/07(金) 17:10:54フォームを閉じる寸前に起こるイベントみたいな
0435426
2006/07/07(金) 17:13:52closedとclosingの違いってなんなんだろうか・・
言葉の意味はわかるけど、それがプログラム上ではどう実行時に違うのか・・
0436デフォルトの名無しさん
2006/07/07(金) 17:18:33Formに貼り付けたピクチャボックスはFormのDisposeのときに同時にDisposeされる。
自分でnewしたぶんは自分でDispose。
0437デフォルトの名無しさん
2006/07/07(金) 17:22:300438デフォルトの名無しさん
2006/07/07(金) 17:23:14なるほど・・・勉強になりましたありがとです。
0439デフォルトの名無しさん
2006/07/07(金) 20:16:06どういう時にDisposeを呼び出す必要があるのか、
正確に言えばどういうクラスがDisposeを実装する必要があるのかちゃんと書いてあるから。
意味もわからず「おまじない」的コードを書いて平気なセンスは恥ずかしいと思ったほうがいいよ。
0440デフォルトの名無しさん
2006/07/08(土) 00:40:44意味もわからず「おまじない」的コードを書いて平気な奴はここに来ない
0441デフォルトの名無しさん
2006/07/08(土) 01:08:310442デフォルトの名無しさん
2006/07/08(土) 02:43:000443デフォルトの名無しさん
2006/07/08(土) 02:47:060444デフォルトの名無しさん
2006/07/08(土) 02:58:06Dim n(9) As Integer
上の配列は4バイト×10個で合計40バイトですが、
単なる掛け算ではなくこれを取得する方法はあるでしょうか?
0445デフォルトの名無しさん
2006/07/08(土) 03:01:240446デフォルトの名無しさん
2006/07/08(土) 03:07:25Buffer.ByteLength(n)
0447デフォルトの名無しさん
2006/07/08(土) 04:59:09できました。
ありがとうございました。
0448VB初心者
2006/07/08(土) 09:21:19目的
共通ファイル Common.vb を2つのプロジェクトで使いたい
PJ1 PJ2 共に Common.vbより階層が下のディレクトリに存在する(同じドライブ)
「既存のファイルの追加」をおこなうと、ファイルがコピーされます。
----------------------------------------------------------------------
目的2
.com や.net を使わないでvb.netレベルでのライブラリって出来ないものでしょうか?
幾つかのクラス(ファイル)をまとめて機能を実現したライブラリがあるのですが、
利用する場合、全てのファイルを既存追加>しかもファイルがコピーされる
ライブラリの部分を変更した場合、その部分をcommon フォルダへ書き戻し...
他の方はどうしているんだろう?
VB6だとコピーを作らずモジュールは参照していたのですが...
0449デフォルトの名無しさん
2006/07/08(土) 09:46:10>他の方はどうしているんだろう?
VB.NETで普通にクラスライブラリ(コンパイルするとDLLになる)を共通機能として実装して、
他のそれぞれのプロジェクトで参照設定して使用する。
0450デフォルトの名無しさん
2006/07/08(土) 09:48:060451デフォルトの名無しさん
2006/07/08(土) 11:10:00なんかdll嫌がる人が多いような気がするけど何でか分からん。
リンクファイルの方がいやだけどなあ。
0452デフォルトの名無しさん
2006/07/08(土) 11:30:38いちばん多いやり方は、それぞれの担当部分をDLLとして作成し、
メインを担当している人から参照してもらうようにすることだろうな。
0453デフォルトの名無しさん
2006/07/08(土) 11:45:140454デフォルトの名無しさん
2006/07/08(土) 12:48:34共通ユーティリティ部分はDLLだろうな。
0455デフォルトの名無しさん
2006/07/08(土) 13:05:32メイン・モジュール担当・・・1人
サブ・モジュール担当・・・・複数人
共通モジュール担当・・・・1〜2人
で、
プロジェクト的には、1つのソリューションに
メインprj、サブprj、共通prjを配置して
メインprjから各サブprjと共通prjへ
各サブprjから共通prjへ
各々プロジェクト参照するのが普通で、
DLLなんて使わないだろう。
0456デフォルトの名無しさん
2006/07/08(土) 13:08:530457デフォルトの名無しさん
2006/07/08(土) 13:09:400458デフォルトの名無しさん
2006/07/08(土) 13:11:25dllとだけ書かずに、dll参照とかプロジェクト参照って書いてる。
0459デフォルトの名無しさん
2006/07/08(土) 13:51:17参照先の対応が天と地ほど違うよ
0460VB初心者
2006/07/08(土) 16:43:44レスありがとう
DLLについて<
DLLにすれば、他の言語も利用できるという利点もありますが、欠点もあります。
そもそも、単に共通のソースを使いたいというだけなので、エクスポート宣言、
インポート宣言、呼び出しの時のオーバヘッドなどがあり、DLLは望んでいる形とは違います。
API呼び出しをまとめて宣言しているAPIクラスを、DLL化というような事はしたくありません。
またクラス内に定義した、クラス用の列挙定義などはDLLにしても見えるのでしょうか?
DLLでは駄目なんですorz...
クラスライブラリ機能>DLLになる
クラスインポートする?
インポート宣言した場合、クラスをオブジェクトのイメージで使えるのだろうか?
単に関数なんでしょうか?
やりたい事は、いわいるCommon.vb をリンク参照したいだけなんですけどねorz...
インクルードがないのかなぁ....
0461デフォルトの名無しさん
2006/07/08(土) 16:51:370462デフォルトの名無しさん
2006/07/08(土) 16:52:02ソース共有したいっつうからdllでいいんじゃないの?
って言ってるだけだろ。
参照方法でには言及してないだけ。
0463デフォルトの名無しさん
2006/07/08(土) 16:53:050464デフォルトの名無しさん
2006/07/08(土) 16:54:170465デフォルトの名無しさん
2006/07/08(土) 16:58:33http://msdn2.microsoft.com/ja-JP/library/9f4t9t92.aspx
これ見てリンクとして追加しろ。後は知らん。
0466デフォルトの名無しさん
2006/07/08(土) 17:01:37何言っても通じん。
0467デフォルトの名無しさん
2006/07/08(土) 17:13:42>>460
言いたい事は分かる。
だけど、それはVB6とかでDLL使う場合の話だ。
.NET(C#やVB.NET)でのクラスライブラリで生成されるDLLは、
それまでのDLLとはちょっと(つうか、可也)別物だから、勉強してみなさい。
0468デフォルトの名無しさん
2006/07/08(土) 19:23:37対象はWIN2K、WIN XP
IPアドレス、サブネットマスク、DNS、WINS 等
実現するためのWIN32_APP もしくは.NET のクラスライブラリ
知ってる方がおられましたら、おしえてくらはい。
直接レジストリ編集する方法はわかったのですが、
再起動必要っぽいのでそれは避けたく、
再起動しないですむようなコードも知ってたら
教えてほしいです。
0470デフォルトの名無しさん
2006/07/09(日) 04:13:250471デフォルトの名無しさん
2006/07/09(日) 07:08:07試しにdebug.writelineにxミリ秒毎に数字を出すようなプログラムを書いてください。
0472デフォルトの名無しさん
2006/07/09(日) 07:43:210473デフォルトの名無しさん
2006/07/09(日) 12:34:18WMIでググレ
0474デフォルトの名無しさん
2006/07/10(月) 10:26:32現状のクリックイベントではクリックしてボタンから指を離した時点で、イベントが作動すると思うのですが
これをクリックした直後に動作させることは可能でしょうか?
0475デフォルトの名無しさん
2006/07/10(月) 10:49:510476デフォルトの名無しさん
2006/07/10(月) 11:09:25それとですが
例えば二つのボタンがあり、一つ目のボタンをクリックしてイベントを発生させ、そのままマウスのクリックを「離さず」に二つ目のボタンにずるずるポインタを移動させたら二つ目のボタンのイベントが開始するようなことはできませんか?
調べてみたらポインタがオブジェクト内に入ったらイベント開始はあったのですが、通常時にポインタがオブジェクト内に入ってイベントが開始されてしまい、それでは困るので
クリックしたままポインタがオブジェクト内に入ったらイベント開始のようなことはできないんでしょうか
0477デフォルトの名無しさん
2006/07/10(月) 11:53:30不安定かもだが、フラグで制御するのが良いんじゃない?
0478デフォルトの名無しさん
2006/07/10(月) 12:39:04もしマウスのキャプチャーって概念をしらないならそこに解決の糸口があるかもね。
でも、どうせこだわりを持つならもっと他の有意義なことにこだわった方がいいと思う。
経験上、WindowsのGUIのお作法に反逆するような、
そういうどうでもいいことに固執する奴はたいてい無能だ。
0479デフォルトの名無しさん
2006/07/10(月) 13:05:14そうするしか思いつかないんですかね
クリックしたままだとマウスポインタが乗ったら起きるイベントのフラグがたつってことですよね
数が多いので大変だ。。
0480デフォルトの名無しさん
2006/07/10(月) 13:17:46逆じゃないか?
押したらフラグ立てて乗った時にそのフラグを見るんだろ
もちろん放したらフラグは下げるの忘れるな
あと、同期化もしといた方が良いな
0481デフォルトの名無しさん
2006/07/10(月) 13:35:00ボタンを押したままドラッグなんて、どうやって思いついたのかな?
0482デフォルトの名無しさん
2006/07/10(月) 14:13:530483デフォルトの名無しさん
2006/07/10(月) 14:36:510484デフォルトの名無しさん
2006/07/10(月) 14:42:250485デフォルトの名無しさん
2006/07/10(月) 14:47:170486デフォルトの名無しさん
2006/07/10(月) 15:01:050487デフォルトの名無しさん
2006/07/10(月) 15:16:09既存の手段と比べて、どこがどう優れているとか。
0488デフォルトの名無しさん
2006/07/10(月) 15:25:21↑
私もそう思いついたんですが、やはりそうするしかないんですかね の間違いです
文の訂正繰り返してたらなぜかそういう風にまとまってる・・
>>481
普通一般に使われるWindowsプログラムじゃないんで^^
0489デフォルトの名無しさん
2006/07/10(月) 15:26:190490デフォルトの名無しさん
2006/07/10(月) 15:30:11でも身近な人以外に渡すなら、独自すぎる操作方法は採用すべきでないと思う。
どんなに丁寧なReadme.txtでも、読む人って本当に少ないから。
0491デフォルトの名無しさん
2006/07/10(月) 15:33:55他の一般ソフトと揃えてくれと、いつも思う。
あとインターフェースとかもあんま凝らんでいいから・・・
何故かシステム絡みの人って変に凝り性が多いような気がする
0492デフォルトの名無しさん
2006/07/10(月) 18:13:25あるいは身内だけで使うとか・・・
0493デフォルトの名無しさん
2006/07/10(月) 18:47:150494デフォルトの名無しさん
2006/07/10(月) 18:49:51操作性が糞かどうか以前に、そういう仕様はベタには実現できんよ。
実際やってみればすぐわかることだと思うけど。
0495デフォルトの名無しさん
2006/07/10(月) 21:18:49どのウィンドウをスクロールさせるんだ
0496デフォルトの名無しさん
2006/07/10(月) 21:49:14画像か、それともテキストか?
ウィンドウにスクロールバーが付いて、どんなオブジェクトでも自由
自在にスクロールできるとか考えてるなら、そんなのは無いよ。
0497デフォルトの名無しさん
2006/07/10(月) 22:00:570498デフォルトの名無しさん
2006/07/10(月) 22:04:260499493
2006/07/10(月) 22:12:55一応、主な中身はデータグリッドビューで
右側にも当然スクロールバーがあるのですが、それをボタンコンロトールのクリックで制御したいのです。
クリックして先送りのような
0500493
2006/07/10(月) 22:16:02データグリッドビューで指定位置までスクロールできるとかあれば尚いいんですけどね;
0501デフォルトの名無しさん
2006/07/10(月) 22:20:45プロパティ&メソッドに一通り目を通せ
0502デフォルトの名無しさん
2006/07/11(火) 04:32:41タブの内容を全て同じで実行中に新しくタブが作られたときも中のコントロルとか
同じものにしたいんだけどどうすればいいですか?
0503デフォルトの名無しさん
2006/07/11(火) 07:29:36日本語を正確に
どういう意図かわかりませんが、「新規タブ」を押すとタブページが増える。
増えたタブの内容を、現在アクティブのタブの内容をコピーしたものにしたい。
こういうことですか?
0504デフォルトの名無しさん
2006/07/11(火) 09:58:11現在、変更した行をDataTable.GetChangesで取得しています。
ところが1行しかデータのないDataTableの場合や、複数行でも1行変更して
すぐにユーザーが何か他のアクションを起こした場合に.GetChangesでは
変更した行を取得できません。
私は1行のDataTableだったら、DataTableを複製し、オリジナルのDataTableを
.RejectChanges()で戻してオリジナルと複製を比較するしかないかなと
思っていますが他に良い手段があれば教えてください。
0505デフォルトの名無しさん
2006/07/11(火) 10:17:00どの時点でGetChangesを使っているのかが問題だ。
MSDNにはこう明記してあるけど、タイミングを間違ってないか?
「前回 DataTable を読み取るか、AcceptChanges を呼び出した以降
にこのデータセットに対して行われたすべての変更が格納されてい
るこのデータセットのコピーを取得します。」
0506デフォルトの名無しさん
2006/07/11(火) 10:26:39レスサンクス
DataTableにデータを読み込んですぐに.AcceptChangeを行っています。
もうちょっと詳しく書くと、行を編集し後に他の行に移らないと.GetChangesで
編集した行を取得出来ないようです。
検索結果で1行しか取得できなかった場合は他の行に移れないので
.GetChangesで取得できないようです。
何かプロパティ無いか探してみます。
0507デフォルトの名無しさん
2006/07/11(火) 10:32:080508デフォルトの名無しさん
2006/07/11(火) 11:13:00ヒントサンクス
ちょっと調べてやってみます。
0509504
2006/07/11(火) 13:02:44DataTableをTextBoxとDataGridViewにそれぞれデータバインドしていました。
DataGridViewはEndEdit()を実行して確定、TextBoxの方はDataTableのColumnChangedを利用して
Row.EndEditを実行して確定させました。
ありがとうございました。
0510デフォルトの名無しさん
2006/07/11(火) 14:41:49そういうことです。説明不足ですみません。
よろしくお願いします。
0511デフォルトの名無しさん
2006/07/11(火) 14:45:050512デフォルトの名無しさん
2006/07/11(火) 17:50:31ライブラリを登録してスクリプトから呼び出すと、VBScriptでCreateObjectでは読めますが、
そのスクリプトをhtmlにインポートするとCreateObjectでは作成できなくなっています。
おそらくセキュリティ系のような気もしますが、結構緩く設定しているのでダイアログ表示もなく
いきなり作成不能なんてことは考えられません。
似たような問題に遭遇した人いますか?または解決法ご教授お願いします。
0513デフォルトの名無しさん
2006/07/11(火) 18:51:53データがあるというのをどう定義すればいいのか謎だが、取りあえず Available
0514デフォルトの名無しさん
2006/07/11(火) 22:14:14ヘルプを選んでButtonとか検索したときにローカルのヘルプが引っかからなくなってしまったのですが
何か解決策につながるような事はありませんか?
0515デフォルトの名無しさん
2006/07/11(火) 22:30:45コントロールの属性や値を保存して、コピー先に転送する。
ヒントは「イニシャライズコンポーネント」に書かれているコード
コントロール作るとエディタが自動的に書いてるよね?
あれを参考にしてみれば如何でしょう
0516デフォルトの名無しさん
2006/07/12(水) 00:50:12のですが、その時 b.dll のフォームが Active にならずに困っています。
b で Me.Activate() などやってもだめです。
強制的に、自分自身をアクティブにしてしまう、という事はできないでしょうか?
0517デフォルトの名無しさん
2006/07/12(水) 04:37:18ご丁寧にありがとうございます。
またわからなかったらよろしくお願いします。
0518デフォルトの名無しさん
2006/07/12(水) 07:14:22コンストラクタの中で他のDLLのSHOWをしても
コンストラクタを抜けてA.EXEのFormLOADイベントで、
アクティブが移っていると
考えられます。
1回きりのタイマーなどを使うのは如何でしょうか?
A.EXEのLoadでトリガーを。
0519デフォルトの名無しさん
2006/07/12(水) 08:14:26どうすればいいのでしょう
0520デフォルトの名無しさん
2006/07/12(水) 08:15:280521デフォルトの名無しさん
2006/07/12(水) 08:18:140522デフォルトの名無しさん
2006/07/12(水) 12:51:530523デフォルトの名無しさん
2006/07/12(水) 13:57:540524デフォルトの名無しさん
2006/07/12(水) 23:20:040525デフォルトの名無しさん
2006/07/12(水) 23:48:11クラスの構築
FORMの構築
FORM Load イベント
コントロールの Load イベント
このような順番で解決されます。
さて、ではクラスのコンストラクタでFORMの内部に触れる事は可能なのでしょうか?
このままだと「ヌルポ」になってしまいます。
起動時のクラスのコンストラクタの処理中に「描画に関わる部分」を触ってはいけないというのは
このような理由なのです。
しかし、限定的ではありますが「my」宣言子がそれを解決しています。
これらも同時に調べて見ては如何でしょう。
0526デフォルトの名無しさん
2006/07/12(水) 23:53:38人に偉そうな事言う前にまず君自身の日本語の能力をなんとかした方がいいんじゃないか
0527デフォルトの名無しさん
2006/07/13(木) 00:10:09だけど、 InitializeComponent()の中でサイズとか位置とか色とか
がんがん設定してるじゃない。
InitializeComponentはコンストラクタの中から呼び出されてるはずだよ。
0529デフォルトの名無しさん
2006/07/13(木) 00:29:470530デフォルトの名無しさん
2006/07/13(木) 02:26:52意味不明だろ。
0531デフォルトの名無しさん
2006/07/13(木) 04:38:100532デフォルトの名無しさん
2006/07/13(木) 04:54:300533デフォルトの名無しさん
2006/07/13(木) 06:23:17TabControlで、マウスがHoverしている位置のTabのIndexを取得する
にはどうすればいいのでしょうか?
ダブブラウザ(IE7のような感じ)で、マウスをHoverするだけでTabPageを
切り替える事が目的です。
ご存知の方いましたら、ご教示していただければ幸いです。
よろしくお願いいたします。
0534デフォルトの名無しさん
2006/07/13(木) 07:58:150535デフォルトの名無しさん
2006/07/13(木) 08:06:47だから> me.演算子が使われています。ok?
0536デフォルトの名無しさん
2006/07/13(木) 08:08:39インスタンス化しない状態で、
クラスのメンバを参照したり、変数を参照すると実行時エラーで停止します。
それがヌルポ
0537デフォルトの名無しさん
2006/07/13(木) 08:10:55My演算子???じゃなかったのかよw
画面表示とかコンストラクタのタイミングとか、
全然関係ないじゃねーか。
0538デフォルトの名無しさん
2006/07/13(木) 08:24:11よく分かってないくせに背伸びするなって。
隠したつもりでも分かってる人間なら絶対にしないような言い回しでバレバレ。
みっともないよ。
0539538
2006/07/13(木) 08:25:06>>535-537、ね。
0540デフォルトの名無しさん
2006/07/13(木) 08:44:23InitializeComponentメソッドの中で
例えば、
Me.ClientSize = New System.Drawing.Size(200, 100)
とかやってるわけで
このとき、InitializeComponentはコンストラクタの中で
実行されているわけだから、まだこのフォームのオブジェクトは
生成されていないわけで、それなのにMeを使うのは
ヌルポじゃないか
ということに疑問を持っている奴がいる、ってことじゃないか?
0541デフォルトの名無しさん
2006/07/13(木) 08:44:38できましたーー!
ありがたや、ありがたや。
0542デフォルトの名無しさん
2006/07/13(木) 09:57:19その順序を守ってれば、別にコンストラクタ内でも何らかの初期化はOKでしょ。
ただし、イニシャライズコンポーネントの後じゃないと当然コントロールが存在しない。
あと、イニシャライズコンポーネント内では、SyspendLayoutってメソッドで連鎖制御してる。
その辺をきちんと理解すれば、別にコンストラクタ内で初期化してもOKでしょ。
0543デフォルトの名無しさん
2006/07/13(木) 10:56:04おいおい>>537もかよ。
0544デフォルトの名無しさん
2006/07/13(木) 11:04:29Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
AddHandler Application.Idle, AddressOf AppEvh_Idle
End Sub
Private Sub AppEvh_Idle(ByVal sender As System.Object, ByVal e As System.EventArgs)
RemoveHandler Application.Idle, AddressOf AppEvh_Idle
Dim fm2 As New Form2
fm2.Show()
End Sub
End Class
MSDNをみるとフォームを表示後すぐCloseする場合もこの手法を使うように書いてある。
0545デフォルトの名無しさん
2006/07/13(木) 11:22:12おお、目からうろこだ!
0546デフォルトの名無しさん
2006/07/13(木) 11:27:05したのですが、データセットに項目を追加してビルドをすると
自動生成されたデータセットのヘッダーで
「C1004: 予期しない EOF が見つかりました。」
と出ました。ヘルプを見てもこのエラーとは関係ないものばかりでした。
どうしてこのエラーが出るのかが分かりません。
分かる方教えてください。
0547デフォルトの名無しさん
2006/07/13(木) 11:53:18ここをもっと詳しく具体的に説明してくれないか?
0548546
2006/07/13(木) 12:07:58データセット名がdataset1で、dataset1.xsd内でツールボックスから
以下を追加しました。
elementで一番上のテーブル名(?)を,DataItemにしました。
その下に、elementで名前をitem1、typeをintにしました。
その後ビルドすると、エラーになりました。
0549デフォルトの名無しさん
2006/07/13(木) 12:09:210550デフォルトの名無しさん
2006/07/13(木) 12:50:440551デフォルトの名無しさん
2006/07/13(木) 12:58:370552デフォルトの名無しさん
2006/07/13(木) 13:05:01その作業でどんな設計のDBができたつもりなのか、フィールド名や定義
も含めて日本語で詳しく説明してみよう。なんかDB設計もあいまいなま
ま、とりあえずいろいろ触ってなんかできましたって印象を受けるし。
データを外部に置きたくない理由が不明だけど、SQLとか使ってデータ
の操作をするつもりなら、アクセスファイルに素データ入力したやつに
ADO.NET経由で接続したほうが楽だと思うんだがなー。
0553デフォルトの名無しさん
2006/07/13(木) 15:31:09これまともに開発するツールじゃないなあ
0554デフォルトの名無しさん
2006/07/13(木) 15:54:270555デフォルトの名無しさん
2006/07/13(木) 15:58:08勝手に単語間のスペースを詰めちゃったり
余計なことばかりする。。。( ゚д゚)、
0556デフォルトの名無しさん
2006/07/13(木) 15:58:090557デフォルトの名無しさん
2006/07/13(木) 16:37:040558デフォルトの名無しさん
2006/07/13(木) 18:35:38まき散した文章書くから、すぐにわかるよね。
0559デフォルトの名無しさん
2006/07/13(木) 20:27:520560デフォルトの名無しさん
2006/07/13(木) 22:04:34最初の行に戻るはスクロールの値を0にでいいとして
最後の行に移動する場合はどう指定してやればいいとおもいますか?
グリッドビューの中身はテキストから読み込んでいるのでグリッドビューを読み込み毎に変わります。
グリッドビューの行数を数えてくれるような事はありますか?それかテキストの行数をどこかに格納してそれを最終行として格納した方がいいんでしょうか?
グリッドビューの行数を数えてくれる方法があればそちらの方が簡単だとは思うのですがないのかな・・・
それとももっと簡単に自動で最終行にまで移動してくれるような方法はあるんでしょうか?
よろしかったら助言の方をよろしくお願いします。
0561デフォルトの名無しさん
2006/07/13(木) 22:30:130562デフォルトの名無しさん
2006/07/13(木) 22:31:140563デフォルトの名無しさん
2006/07/14(金) 11:36:44ボタンのclickイベントを追加したら、何故かデザイナのコードに追加されてしまいます。
それからプロジェクトツリーからそのフォームをダブルクリックすると画面が開かずに
デザイナのコードが表示されるようになって、画面を開く事ができなくなってしまいました。
プロジェクトツリーをみるとフォームのアイコンではなくてコードのアイコンになってます・・
これ普通に画面表示されるにはどうしたらいいのでしょうか?
0564デフォルトの名無しさん
2006/07/14(金) 11:42:000565デフォルトの名無しさん
2006/07/14(金) 11:43:55別のプロジェクトでフォームを作ってもそうなるか確かめる。
それがうまくいくようなら、うまくいかなくなったコードとよく比べてみる。
どこかクラス名とか大事なキーワードとか消したり変更したりしてない?
0566デフォルトの名無しさん
2006/07/14(金) 11:54:35お答えありがとうございます。
継承元等は一切変更していません。
普通に画面を作ってからプロパティウィンドウからbuttonのclickイベントを追加したら
デザイナのコードにclickイベントが追加されたのが事の発端だと思いますが・・
ほかの画面は普通に開く事ができますし、新たに画面を追加して同じ操作をしても問題なく画面はひらいてくれます。
0567デフォルトの名無しさん
2006/07/14(金) 12:23:26それって何かいけないことなの?(・∀・)
0568デフォルトの名無しさん
2006/07/14(金) 12:29:48デザイナのコードじゃなくて普通のコードの方にイベントが追加されます。
画面を見ずにデザイナのコードだけで画面を作ってイベントを追加するならそれでも問題はないですが・・
0569デフォルトの名無しさん
2006/07/14(金) 12:41:35普通って何だよw
どうせフォームのリソースファイルを誤操作で削除しちゃったとか、
そんなところじゃないの?
リソルーションエクスプローラで「全てのファイルを表示」にして確認した?
あと、開発ツールのバージョンぐらい書くでしょ普通。
IDEの不具合を疑ってるわけでしょ?
0570デフォルトの名無しさん
2006/07/14(金) 13:01:500571デフォルトの名無しさん
2006/07/14(金) 13:20:30おっと確かにバージョンを言ってなかったですね。
Visual Studio 2005です。
普通のコードって言い方も変ですよね。
デザイナじゃない方のイベント等を書くほうのコード・・
>どうせフォームのリソースファイルを誤操作で削除しちゃったとか
そんな馬鹿げたミスなら最初からここにはきませんよ。
まあ、とにかく言いたいことは、デザイナのコードがちゃんと存在するのに
デザイン画面で出てくれないんですよ、プロジェクトツリーでそもそもその画面は
フォームとして認識してないみたいです、アイコンがフォームのアイコンではなくなっているので。
0572デフォルトの名無しさん
2006/07/14(金) 14:06:09の現象が出るのか確認したか? 出るならファイル自体が、出ないなら
最初のパソコンに入ってるIDEが妙なんだろう。
他にパソコン持ってないってんなら、IDEの新規プロジェクトでボタンク
リックを追加して様子を見るとか、もっと問題の切り分けをしっかりし
たほうがいいよ。
>>そんな馬鹿げたミスなら最初からここにはきませんよ。
ひとに質問するときには、もうちょっと謙虚に発言したほうがいいよ。
0573デフォルトの名無しさん
2006/07/14(金) 14:28:260574デフォルトの名無しさん
2006/07/14(金) 14:39:21だって、そんな馬鹿みたいな返答するほうもどうかとおもうけど?
あれは答えてるというよりただの煽りにしかみえないし。
>>573
壊れてねーよカス
0575デフォルトの名無しさん
2006/07/14(金) 14:53:37Public Class Class1
Inherits System.Windows.Forms.Form
End Class
ってやるだけでフォームのアイコンになるんだけどなあ。
本当に継承壊してない?
0576デフォルトの名無しさん
2006/07/14(金) 15:42:41ちょっと待てよ。
プロジェクトファイルが壊れてその症状てのは
比較的多いパターンだぞ。確認して言ってんのかどっちだ?
けどもうしるかボケ
0577デフォルトの名無しさん
2006/07/14(金) 17:33:06それはデザイナのコードですよね?
それは他のコードと比較しても壊れてる様子はなく、実行するとちゃんと画面はでてきます。
ちなみに、画面が出ないのは設計時の話です。
>>576
確認してるつってんだろ!”カスがああ!!
0578デフォルトの名無しさん
2006/07/14(金) 17:55:19んじゃ、Inheritsの行を1回消して、また元に戻したらどうなる?
0579デフォルトの名無しさん
2006/07/14(金) 17:57:46おかわりありませんでした
0580デフォルトの名無しさん
2006/07/14(金) 18:15:32んじゃ、新規フォームを追加してそれのDesiner.vbに
壊れてるフォームのInitializeComponentから下のコードを上書きしたらどうなる?
0581デフォルトの名無しさん
2006/07/14(金) 18:23:16いきなりそんなにつっかかてんだ?
0582デフォルトの名無しさん
2006/07/14(金) 18:37:160584デフォルトの名無しさん
2006/07/14(金) 19:14:080585デフォルトの名無しさん
2006/07/14(金) 19:17:19新規にプロジェクト作成して、その新規プロジェクトのフォルダに
件の問題のあるフォームのファイルを全部コピペしてプロジェクトに追加してみれば
問題がプロジェクトにあるのか、それともフォームのコードにあるのか
問題の切り分けができるんじゃない?
0586デフォルトの名無しさん
2006/07/14(金) 19:25:30Desiner.vbが盲点て、君が「デザイナのコード」と言ってたのはDesiner.vbのことじゃないの?
まあ、それは置いといて新規フォームは当然フォームのアイコンなんだよね。
で、InitializeComponent以下を置き換えたらコードのアイコンになるのか?
だとしたらそこのコードに問題があるわけだ。どこが悪いかはコードを見なきゃ分からん。
0587デフォルトの名無しさん
2006/07/14(金) 19:56:11ご親切にありがとうございます。
新規フォームはフォームのアイコンになります。
InitializeComponent以下を置き換えてもコードのアイコンになっています。
まず、言われた事をやってみる事と、もうちょいわかりやすく状況を整理したいとおもいます。
0588デフォルトの名無しさん
2006/07/14(金) 21:16:26初心者な上で説明下手で申し訳ないですが、
単純なリスナーフォームとセンドフォーム(TCPでもUDPでも
どちらでもよい)を作って、A家からB家に、TextBox の内容を
送るプログラムを作った場合、ADSLモデムで NAT の設定とかしないと
通信できないのでしょうか?
A家もB家も、ADSLモデムにグローバルアドレスがあって、
各PCにローカルアドレスがある状態です。
0589デフォルトの名無しさん
2006/07/14(金) 21:27:450590デフォルトの名無しさん
2006/07/14(金) 21:58:02だったら全然問題ないでしょ。
TCPにしてもUDPにしてもHTTPより下のレイヤの話だから。
0591デフォルトの名無しさん
2006/07/14(金) 22:28:310592デフォルトの名無しさん
2006/07/14(金) 22:44:59スレ違いだよん
0593588
2006/07/14(金) 22:48:30実験すると成功するんです。で、ヘンな事だとは思うんですが、
ADSLモデム(言い方変ですか?)のグローバルIPを指定すると、
うまくいかない。いっかい外を通って自分に返ってくる(?)みたいな
イメージで試してるんですが。
>>590
普通に見ることができます。
0594デフォルトの名無しさん
2006/07/14(金) 22:50:43リスナーフォームが動いているPCのIPアドレスと
リスナーフォームが待ち受けに使用しているポート番号を
リスナ側ADSLモデム(ルータ機能ありだろ?)上でポート転送を設定する。
リスナ側ADSLモデムのIPアドレスと上記で設定した済みのポート番号に対して
センドフォームからSocket通信する。
0595デフォルトの名無しさん
2006/07/14(金) 22:53:27AとB、どっちがホストか知らないけど、クライアント側がホスト側のグローバルIP(+ポート)を指定してやれば出来るんじゃないの?
0596デフォルトの名無しさん
2006/07/14(金) 23:07:55それってホストのどのPCに届くんだ
0597デフォルトの名無しさん
2006/07/14(金) 23:30:26おまえプロジェクトファイル見ておかしくないって判断できるのか?
どこを確認しておかしくないって判断したのかいってみろよ。
0598デフォルトの名無しさん
2006/07/14(金) 23:33:57って判断だろ、きっと
0599デフォルトの名無しさん
2006/07/14(金) 23:34:150600デフォルトの名無しさん
2006/07/14(金) 23:38:060601588
2006/07/14(金) 23:42:33その方法だと、グローバルIPの先にPCが複数台繋がっていた場合、
どこに届ければよいか判断できないのでは?
そこで、594氏のアドバイスを受けてモデム側のポートマッピング設定で
ポートを登録して試してみましたが、ダメでした。
>>592
VB外のポート設定なのか、VB内部のソースでWAN通信用のコマンド等が
あるか判断がつかなかったので書かせてもらいました。
VB関係なく、モデム側の設定でしたらスレ違いですが、だとすると
またまた疑問がわいてきて、winny などのP2Pは、そういう設定が
いりませんよね?プログラムから直接そういうのを行ってると思われる
のですが、VBじゃムリ(もしくは難解)なんでしょうか。
0602デフォルトの名無しさん
2006/07/15(土) 00:01:55何がどう逆なんだよ?
0603デフォルトの名無しさん
2006/07/15(土) 00:27:27>>winny などのP2Pは、そういう設定がいりませんよね?
質問の内容から思うに、そういう設定は必要だと思うが。
つーか、使用しているそのモデムって奴の製品名は何?
0605デフォルトの名無しさん
2006/07/15(土) 01:06:40ttp://www.losttechnology.jp/Tips/aterm.html
この系統だと思われるが、この手の設定がきちんと行われている「あて先ローカルIPも間違ってない」のに、接続できないのなら
ファイアーウォールが邪魔している可能性があるが。
やっぱり、激しくルーターの設定の問題だと思うが、
VBの問題だと思うなら
ttp://codezine.jp/a/article.aspx?aid=22
ここで公開されているサンプルで一度テストしてみた方が手っ取り早いかと。
0606デフォルトの名無しさん
2006/07/15(土) 01:09:440607デフォルトの名無しさん
2006/07/15(土) 01:29:31下位のレイヤでつながっているなら上位のレイヤはつながるといえるが、
上位のレイヤでつながっていても下位のレイヤでつながるとはいえない。
てのがまあ一般的な話。
0608デフォルトの名無しさん
2006/07/15(土) 08:50:32おまい、言ってることが逆だろw
下位レベルのプロトコルで正常に通信できていても
上位のレイヤでアプリ同士がプロトコル守っていなかったら
正しく通信はできないだろうが
0609デフォルトの名無しさん
2006/07/15(土) 09:33:39守った上での話しだろ普通。
IPより下のレイヤでネットワーク間の通信ができるか?
HTTPレベルでプロキシ使っているときにTCPレベルで通信できるか?
レイヤの上下ってのは普通そういう話。
0610デフォルトの名無しさん
2006/07/15(土) 12:45:59> HTTPレベルでプロキシ使っているときにTCPレベルで通信できるか?
できるよ。つか、できなかったらおかしいじゃんよ。TCPはHTTP専用か?ww
HTTPプロキシは文字通りHTTPプロトコル上での話し。TCPのレイヤとは何の関係もない。
HTTPのレイヤで正常に通信できているなら、それより下のTCPやさらに下のIPのレイヤで
通信ができていないわけがない。
0611デフォルトの名無しさん
2006/07/15(土) 12:51:05ttp://www5e.biglobe.ne.jp/~aji/3min/06.html
0612デフォルトの名無しさん
2006/07/15(土) 16:37:40んー、じゃなくてさ、
HTTPよか単純にIPとその下のレイヤのが意味分かりやすいか…
IPによってインターネットでの通信ができるんだから、
それより下のレイヤでもインターネットでの通信できてるに決まってるだろ
ってあんたは言ってるんだぜ。
ってか、俺が言ってる意味は上のような意味。
あんたが言ってるのはちょっと違う意味。
あんたの言いたいことはそれはそれでまあ分かるんだけど、
俺はそういう意味では言ってない、てだけか。
0613デフォルトの名無しさん
2006/07/15(土) 16:44:20> IPによってインターネットでの通信ができるんだから、
> それより下のレイヤでもインターネットでの通信できてるに決まってるだろ
> ってあんたは言ってるんだぜ。
ちょっw、そんなこと言ってないよ。困っちゃうなぁ・・・もういいやw
0614デフォルトの名無しさん
2006/07/15(土) 17:11:44レイヤの上下ってのは一般にそういうものという話。
>できるよ。つか、できなかったらおかしいじゃんよ。TCPはHTTP専用か?ww
>HTTPプロキシは文字通りHTTPプロトコル上での話し。TCPのレイヤとは何の関係もない。
>HTTPのレイヤで正常に通信できているなら、それより下のTCPやさらに下のIPのレイヤで
>通信ができていないわけがない。
HTTP専用のプロキシ越しで通信できるのは、HTTPだからだろうが。
TCPやIPのレイヤでは直接はできんだろうが。
なんでIPとそれより下だけ別の話にして
上のレイヤは違うんだ。
0615デフォルトの名無しさん
2006/07/15(土) 17:55:56なにが困っちゃうなぁだ。
どっかのD9Nじゃねーだろなおまえ…
0616デフォルトの名無しさん
2006/07/15(土) 17:59:43┏┫┃┃┃ スレ違いは ┃┃┃┣┓
┃┃┃┃┣┓ ここまで ┏┫┃┃┃┃
┃ ┃┃┏━━━┓┃┃ ┃
┃スレ違い ┣┫ . ・∀・ ┣┫. STOP!┃
┗━━━━┛┗┳━┳┛┗━━━━┛
┏┻┓┃
┏━┛ ┣┻┓
┗━━━┫ ┗━┓
. ┗━━━┛
0617デフォルトの名無しさん
2006/07/15(土) 21:41:05> HTTP専用のプロキシ越しで通信できるのは、HTTPだからだろうが。
> TCPやIPのレイヤでは直接はできんだろうが。
おまえなぁ、いいかげんにしろよなw
そんなことあたりまえじゃないか。誰が「TCPやIPのレイヤでHTTPプロキシ越しに通信できる」
なんて言った?レスよく嫁よw
最初に戻って言うとだな、>>588と>>593のレスで
A家もB家も普通にインターネットでサイトを閲覧できていることがわかってるわけだ。
それならば、TCPレイヤでのパケット通信はできているはずだな。なぜなら、
TCPレイヤの上位で動くHTTPでの通信ができているからだ。
それならば、IPアドレスの解決は当然できているはずだな。なぜなら、
IPレイヤの上位で動くTCPでの通信ができているからだ。
それならば、>>588で言っている「ADSLモデムでNATの設定」云々ということは
必要ないぞ。と言ったわけだ漏れは。
ADSLモデムがルータなら、配下の各PCにローカルIPが割り当てられていたとしても
サイトが見れていると言うんだから、当然NATなり何なりの処理でグローバル⇔ローカル変換が
行われているはずだからだ。
そこで>>588はHTTPじゃなくて、TCPやUDP(これはほとんどIPだな)のプロトコル上で
独自のプロトコルを策定するなりして、テキスト転送をしたいと言ってるわけだな。
それならば、上で言った利用で>>590で「問題ないよ」と言ったわけだ。
もちろん、作成するアプリがバカなら通信はできないよ。あと、特定のIPアドレスを
フィルタリングしてるようなファイヤーウォールがあれば無理だよ。
0618デフォルトの名無しさん
2006/07/15(土) 21:58:01そのあて先のパケットは通常ルータ(モデム)が遮断するよ。
遮断しないルータ(モデム)もある。
なんか見当ハズレなレスが多くておじさんびっくりだよ。
0619デフォルトの名無しさん
2006/07/15(土) 21:58:44今回の細かい話をしてるんじゃなくて、
「上位のレイヤで普通に通信できてるなら下位のレイヤでもできてる」
って言い方が一般のレイヤの理屈と逆だって言ってるだけ。
※最終的に下位のレイヤの組み合わせでで通信できてるのは当たり前だが
そんなことを言ってるんじゃない。
おれは最初からそういう部分の話をしてるだけ。
>そんなことあたりまえじゃないか。誰が「TCPやIPのレイヤでHTTPプロキシ越しに通信できる」
>なんて言った?レスよく嫁よw
>できるよ。つか、できなかったらおかしいじゃんよ。TCPはHTTP専用か?ww
>HTTPプロキシは文字通りHTTPプロトコル上での話し。TCPのレイヤとは何の関係もない。
>HTTPのレイヤで正常に通信できているなら、それより下のTCPやさらに下のIPのレイヤで
>通信ができていないわけがない。
おんなじことだろが。
HPを普通に見れてるがなんでプロキシ越しじゃないと断言できるんだよ。
てまあ今回の話がどうとかじゃなくて、俺が言いたかったのは、ただ単に
--
「上位のレイヤで普通に通信できてるなら下位のレイヤでもできてる」
って言い方が一般のレイヤの理屈と逆だって言ってるだけ。
--
てことだけ、それ以上のことじゃない。
NATとかのレベルの話もしてない。ただ上のことだけ。
0620デフォルトの名無しさん
2006/07/15(土) 22:00:490621デフォルトの名無しさん
2006/07/15(土) 22:09:52という機能を実装しています。
0622デフォルトの名無しさん
2006/07/15(土) 22:15:01もうレイヤの話はやめろ。うざい。
0623デフォルトの名無しさん
2006/07/15(土) 22:28:41その前にひどいまとめ方だな。
0624588
2006/07/15(土) 22:36:32LAN内からは、外部から内部への確認、ができない
のは初めて知りました。素直に知り合い(B家)に
協力をあおぎます。
それと平行して、モデム、ファイアウォール等の
設定はせずにVB内だけでできるのか模索してみます。
ありがとうございました。
0625デフォルトの名無しさん
2006/07/15(土) 22:40:21> 俺は最初からレイヤの上下の一般的な話をしてるって何度言ったら分かる。
> 今回の細かい話をしてるんじゃなくて、
どうやら、おまいの言うところの「一般」の認識は、漏れとは激しく食い違ってるようだな。
それだけは了解したww
さっきからずっと漏れが言っている「通信」というのは、インターネット通信とかの
なにか一定のプロトコル上での通信のことじゃなくて、各々のレイヤにおける
プロトコル上での通信(パケットのやり取りもあれば、電気信号や電圧の変化の
ことだってあるだろう)のことだよ。そのような各レイヤでの「通信」が
正しく行われていなければ、それを土台にして積み上がっているレイヤでの
プロトコルに基づく通信は、当然実現し得ないはずだと言ってるんだよ。
だから逆に言えば、あるレイヤ上で動いているアプリでふつうに「通信」できているのなら、
それより下のレイヤはすべて各々の責任を果たしている(つまり「通信している」)と言える。
そういう意味のことを漏れは言っているわけ。
だから、
おまいが(おまいだよな?)>>607で、
> 下位のレイヤでつながっているなら上位のレイヤはつながるといえるが、
> 上位のレイヤでつながっていても下位のレイヤでつながるとはいえない。
と言っていることのどこが「一般的な」言い方なんだろうか?と思ったわけよ。
あるレイヤで通信できている(=つながっている)ことが、それより上のレイヤの
通信を保証するわけないだろうが。つか、できないだろうそんなこと。
0626デフォルトの名無しさん
2006/07/15(土) 22:45:59延々と繰り返すスレはここですか?
0627デフォルトの名無しさん
2006/07/15(土) 22:46:420628560
2006/07/15(土) 23:04:51その最大行までスクロールの値が分からないのです
VScroll=0で最小行
最大行の値はなんなんでしょうか?
書いてる通り最大行数は起動毎に変動するので数を指定することはできません
>>562
行のコレクションとは?
0629デフォルトの名無しさん
2006/07/15(土) 23:05:17例えば端末同士がIPで通信できてるから、物理層でも端末同士で通信できてるはず。
なんてことは普通言わない。
レイヤの上下の話ってのはそういうレベルの話。
そしてごく当たり前に出てくる話。
それだけ。
0630デフォルトの名無しさん
2006/07/15(土) 23:14:370631デフォルトの名無しさん
2006/07/15(土) 23:15:550632デフォルトの名無しさん
2006/07/15(土) 23:19:45「通信のレイヤに関する話」で「IP」とか「レイヤ」とか「物理層」とかの言葉を使うことが
「普通」じゃないと言うのなら、おまいの言う「レイヤの上下の話」ってのは、まったくもって
低レベルな話ってことになるなww
0633デフォルトの名無しさん
2006/07/15(土) 23:23:220634デフォルトの名無しさん
2006/07/15(土) 23:28:31つ「DataRowCollection.Countプロパティ」
これからは、ヒントを元にぐぐるということを覚えたほうがいいよ。
0635デフォルトの名無しさん
2006/07/15(土) 23:55:490636デフォルトの名無しさん
2006/07/16(日) 00:20:21DataGridViewには残念ながら使えません
0637デフォルトの名無しさん
2006/07/16(日) 00:22:06>>593
でローカルIPでは成功してるって言ってるんだからVBの問題じゃなくて
ルーターとファイアウォールの設定だけだと思うが
0638デフォルトの名無しさん
2006/07/16(日) 00:31:43DataSourceからでもたどれるだろうしどうにでもなろう。
0639デフォルトの名無しさん
2006/07/16(日) 00:34:290640デフォルトの名無しさん
2006/07/16(日) 00:35:012.0だったらこれでも使いなよ。
ttp://msdn2.microsoft.com/ja-jp/library/system.windows.forms.datagridview.rowcount.aspx
0641デフォルトの名無しさん
2006/07/16(日) 00:37:400642デフォルトの名無しさん
2006/07/16(日) 00:38:47DataGridView自体2.0にしかないよ。
0643デフォルトの名無しさん
2006/07/16(日) 10:17:47例えば
1〜10(整数)に
英文字『J』を加えてランダムに表示させる時に
Label1.Text=((10*Rnd())+1)
↑をどう変形(付け加え)すれば良いでしょうか?
『予め要素を配列に格納して、取得した乱数とインデックスとを対応させれば良いかも』とはお伺いしたのですがよくわからずに
普通の(乱数を使わない)スロットのようにタイマーを使って
Val(123456789)の9の右にJを入れて、Right(1文字)+left(9文字)を使ってみるとエラーになります
また、そのJという英文字に11という数字(と同じ意味;同じ数の大きさ)を与えるには、どのようにすれば良いのでしょうか?
前者の質問も後者の質問も
Val(J)=11としたりJ=11としたり、それらを『Val(123456789)&』の後に付けたりしてもうまくいきません
どうかご指南の程をよろしくお願いします…
0644デフォルトの名無しさん
2006/07/16(日) 10:47:10表示は ToString のオーバーライド。
0645デフォルトの名無しさん
2006/07/16(日) 10:51:12644じゃないけど
0646643
2006/07/16(日) 11:05:15ご親切にありがとうございました!!
0647643
2006/07/16(日) 11:07:53ありがとうございます!
はっきり言って、全く意味がわかりませんが、後は初心者スレで聞いて頑張ってみます。
0648デフォルトの名無しさん
2006/07/16(日) 14:30:15実際入力してみても全く制限してくれません。
Maxlength=100と設定しても、平然と何百行(何千文字)も表示されてしまいます。
本当はどこで限界文字数を設定できるのでしょうか?
0649デフォルトの名無しさん
2006/07/16(日) 14:46:33自前で操作するんだったら自前で考慮して操作
0650デフォルトの名無しさん
2006/07/16(日) 14:54:17ありがとうございました
0651デフォルトの名無しさん
2006/07/17(月) 22:01:59の様に、画像の特定の色を別の色に変えて表示したいのですが、どうすればいいのでしょうか?
Dim oTargetImage As System.Drawing.Bitmap
Dim x, y As Integer
Dim c As System.Drawing.Color
oTargetImage = My.Resources.sample
For x = 0 To oMatchImage.Width - 1
For y = 0 To oMatchImage.Height - 1
c = oMatchImage.GetPixel(x, y)
If c = Color.FromArgb(255, 255, 255) Then
oMatchImage.SetPixel(x, y, Color.FromArgb(0, 0, 0))
End If
Next
Next
と書けばいいのかと思ったのですが、
「SetPixel は、インデックス付きピクセル形式のイメージに対してサポートされていません。」
というエラーメッセージが出ます。
0652デフォルトの名無しさん
2006/07/17(月) 23:08:460653651
2006/07/17(月) 23:38:05Palettesクラスというものがあることを知りませんでした・・・
というわけで
Dim oColorPalettes As System.Drawing.Imaging.ColorPalette
Dim oTargetImage As System.Drawing.Bitmap
oTargetImage = My.Resources.sample
oColorPalettes = oTargetImage.Palette
For i = 0 To oColorPalettes.Entries.Length - 1
If oColorPalettes.Entries(i) = Color.FromArgb(255, 0, 255) Then
oColorPalettes.Entries(i) = Color.FromArgb(0, 0, 0)
End If
Next
oTargetImage.Palette = oColorPalettes
Me.PictureBox.BackgroundImage = oTargetImage
としてみたのですが、パレットが変わりません・・・。
試しに、
For i = 0 To oColorPalettes.Entries.Length - 1
oColorPalettes.Entries(i) = Color.FromArgb(0, 0, 0)
Next
としてみたのですが、やはり変わりません。画像表示部分に問題があるのでしょうか。
0654デフォルトの名無しさん
2006/07/18(火) 00:24:27が、壁にぶつかってしまいました・・・
たくさんのラベルがあって、変数の値によってtextを変化させるラベルを選ぶようにしたいのです。
例えば変数Xに値が入っているとした場合、Label(X).text="略"
みたいな感じでラベルを指定したいのですが、どのような方法がありますか?
上は理想を簡単に書いただけなので、結果が同じであればかまわないのですが・・
今の自分の知識ではSelect文を使うくらいしか思いつかないのですが、非常に冗長になるのでもっと簡単に纏められる方法があると嬉しいのです。
宜しくお願いします。
0655デフォルトの名無しさん
2006/07/18(火) 00:33:36> If oColorPalettes.Entries(i) = Color.FromArgb(255, 0, 255) Then
まずこの判断文を通ってるのか確認すれ。
そんな色がないとか実はパレット使ってないとか。
>>654
そもそもそんなに Label を並べるもんじゃないが。直に描画するのが一般的。
どうしてもやりたいなら事前に Label の配列つくっとけ。
0656654
2006/07/18(火) 00:45:57どうも有難う御座います。作ろうとしているゲームってのはマインスイーパでして、Windows付属のものを参考にして出来るだけ似たものをと思っています。
マスの数を変更する方法がわからないので今はおいておいて、とりあえず10*10の100マス固定で作ろうと試みているのですが、
クリックしてマスの外見が押下されたようにする場合、Label以外のもので再現出来るのでしょうか?
もしLabelで良かったとしても、後学の為「直に描画」について教えて頂ければ幸いです。
何に対して直になのかって時点でわかりません・・・
0657デフォルトの名無しさん
2006/07/18(火) 00:46:28LoadしたImgaeを直接いじるんじゃなくて別にImageを作成してそこに色を変えて描画
0658デフォルトの名無しさん
2006/07/18(火) 00:53:14コントロールは「重い」から何百もコントロール並べたら描画の負荷も洒落にならない。
のででかいラベルあたりを一枚置いてその上で一コマ一コマ自前で描画していく。
Paint イベントを調べてみな。
0659デフォルトの名無しさん
2006/07/18(火) 00:54:46buttonにしとけば?
マインスイーパーは押したタイルから空いているタイルを、ずらっと
連鎖反転したり、隣接する爆弾の合計を表示したりする再帰処理がキ
モになるから、表示系でウンウンうなってるヒマはないと思うよ。
0660デフォルトの名無しさん
2006/07/18(火) 02:38:360661デフォルトの名無しさん
2006/07/18(火) 05:27:45起動したフォーム以外の部分(デスクトップとか)を操作させないように
したいのですが、何か良い方法はあるのでしょうか?
今はdeactivateを使用して、ノンアクティブになった時点でフォームを閉じて
新しいフォームを開き直すようにしているのですが、なにぶん動きがみっとも
ないので・・・;
0663デフォルトの名無しさん
2006/07/18(火) 08:42:50つペイント
0664651
2006/07/18(火) 11:25:32ペイントで画像の対象の色を別の色に描きかえて、別のリソースとして用意しておくということですか?
最終的に変える色を動的にする必要があるので、パレットを使って描きかえないといけないのです。
0665デフォルトの名無しさん
2006/07/18(火) 11:29:53Structure BB
Dim Name as String
End Structure
End Structure
上記の構造体でAAの中のBBを定義する方法を教えてください。
例えばCなら
AA::BB c;
みたいな感じでBasicでの変数の定義方法を知りたいです。
0666デフォルトの名無しさん
2006/07/18(火) 11:41:55その構造体宣言はエラーになるが Dim c As AA.BB
0667デフォルトの名無しさん
2006/07/18(火) 11:51:34あ、すみません。
AAのなかでBBの変数はとってます。
ありがとうございました!!
0668デフォルトの名無しさん
2006/07/18(火) 12:05:17ありがとうございます。
もう1つ質問なのですが、フォームのNewコンストラクタの引数を取り
それをButtonイベント等でその引数に値を入れて返す方法はどうすればいいのでしょうか?
例えば引数が構造体だとすると
Dim aa As New BB ←構造体
Dim from As New Form2 ←フォーム
form.Show()
Form2にとりあえず変数宣言
Dim cc As BB
Form2のNew
Public Sub New( ByRef aa As BB ) ←ByRefでいいのかわからないけど・・
cc = aa
End Sub
Private Sub Button_Click(・・・)
ここでccに値をいれるとNewの引数のaaに値が入るみたいな・・
End Sub
0669デフォルトの名無しさん
2006/07/18(火) 12:36:06そういう使い方をするならクラスにしたほうがいいと思うが。
構造体でなきゃいけない理由があるの?
0670デフォルトの名無しさん
2006/07/18(火) 12:36:35参照型と値型の違いについて勉強する。
それが理解できてないうちはそういうことは考えない方が身のため。
っていうか、あんた多分まだ人に質問をしようって段階じゃないだろ。
基本すら押さえずに人に質問しまくっても埒明かないし物にならんよ。
0671デフォルトの名無しさん
2006/07/18(火) 13:14:51フォームはクラスじゃないんですか?
>>670
そんなことお前に言われる筋合いはない。
知らないならレスしないでくださいよ。
どこにでも荒らしはいるんだなあ
0672デフォルトの名無しさん
2006/07/18(火) 13:28:59ここで逐一質問するよりとりあえず入門書くらいは終えようよ
0673デフォルトの名無しさん
2006/07/18(火) 14:15:51素直にValueTypeにすればよかったと思う。誤解する人間が多すぎる。
0674デフォルトの名無しさん
2006/07/18(火) 14:50:300675デフォルトの名無しさん
2006/07/18(火) 15:10:44ケケケ
0676デフォルトの名無しさん
2006/07/18(火) 16:52:03リッチテキストボックスにファイルをドロップできるようにする方法を探して、
http://msdn2.microsoft.com/ja-JP/library/fkw1hc6t.aspx
このページにたどり着いたのですが、RichTextBoxのプロパティにAllowDropがありません。
DragDropイベントも無いです。どうしたらそれらの項目が表示されるのでしょうか?
0677デフォルトの名無しさん
2006/07/18(火) 17:28:27RichTextBoxのDragDrop関係のメンバはデザイナから見えないようになっているので
自分でコードを書く必要がある。
AllowDropはフォームのコンストラクタかLoadイベントでTrueにする。
イベントはコードエディタの上にあるクラス名とイベントのコンボボックスから
選択すればハンドラが作られる。
0678651
2006/07/18(火) 18:01:22>>653のソースの
Me.PictureBox.BackgroundImage = oTargetImage
を
Me.PictureBox.Image = oTargetImage
に変えると上手くいきました。
どうもありがとうございました。
0681デフォルトの名無しさん
2006/07/18(火) 18:30:04DataRowView型はString型への変換は無効ですと出てしまいます。
Dim str As String
str = ComboBox1.SelectedItem
どう変更を加えたらComboBoxで選択された文字列を取得することができるでしょうか。
0682デフォルトの名無しさん
2006/07/18(火) 18:33:15ComboBox1.Text
じゃダメ?
0683681
2006/07/18(火) 18:34:06申し訳ない。
0686デフォルトの名無しさん
2006/07/19(水) 10:29:400687デフォルトの名無しさん
2006/07/19(水) 11:10:37グリッドにデータを表示したときに必ず
System.NullReferenceException: オブジェクト参照がオブジェクト インスタンスに設定されていません。
と言うエラーが出ます。
一応Try〜Catchで抜けたらそのまま動くのですが、
根本的に回避するにはどうすればいいんですか?
0688デフォルトの名無しさん
2006/07/19(水) 11:42:01エラーを出す行には、どんな記述があるのかな?
0689デフォルトの名無しさん
2006/07/19(水) 12:01:17データテーブルの内容をグリッドに表示しているだけなんです。
0690デフォルトの名無しさん
2006/07/19(水) 12:31:03と、思っているだけかもしれないから、具体的にコードを出してくれ。
グリッドとテーブルのリンクはウィザードでやった? それとも直打ち
コードでやった?
0691デフォルトの名無しさん
2006/07/19(水) 13:28:350692デフォルトの名無しさん
2006/07/19(水) 14:09:03フォームにはdatagridviewコントロールだけ
Public Class Form1
Private Sub DataGridView1_CurrentCellChanged(ByVal sender As Object, ByVal e As System.EventArgs) Handles DataGridView1.CurrentCellChanged
Try
Catch ex As Exception
MessageBox.Show(ex.ToString)
End Try
End Sub
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim ds As New DataSet("test")
Dim dt As DataTable
Dim dr As DataRow
dt = ds.Tables.Add("table")
dt.Columns.Add("A", Type.GetType("System.String"))
dr = dt.NewRow
dr("A") = "ほげほげ"
dt.Rows.Add(dr)
DataGridView1.DataSource = dt
End Sub
End Class
ごめん。サンプル作ったんだけど普通にエラーが出ずに動くなぁ
もう少し試行錯誤してみます。ありがとうございました。
0693337
2006/07/19(水) 15:59:350694デフォルトの名無しさん
2006/07/19(水) 16:05:070695デフォルトの名無しさん
2006/07/19(水) 16:09:220696デフォルトの名無しさん
2006/07/19(水) 16:12:30できました。ありがとうございます
0697デフォルトの名無しさん
2006/07/19(水) 16:32:48ひょっとしてLoadイベントではダメなんですか?
0698デフォルトの名無しさん
2006/07/19(水) 16:43:420699デフォルトの名無しさん
2006/07/19(水) 17:07:30Button.PerformClickメソッド呼べばいいんじゃないか?
0700デフォルトの名無しさん
2006/07/19(水) 17:36:52うっ、そんな便利なメソッドがあったんですか・・・
0701デフォルトの名無しさん
2006/07/19(水) 17:52:430702デフォルトの名無しさん
2006/07/19(水) 17:57:560703デフォルトの名無しさん
2006/07/19(水) 18:05:110704デフォルトの名無しさん
2006/07/19(水) 18:52:290705デフォルトの名無しさん
2006/07/19(水) 20:36:210706デフォルトの名無しさん
2006/07/19(水) 22:40:39ActiveControlだったかに設定してもいい。
0707デフォルトの名無しさん
2006/07/20(木) 01:27:50まだあまり詳しくないので質問したいのですが
何かアプリケーションを開いたときにタスクバーにそのアプリケーションのキャプション?の部分が出ますよね?
それをVBで作ったプログラムからアプリケーションを閉じずにそのアプリケーションだけを
タスクバーから取り除くといったものはつくれますか?
VBでやる必要はないといわれればそのとおりなんですが
わかり辛い文章で申し訳ないです
0708デフォルトの名無しさん
2006/07/20(木) 04:29:260709デフォルトの名無しさん
2006/07/20(木) 04:41:21どこが悪いかご指摘願いたいです。
Public Class Form1
Public Declare Function WindowFromPoint Lib "user32" (ByVal xPoint As Integer, ByVal yPoint As Integer) As Integer
Public Declare Function GetDC Lib "user32" (ByVal hwnd As Integer) As Integer
Public Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Integer, ByVal hdc As Integer) As Integer
Public Declare Function GetPixel Lib "gdi32" (ByVal hdc As Integer, ByVal x As Integer, ByVal y As Integer) As Integer
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim hTargetWin As Integer
Dim hTargetDC As Integer
hTargetWin = WindowFromPoint(20, 20)
hTargetDC = GetDC(hTargetWin)
Dim colorA As Int32
colorA = GetPixel(hTargetWin, 20, 20)
MsgBox(colorA)
ReleaseDC(hTargetDC, hTargetWin)
End Sub
End Class
0710デフォルトの名無しさん
2006/07/20(木) 08:24:02池沼だろうか
普通Win32APIの戻り値がおかしいと思えば、戻り値の意味を確認するだろ
つまり君は普通じゃないってことだ
0711デフォルトの名無しさん
2006/07/20(木) 12:40:390712デフォルトの名無しさん
2006/07/20(木) 12:59:32すこしでも早く答えが知りたいから。
0713デフォルトの名無しさん
2006/07/20(木) 13:27:31○ すこしでも楽に
0714デフォルトの名無しさん
2006/07/20(木) 16:10:200715デフォルトの名無しさん
2006/07/20(木) 16:37:00先日、会社の先輩より、データベースのアクセスにはデータアクセスのコンポーネント(DACとかいってました)を
実装して、そのデータアクセスコンポーネント経由で使うものだといわれました。
このデータアクセスコンポーネントとは何なのでしょうか?
今まで、書籍やインターネット上で勉強した時は、DataSet(xsd)を使って、TableAdapterを使って
データの参照や登録・変更・削除をしていました。
データアクセスコンポーネントとは、このDataSetやTableAdapterの事なのでしょうか?
それとも全く別物?
また、このデータアクセスコンポーネントを使うメリットって何なのでしょうか?
0716デフォルトの名無しさん
2006/07/20(木) 16:57:53データアクセスコンポーネントとは、このDataSetやTableAdapterの事なのでしょうか?
あたりまえやん
メリット?VBではそれなしにデータベースにアクセスできないだろ
いや、できるか知らんけどめちゃくちゃコードが長くなりそう
0717715
2006/07/20(木) 17:05:44>>データアクセスコンポーネントとは、このDataSetやTableAdapterの事なのでしょうか?
>あたりまえやん
私も最初、そうかと思ったのですが、どうやら違うらしいのですよ。
データアクセスコンポーネントと呼ばれるクラスライブラリを実装するらしいのです。
でもって、そのクラスライブラリでデータベースとのやり取りを一本化して、
アプリケーション側では直接データベース(この場合だとDataSetTableAdapterだと思います)を
使用せず、このデータアクセスコンポーネント経由で行うらしいのです。
2階層がどうとか3階層がどうとかも言っていました。
正直、今書いてる内容も、言われて覚えているだけなので、
何を言っているのかは意味不明な状態です。
0718デフォルトの名無しさん
2006/07/20(木) 17:28:00DTO(data transfer object かな)のことじゃないの?
0719デフォルトの名無しさん
2006/07/20(木) 18:39:340720デフォルトの名無しさん
2006/07/20(木) 18:43:23会社の先輩なんだろ
納得いくまで聞けばいいのでは?
うちでもデータアクセス用のクラスを作ってそこで管理してる
メリットと言えるかどうかわからないが、DBへのアクセス関係を纏めることで
DB関連のコードが変更になっても対応が容易
あと結構へのアクセスはよく似た処理が多いから纏めてる
0721デフォルトの名無しさん
2006/07/20(木) 18:45:35>720
誤)あと結構へのアクセスはよく似た処理が多いから纏めてる
正)あとDBへのアクセスは結構よく似た処理が多いから纏めてる
0722175
2006/07/20(木) 20:41:10納得いくかどうかで言えば、納得できていませんが、
何が納得できないかというと、メリットが感じられないのです。
>うちでもデータアクセス用のクラスを作ってそこで管理してる
>メリットと言えるかどうかわからないが、DBへのアクセス関係を纏めることで
>DB関連のコードが変更になっても対応が容易
この部分については分からないでは無いのですが、逆にデメリットでは?と感じています。
というのは、書籍やインターネット上にあるような1つのExeファイルで
しかも、データベースのテーブルもマスタ系を含めて10テーブルぐらいならいいのですが、
業務系にもなると、画面数にして数百、データベースのテーブルもViewを含めれば
100、200当たり前になります。
この部分の、色々な条件でのデータベース処理をクラスとして実装するとなると、
工数が掛かって仕方ないと思うのですが?
>あと結構へのアクセスはよく似た処理が多いから纏めてる
具体的には、どういった処理なのでしょうか?
IDや条件などの引数を受け取って、DataSetやTableAdapterを返すのでしょうか?
(DataGridViewやその他コントロールのDataSourceと関連付けるのが多いと思うのですが・・・)
0723707
2006/07/20(木) 21:36:31意味があるかといわれると何ともいえませんが
常駐して使ってる(例えば音楽ソフト)とかランダム+ループとかの場合あんまりウィンド操作しないので
タスクバーを占領してると他のウィンドをたくさん開いたときに邪魔になってくるから便利かなぁと思いついたんですが
中々思うような感じのが見つからなくて
0724デフォルトの名無しさん
2006/07/20(木) 21:51:23こういうやつ?
http://www.forest.impress.co.jp/lib/dktp/desktop/windowextn/tasktrayplus.html
0726デフォルトの名無しさん
2006/07/20(木) 22:25:30そりゃAPI呼べるんだから不可能ではないけど
0727デフォルトの名無しさん
2006/07/20(木) 22:32:330728707
2006/07/20(木) 22:33:25VBでやるべきようなことじゃないのはなんとなく自分でも・・
APIも色々WinAPI Database for VB Programmerさんなどで見てみたんですがまだまだ調べるのが足りなかったみたいです。
不可能ではないとのことなのでもう少し頑張ってみようかと思います。
>>727
私の技術的に無理でも実現が出来るという例が分かったので少し勉強してみようと思います
0729デフォルトの名無しさん
2006/07/21(金) 11:33:37UNIX時間を○年○月○日のフォーマットになおしたいのですが、
どういう関数書いたらいいのでしょう。
Excel上で直すやり方は探したらあったんだけど・・・
例:1151783570.171 → 2006/07/01
0730デフォルトの名無しさん
2006/07/21(金) 11:49:45構造体のサイズを測りたいのですが構造体では配列の初期サイズを宣言できないので
例えば Dim aa() as Byte などと定義して、コンストラクタでReDimでサイズを指定しても
SizeOfで見るとやはりポインタ?分しか計算されません・・
そこで、構造体内で初期サイズを指定するかReDim等でサイズを確保した分も
計算する方法を教えてください
0731デフォルトの名無しさん
2006/07/21(金) 12:39:20もしかしたらそのままズバリがあるかもしれないが計算で出すならこう。
Dim unixDate As DateTime
unixDate = New DateTime(1970, 1, 1).AddSeconds(1151783570.171)
0732デフォルトの名無しさん
2006/07/21(金) 13:11:10VB2005でMP3を再生することは可能でしょうか?
VB6のは検索で見つかられたのですが、2005のが見当たらなかったので・・・
ご教授よろしくお願いいたします。
0733デフォルトの名無しさん
2006/07/21(金) 14:50:00Sugeeeeeeeeeeeee!!!!!!!!
どうもありがとう!!!!
0734デフォルトの名無しさん
2006/07/21(金) 14:50:580735デフォルトの名無しさん
2006/07/21(金) 15:19:210736デフォルトの名無しさん
2006/07/21(金) 16:04:56My.Computer.Audio
MP3対応だったと思うけどなぁ。
0737デフォルトの名無しさん
2006/07/21(金) 17:14:43ご回答ありがとうございます
試してみたところMy.Computer.Audioはwavのみのようでした。
何かほかに良さそうな方法があればよろしくお願いしますm(_ _)m
0738720
2006/07/21(金) 17:41:51答えになってないかもしれないが...
>この部分の、色々な条件でのデータベース処理をクラスとして実装するとなると、
>工数が掛かって仕方ないと思うのですが?
それは設計の良し悪しだと思うよ
少なくともうちでは効率的にやれていると思いたい
あなたが言ってるように100,200のテーブルやビューを扱うからこそ纏めておかない
と収拾つかなくならないか?
例えばDBのプロバイダが変更になったとか、DataReaderを使っていたものを
DataSet(DataTable)で返す必要が出てきたなんてことになったらどうしてるんだ?
0739デフォルトの名無しさん
2006/07/21(金) 18:56:31VB6と同じようにやればいいんじゃないの?
0740デフォルトの名無しさん
2006/07/21(金) 20:21:45その値を何に使うかによっても解決方法が変わるんだが。
取りあえず MarshalAs を調べれ。
あと SizeOf で見るってのは一般に意味不明だ。そんなキーワードないし。分かるけどな。
0741715
2006/07/21(金) 20:36:28>それは設計の良し悪しだと思うよ
>少なくともうちでは効率的にやれていると思いたい
是非、一例としてご教示頂きたいです。
>あなたが言ってるように100,200のテーブルやビューを扱うからこそ纏めておかない
>と収拾つかなくならないか?
特別、苦労はしていません。
>例えばDBのプロバイダが変更になったとか、DataReaderを使っていたものを
>DataSet(DataTable)で返す必要が出てきたなんてことになったらどうしてるんだ?
開発規約として、DataReaderは一切使いません。(今まで使った事すら無いです)
またDBプロバイダも会社としてOracleしか認めていませんので
RDBMS自体が変更になる事は無いです。(今まで10年以上、Oracleだけだそうです)
また、ドライバ自体もOracleクライアントのインストールする必要もない
サードパーティ製のドライバ(当然 .NET対応)を使用していますが、
過去のバージョン(Oracleバージョンアップや.NET1.1から2.0への変更)からの
バージョンアップもソースコード1行も変更無しで対応しております。
0742デフォルトの名無しさん
2006/07/22(土) 00:28:31三角マークを非表示にしたいのですが、どうしたらいいか分かりません。
もしよい方法があれば、ご教授よろしくお願いいたします。
0743デフォルトの名無しさん
2006/07/22(土) 00:51:320744デフォルトの名無しさん
2006/07/22(土) 05:31:38低すぎて窮屈です
0745デフォルトの名無しさん
2006/07/22(土) 15:35:350746デフォルトの名無しさん
2006/07/22(土) 16:22:49初心者なんですが
pictureboxで画像を出して、もう一個それより小さい画像を出して
小さいほうの画像を、大きいほうの画像の上を
ある地点からある地点まで動かしたいのですが
その式?みたいなのがよくわかりません。
その場所についたら止まってくれるみたいなものを作りたいのですが・・・
0747デフォルトの名無しさん
2006/07/22(土) 17:01:430748デフォルトの名無しさん
2006/07/22(土) 17:49:05計算は中学の数学を思い出せ
0749デフォルトの名無しさん
2006/07/22(土) 18:06:22TimerのTickが関連しているのを自分で見つけたときはうれしかった(ショボ
もう23時間くらい考え中・・・、どしましょう・・・^^;
あぁぁあ時間がない!位置を更新・・・X・・Yをか・・?
うぅぅう、もう無理だよぉ;;
0750デフォルトの名無しさん
2006/07/22(土) 18:21:44PictureBox2.Left = PictureBox2.Left + 1
PictureBox2.Top = PictureBox2.Top - 1
こんなことしたら、とりあえず斜め上に移動してくれるようになったw
けど・・・
ラジオボタンで出発地点と 到着地点を作って
出発地点を 福岡として 到着を広島とすると そこまで移動するようにはできた
ただ、他の出発地点の場合は、このような座標移動を行ってほしいんだけど・・IF?使うのかな
なーんかわけわからなくなってきた
0751デフォルトの名無しさん
2006/07/22(土) 18:24:37Y方向距離 = 目標のY座標 - 出発点のY座標
X方向速度 = X方向距離 / 適当な値
Y方向速度 = Y方向距離 / 適当な値(上と同じ値にする)
で、TickイベントでX座標とY座標にそれぞれX方向速度とY方向速度を加算。
X方向とY方向に実際に移動した距離がそれぞれX方向距離とY方向距離を超えたら終了。
0752デフォルトの名無しさん
2006/07/22(土) 19:14:450753デフォルトの名無しさん
2006/07/22(土) 19:19:57ほんとごめんなさい、私頭悪いのですよ
>>ラジオボタンで出発地点と 到着地点を作って
出発地点を 福岡として 到着を広島とすると そこまで移動するようにはできた
ただ、他の出発地点の場合は、このような座標移動を行ってほしいんだけど・・IF?使うのかな
なーんかわけわからなくなってきた
これ日本語おかしいです(自分で言うか・・・w
結局、どの地点から出発しても同じ動きしかしてくれない。
出発地点別にそれぞれの座標移動を行ってほしい・・・・・という内容でした
ただ、なんというか・・・誰かサンプルつくってください(挫折
0754デフォルトの名無しさん
2006/07/22(土) 19:35:34出発地と到着地を指定して、その間を移動したいってことか?
始点と終点の座標をPoint型にでも入れておいて、各XYを評価。
出発<到着なら加算、逆なら減算で座標を増減すればいい。
0755デフォルトの名無しさん
2006/07/22(土) 19:39:110756デフォルトの名無しさん
2006/07/22(土) 19:51:10そのとおりです、指定して移動したいのです・・・・
point型って何でしょう・・・・XY評価・・・5段階評価?←シネ
ほんとすみません・・・ヘタレで
そのコードを晒したりしてくれたりはどうでしょうOrz
>>755
つられたい気分ですが、残念ながらマジです
0757デフォルトの名無しさん
2006/07/22(土) 19:55:14すみません、また質問ですけど
IF ラジオボタン1クリックして ラジオボタン2クリックしてあったら then
画像1は PictureBox2.Left > 75 And PictureBox2.Top > 30 Then Timer1.Enabled = False
とかなコードってできます・・・?
0758デフォルトの名無しさん
2006/07/22(土) 20:45:280759デフォルトの名無しさん
2006/07/22(土) 20:53:120760デフォルトの名無しさん
2006/07/22(土) 20:59:52インターネットで色々なコードをみてワクワクしてます。
色々いじって遊んでいるのですが、エクセルファイルの
セルの文字列や数値といった情報をテキストボックスに表示するような
プログラムを作ってみようと、ここ3日程いろいろ情報を探しているのですがうまくいきません。
一番行けそうだな、とと思ったのが下記のサイトなのですが
ttp://www.bcap.co.jp/hanafusa/VBHLP/dao_002.htm
(人様のコードを張ってよいものかどうか迷いましたので張って問題なさそうであれば貼りなおします)
これを貼り付けてデバッグ開始しますと、
Set DB = OpenDatabase(xlFileName, False, False, "Excel 8.0;HDR=NO;")
というところで OpenDatabaseが宣言されていない
MyData = MyData & .Fields(0) & vbTab & .Fields(1) & _
vbTab & .Fields(2) & vbCrLf
の部分で 演算子'&'は型'String'およびDAO.Fieldに対して定義されていません。
といった二つのエラーが出てしまいます。
環境はWindowsXP Visual Basic Express Edition 2005 とExcel2000でやっています。
デバッグの段階でエラーが出るという事はExcelは関係ないかと思ったのですが…。
(1)このコードをどのように修正すれば動きそうか
(2)DAOの勉強をするのにコードと実行例などが豊富なよいサイトなどないか
以上2点についてアドバイスいただけないでしょうか?
0761デフォルトの名無しさん
2006/07/22(土) 21:07:14そのサイトの内容を試してみたいならこっちだねぇ
>VBプログラマ質問スレ(6.0以前) Part49
0762デフォルトの名無しさん
2006/07/22(土) 21:09:11それはVB6用のコード
VB.NET用のコードは別にあるのでそのサイトのトップから辿るように
0763デフォルトの名無しさん
2006/07/22(土) 21:21:03お二人ともどうもありがとうございます。
検索している中で.NETになってからの移行がどうのという記事を
数多く見て、判断が付かず質問にいたったところでして大変助かりました。
これからご指摘の通りトップから見直してみようかと思います。
0764デフォルトの名無しさん
2006/07/22(土) 23:53:04ありがとうございます
最初
DataGrid1.PreferredRowHeight=2*DataGrid1.PreferredRowHeight
とかやっても全然ダメで泣きそうになりましたが
ヘルプで解決しました
MyTblStyl.PreferredRowHeight =
0765742
2006/07/23(日) 01:22:16ありがとうございます。
アイコンの表示を消すくらい簡単にできるだろうと思っていたのですが、
探し方が悪いのか、非表示す方法が見つけられず困っていました。
一度その方法で試してみたいと思います。
0766760
2006/07/23(日) 03:04:47こちらのサイト
http://hanatyan.sakura.ne.jp/dotnet/Excel01.htm#no2
を参考にしまして、どうすればよいかと考えてきました。
コード中に
xlRange = xlSheet.Range("A5:A7")
とありまして、ここはA5からA7までを選択するのだろうと予想は付いたのですが
これを例えばA5一つのセルを選択の範囲としてテキストボックスへ表示するには
どのようにすればよいでしょうか?まったく分からないなりに
TextBox1 = xlSheet.
このような形になるのではないかと思いまして
TextBox1 = xlSheet.Cells.Value
などと色々試しては見るのですが当然のことながら上手くいきません。
何かヒントをいただけないでしょうか?
0767デフォルトの名無しさん
2006/07/23(日) 07:43:09最新版を入れ直してもだめです
どうしたらよいか、だれか教えてください
0768デフォルトの名無しさん
2006/07/23(日) 08:01:160769デフォルトの名無しさん
2006/07/23(日) 08:13:560770エスパー伊東
2006/07/23(日) 08:40:15花ちゃんのとこかぁ。相変わらず参照カウンタやGCのことはよく理解してないねぇ。
xlSheet.Range("A5").Value.ToString()
Rangeが複数セルの場合は object ( , ) で値が戻って来てさらに添え字が1から開始だからちょっと迷う。
Dim str As Object( , ) = xlSheet.Range("A1:B1").Value
str(1, 1).ToString
0771766
2006/07/23(日) 09:36:38おおお!ありがとうございます!全く意図どおりに動きました!!
実はVB導入から1週間これで悩んでいまして…orz
助かりました。どうもありがとうございます。
分かっていただけないとは思うのですが非常に感動してます!!!
後半3行については普通に考えるとB2の値が戻ってきそうだけれども
括弧内のカウントが1から始まる為この場合A1をさすという事ですかね?
B2を指すときは(2,1)ではなく(1,2)とすればよい。この推察であっていますか?
0772デフォルトの名無しさん
2006/07/23(日) 10:12:14そのRangeはReleaseComObjectしなくていいの?
0773デフォルトの名無しさん
2006/07/23(日) 10:51:48A1:B2 でRangeをとった場合
A1 (1, 1) B1 (1, 2)
A2 (2, 1) B2 (2, 2)
>>772
早期に開放したいならReleaseComObjectを使う。
GCに任せる場合は、いつ開放されるかわからないということと、
アプリの終了時に残っているオブジェクトはGCされないことに注意。
GC.Collectを呼ぶならその前に参照が確実に外れていることを確認。
あとはインプロセスサーバーならあんまり気にしなくていいといったっところかな。
0774デフォルトの名無しさん
2006/07/23(日) 11:39:12>早期に開放したいならReleaseComObjectを使う。
>GCに任せる場合は、いつ開放されるかわからないということと、
間違い。
COMを使用した場合、ReleaseComObjectを呼ばれない限り永久に開放されない。
(タスクマネージャに何時までもExcelが残る)
0775デフォルトの名無しさん
2006/07/23(日) 13:00:11>アプリの終了時に残っているオブジェクトはGCされないことに注意。
いつまでも残ってるのはこのケース。これはたとえ参照を外していても発生しえる。
COMへの参照を完全にはずしたあとGCが発生するような処理をしてみるとExcelが終了するのが見えるはず。
0776デフォルトの名無しさん
2006/07/23(日) 13:29:35言ってる事分かってる?
>早期に開放したいならReleaseComObjectを使う。
>GCに任せる場合は、いつ開放されるかわからないということと、
に対して、間違ってるって言ってるの。
GCでCOMは開放されないから、『GCに任せるという表現自体』がおかしい。
(お前さんの表現だと、GCにてCOMがReleaseComObjectを呼ばないでも開放されると誤解を生む)
>COMへの参照を完全にはずしたあとGCが発生するような処理をしてみるとExcelが終了するのが見えるはず。
COMへの参照を完全に外す為にReleaseComObjectを使うんだろが。
だから、1つでもReleaseComObjectを忘れるとGCが発生しようがなんだろうが
Excelがタスクマネージャに残ったままになるんだろ。
0777デフォルトの名無しさん
2006/07/23(日) 14:38:41こういう風に思ってる人多いけどそんなことないよ実際は。
少なくとも参照設定してレイトバインディングでコード書けば。
論より証拠試せばすぐわかるから。
0778777
2006/07/23(日) 14:42:040779デフォルトの名無しさん
2006/07/23(日) 14:52:16主にCOM+について書いてあるが、同じアウトプロセスサーバだからExcelにも同じことが言えると考えていい。
ReleaseComObjectを使うべきときとそうでないときがきちんと書いてある。
Disposeを呼ぶべきかGCに任せるかの議論に似てて、
ReleaseComObjectを使った方がいいケースが多いのは確かだが、
けしてGCでは開放されないという話ではない。
0780デフォルトの名無しさん
2006/07/23(日) 15:00:020781デフォルトの名無しさん
2006/07/23(日) 15:04:420782デフォルトの名無しさん
2006/07/23(日) 15:15:42本当にGCでCOMが解放されるのか疑問に思って実験してみた。
実験1:
全部のCOMオブジェクトをUSINGで囲んでみた。
結果1:
COMオブジェクト解放されず。
実験2:
GCを明示的に呼び出す。(GC.Collect)
結果2:
COMオブジェクト解放されず。
本当にGCで解放されるの?
0783デフォルトの名無しさん
2006/07/23(日) 15:33:19長くなるけどサンプルコードあげてみるよ。意見が分かれるときは環境によって違うとかあるから試してもらえるとうれしい。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim excelApp As New Excel.Application
excelApp.Visible = True
Dim excelBooks As Excel.Workbooks = excelApp.Workbooks
Dim excelBook As Excel.Workbook = excelBooks.Add
Dim excelSheet As Excel.Worksheet = excelBook.ActiveSheet
Dim excelRange As Excel.Range = excelSheet.Range("A1", "B2")
excelRange.Value = New Object(,) {{"hello", "bye"}, {"hello2", "bye2"}}
Dim excelRange2 As Excel.Range = excelSheet.Range("A1:B2")
Dim str As Object(,) = excelRange2.Value
Debug.WriteLine(str(2, 2).ToString)
excelBook.Close(False)
excelApp.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelRange2)
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelRange)
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelSheet)
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelBook)
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelBooks)
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp)
End Sub
-- ここまで
excelApp.Quit() を入れ忘れると何をやってもEXCELのインスタンスはあがったままになるから注意ね。
GC.Collectは同じ参照が完全に外れるようにFormClosedに入れといいと思います。
0784デフォルトの名無しさん
2006/07/23(日) 15:39:41ReleaseComObjectを呼んだら実験の意味が無いんじゃないですか?
ReleaseComObjectを呼ばずにGCで解放されるかが実験の目的だと思うのですが?
0785デフォルトの名無しさん
2006/07/23(日) 15:44:13テスト1:比較のためReleaseComObjectで実行
テスト2:ReleaseComObjectをコメントにして実行、フォーム閉じるでアプリ終了。
テスト3:ReleaseComObjectをコメントにして実行、別のプロシージャでGC.Collectを実行
うちの環境だとテスト2でもEXCELのインスタンスは落ちる。
0786デフォルトの名無しさん
2006/07/23(日) 16:00:13テスト3は?
0787最凶VB厨房
2006/07/23(日) 16:01:570788デフォルトの名無しさん
2006/07/23(日) 16:03:18例えば予めタスクマネージャを立ち上げておいて次のコードを走らせると、
次のことが確認できる。
(1) プログラムを起動したままエクセルを閉じてもエクセルのインスタンスはのこっている。
(2) しかし次にプログラムを終了すると、エクセルのインスタンスも同時に消滅する。
'予めExcelへの参照設定されている必要がある
Imports Microsoft.Office.Interop
Public Class Form1
Dim mXL As Excel.Application
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
mXL = New Excel.Application
mXL.Visible = True
End Sub
End Class
0789デフォルトの名無しさん
2006/07/23(日) 17:33:53Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
ExcelTest()
GC.Collect()
End Sub
Private Sub ExcelTest()
Dim app As New Excel.Application
Dim wbk As Excel.Workbook = app.Workbooks.Add()
DirectCast(wbk.Worksheets(1), Excel.Worksheet).Range("A1").Value = "Test"
wbk.Close(False)
app.Quit()
End Sub
End Class
ボタンクリックのたびにExcelのプロセスが終了するのを確認した。
GC.CollectしないとExcelのプロセスがクリックのたびに増えていくが
途中でGCが働いて一気に溜まっていたプロセスが終了するので無限に増えることは無い。
アプリケーション終了時にはExcelのプロセスは全て終了する。
0790デフォルトの名無しさん
2006/07/23(日) 18:09:44form1.exe, form2.exe, form3.exe・・・
どこからでも呼び出せる関数って作れるんでしょうか
つくれるなら、参考になりそうなサイトか何か教えていただけると助かります
0791デフォルトの名無しさん
2006/07/23(日) 19:50:370792デフォルトの名無しさん
2006/07/23(日) 20:17:330793デフォルトの名無しさん
2006/07/23(日) 22:15:11>アプリの終了時に残っているオブジェクトはGCされないことに注意。
この部分は間違いでした。大昔に実際にテストして確認したのでずっとそうだと思っていたのですが、
この動作をしてたのは.NET 1.0 Beta 時代のもので、現在の1.0 1.1 2.0 ではアプリ終了時に
残ってるすべてのオブジェクトのファイナライザはちゃんと呼び出されていました。
ちなみにJava はアプリの終了時に残っているオブジェクトはGCされません。これは本当です(汗
0794790
2006/07/24(月) 00:49:11俺にはこいつは向いていないのかも、という気がしてきた
VBAの経験ちょこっとあり、程度の者です(Accessだけ)
何十個もフォームを使うようなDBアプリをつくろうと思ってるんですけど
何つか、こいつヒエラルキーつか階層つか、は一体どうなってるんでしょう
何かプロジェクトとかいうんですか、その中にいくつもフォームを詰め込むと
とんでもなく重いファイルができあがって、息も絶え絶えって感じの起動ですよね
6個ぐらい詰め込んだところで、ああこりゃダメだと諦めた
しょうがないからフォームごとに分けようかと
でもそうなると各フォームから呼び出してたモジュールのSubやFunctionはどうなるのかなと
そのプロジェクトとやらの上層にソリューションとかいうものがあるんですよね
空のソリューションってのをつくって、中にいくつかプロジェクトを並べてみた
同列で標準モジュール(みたいなもの)が並べられるに決まってると思ってた
でもダメだった
プロジェクトごとにSubやFunction書けってか?
書けっていうならそれでもいいけど
フォーム間の行き来つか開閉はどうするのかなと
ソリューションとか、もっともらしい名前でまとまってるんだから
とてもスマートな行き来の仕方があるに決まってると思った
でも分からない。
まさかCall Shell()?
だったらバラバラに作ったって一緒じゃん。まとめた意味ないじゃん
お願いですから何かヒントください...orz
0795デフォルトの名無しさん
2006/07/24(月) 01:02:30現在DataGridにDBの値を表示し、
データの追加、修正、削除を行えるプログラムを作成しています。
今問題になっているのは削除の部分で、
行を選択して(複数選択可)Deleteキーを押してもグリッドから行削除されないようにし、
グリッドの中の値のみ削除させたいと思っています。
現在、DataGridの行削除を禁止し、
DataGridのKeyDownイベントでDeleteキーが押されたら
選択された行のセルに空文字を代入させるようにしており、
DBから取得した行に関してはこの通り動いています。
しかし、DataGrid上で追加された行に対して同じ操作を行うと、
選択された中の一番上の行のデータのみ空文字が代入され、
空文字が代入されたセルにフォーカスがあたっている状態になり、
それ以後の行に関しては処理が無視されてしまいます。
また、ブレークポイントで一度処理を止め、
一行ずつ実行していくと全ての行に対して正常に処理が行われていました。
一体どうすれば思い通りの動きになるのでしょうか?
0796デフォルトの名無しさん
2006/07/24(月) 02:35:18DLLって知ってる?
あと、Friend とか Protected とか public とか private とか
0797デフォルトの名無しさん
2006/07/24(月) 05:22:42.NETの世界に来たんなら、
VB6以前の発想は捨てて
.NETの世界の勉強しろよ。
つうかフォーム6個程度でそこまで重くなるか?大きくなるか?
無駄に分けてもメリットはないぞ。
0798デフォルトの名無しさん
2006/07/24(月) 09:39:31そこの概念、VB6と決定的に違うからね。
VB6のDLLはVBで作ったら特殊なDLL、Cで作った場合は呼び出しに注意が必要。
.netのDLLは所謂普通のDLL。
フォームもクラスだときちんと理解すれば、DLL化したコンポーネント呼び出しで綺麗になるよね。
0799デフォルトの名無しさん
2006/07/24(月) 11:05:33>>行を選択して(複数選択可)Deleteキーを押してもグリッドから
行削除されないようにし、 グリッドの中の値のみ削除させたいと
っていう処理自体が、ちょっと考えられないんだが。
データは無いのに行だけが複数残ってる状態って、主キーはどうして
るの? 主キーが無い表だから問題ありませんとか?
0800795
2006/07/24(月) 11:37:03DBのテーブルには主キーを設定していますが、
DataGridには主キーは設定していません。
また、フォーム上に更新ボタンが配置してあり、
ボタン押下時に全ての項目が空のデータは登録しないようにしています。
DBの更新方法は、
一度全てのデータを削除し、
DataGrid上のデータを登録し直すようにしています。
また、主キーの重複チェックなどのチェック処理はボタン押下時に行っています。
本当はDataGridのデータソースに指定しているDataTableのPrimaryKeyに
主キーを設定したいのですが、
重複エラー時に表示されるエラーダイアログを
自分の指定したボタンやメッセージに書き換える方法がわからなかったため
このような形にしました。
エラーダイアログを書き換える方法はあるのでしょうか?
先ほどの問題ですが、
何となく原因がわかりました。
セルを選択→行ヘッダを選択→Deleteキー押下
という順番で操作した時、
DataGridのKeyDownイベントではなくTextBoxのKeyDownイベントが発生するようです。
ですので、DataGridのKeyDownイベント内でセルの値をクリアする処理を書いても
動作していなかったようです。
TextBoxのKeyDownイベント内で同様のコードを書いてみると、
思った通りの動きになりました。
セルの値のクリアは処理的には問題ないと思うのですが、
指摘された主キーの部分に関しては仕様としておかしいのでしょうか?
0801デフォルトの名無しさん
2006/07/24(月) 11:41:100802デフォルトの名無しさん
2006/07/24(月) 12:04:19書き込み前にチェックしてるなら、とりあえず問題ないとは思うけど。
DataGridで主キーの設定自体は必要なくても、元のDBと整合性を保った
状態にしておいたら、重複チェックしなくても直接書き戻せるじゃん。
第一、更新時に落とすならDataGridで空白行を表示しておく必要もない
んじゃないかな。表示しておく理由ってなんだろう?
あと、DBの更新時に全削除→全登録って、ちょっと強引すぎるような。
件数が増えたらレスポンスにかなり影響しそうな気がするしさ。表結合
しててUpdateメソッドが使えないから、こういう形にしたの?
0803795
2006/07/24(月) 14:34:22すいません、まだ.netの事をよく把握していないんでいまいち理解していないんですが、
「元のDBと整合性を保った状態にしておいたら」というのはDataGridとDBを直接リンクさせ、
DataGridで入力された内容が即時にDBに反映させる事が出来るという事でしょうか?
空白の行を残している理由ですが、
今作っているのがユーザのマスタメンテ機能なんです。
キー値をユーザIDにしているんですが、
そのユーザIDも変更可能にしたいのです。
そこで、DBから値を取得したときのユーザIDをそれぞれの行に隠して持っており、
もし誤ってログインユーザのデータを削除してしまった時、
行が削除されているともう二度とそのデータを入力しなおす事ができなくなってしまいます。
ですので、空白行を残しておき、
誤ってデータを削除してしまった時でも
もう一度同じセルに入力しなおす事が出来るようにしたかったからです。
全削除→全登録のことですが、
特に表結合は行っていません。
ですので、ちょっとUpdateメソッドというのが良くわからないのですが、
もし他にいい方法があるのであればそちらを使用したいと思います。
ただ、一つ気になっていることがあるんですが、
DBとDataGridの連動をさせることが出来ると仮定した場合ですが、
現在DataSourceには単純にDBから取得したDataTableを入れているわけではなく、
あるカラムのデータが0ならFalse、1ならTrueというように変換し、
別のDataTableに入れなおしてからDataSourceにセットしているのですが、
これでもDBとDataGridの連動は可能なのでしょうか?
0804デフォルトの名無しさん
2006/07/24(月) 15:06:030805デフォルトの名無しさん
2006/07/24(月) 15:08:48システムメニューのような灰のやや立体っぽい表示にしたいんですが
どうすればいいのでしょうか?
0806デフォルトの名無しさん
2006/07/24(月) 15:15:14そういう状態なら、.net関連のDB解説本を一冊読んでみることをお薦め
する。いまの作り方じゃ、遅かれ早かれ破綻しそうだ。作り込んでから
そうなるよりもずっとマシかと。
0807795
2006/07/24(月) 15:49:01はい、一度読んでみます
>>806
そうですね。
ちゃんと勉強して基礎を固めたいと思います。
しかし、今回は時間もなくDBの更新をするところが少ないため、
今回に限り今の方法で行きたいと思います。
どうもありがとうございました。
0808795
2006/07/24(月) 15:51:20そうですね、一度読んでみます。
>>806
そうですね。
ちゃんと勉強して基礎を固めたいと思います。
しかし、今回は時間もなくDBの更新をするところが少ないため、
今回に限り今の方法で行きたいと思います。
どうもありがとうございました。
0809795
2006/07/24(月) 15:54:400810デフォルトの名無しさん
2006/07/24(月) 22:24:49「Name」をどこかの構造体か何かで一元管理しようと思っています
しかし、フォームデザイナではコントロールを追加するときに「Name」に定数しか入れられないみたいです
フォームデザイナは使わずに全部こつこつコードを書かなきゃいけないってことになるんでしょうか?
0811デフォルトの名無しさん
2006/07/24(月) 22:27:31もう初心者以前の奴は大人しく入門書ぐらい読めよまずは。
0812810
2006/07/24(月) 22:30:50∨)
((
(;´Д`) オネガイシマス
( 八)
〉 〉
ヾ
(´Д`;)、 コノトオリデス
ノノZ乙
0813デフォルトの名無しさん
2006/07/24(月) 22:51:15そもそも名前で管理なんてやめとけ バグの元だ
特に VB 使いは大好きなようだが
0814デフォルトの名無しさん
2006/07/24(月) 23:53:48dim a() as byte = {1,2,3}
dim b() as byte = {1,3,3}
やはり、For〜 で一個づつ見ていくしかない?
if a = b then
ってやったら、Is を使え、とエラーになりました。
0815デフォルトの名無しさん
2006/07/24(月) 23:56:410816790=794
2006/07/25(火) 00:12:04>>DLL
お目にかかったことは何度か
つか
人様がつくったやつをWEB上から無断でいただいていくつか使ってます
モノの正体は良く分かってません(だ〜から〜AccessVBAやったことがあるだけですって。VB6も知りません)
ただ、「どこからでも呼び出せる〜」については、もしかしたらそういうものの力を借りればできるのかな、
ぐらいのことは漠然と考えてはいました
>>797
>>.NETの世界に来たんなら
この自覚は完全に欠落してました
チラ見で、AccessVBAと文法似てるからいけるかも、ぐらいの感じでした
いま職場で使ってるAccessのDBアプリ(フォーム数約80, プログラム部分のサイズは最適化状態で3MB)
こいつをVB.NETで作り替えることが出来たら嬉しいなと
理由はメチャメチャ安いから
使用PCの台数に関わらずVB.NET分だけの1万数千円で済むから
こころざし低くてごめんなさい
ちょっと腰据えて勉強します
>>フォーム6個程度でそこまで重くなるか?
できあがったEXEファイルのサイズは300KB
celeron1100MHz, 384MBのマシンで起動に10秒ちょっと
プロジェクトファイルのほうは30秒近くかかります
(全部バラバラにしようとは思いませんけど、80個は無理ですよね)
0817デフォルトの名無しさん
2006/07/25(火) 00:47:27そういう考えでも俺はいいと思う
文法が似ていて.NETの敷居が低いのは確かだから
http://www.amazon.co.jp/gp/product/4798005088/
↑この手の本を1冊読めば結構いけると思う
がんがって
0818デフォルトの名無しさん
2006/07/25(火) 00:59:54初心者が基本を勉強するような本と違うよそれ。
VBの知識があるなら@ITの川俣の連載がいいと思うよ。
まあ著者は2chでは嘲笑の対象になっていて、確かにちょっとアレな人物っぽいけど
内容はまともで分かりやすいよ。
0819デフォルトの名無しさん
2006/07/25(火) 01:04:18しかし、いま参考書買うにしても2005対応版って全然出てないよう
な気がする。オンライン記事でぽつぽつ取り上げられてるくらい?
0820デフォルトの名無しさん
2006/07/25(火) 01:22:17VBAを出来てたんなら
.NET FRAMEWORKとオブジェクト指向が分かれば
VB.NETを使えるはず
それにその人が知りたいのはADO.NETだとかDATAGRIDだろうし
0821816
2006/07/25(火) 02:08:22@IT、今ちょこっと見てきました
記事自体は面白く読めました
いや、まだ最初のほうしか読んでないんで、プログラミング云々とは別の
VBがたどってきた歴史とか、そっちの話
>>知りたいのはADO.NETだとかDATAGRID
DBに接続してあれこれやる方法はtips集みたいのを参考にしながらまあ何とか
なりそうかなと
DATAGRIDについてはまだ謎の部分も結構あるけどきっとそのうちなんとかなるんだろうなと
分かんないのは、その全体像つか、いや別にAccessだって分かって使ってたわけ
じゃないけど、Accessでいうところの作業場、1個のmbdファイルが、こっちで
いうところの1個のプロジェクトみたいに考えてたら、あっという間に重くなって
身動きがとれなくなっちゃった
>>.NET FRAMEWORKとオブジェクト指向が分かれば
全然分かってません
オブジェクト指向 ≒ 使い回し
ぐらいの感じ
だからfunction や subが使い回せないことでヤケになったりとか
.NET FRAMEWORKってのもまったく分かってません
先に出てきたDLLファイルの巨大版かな、ぐらいの捉え方
(ぜってー違いますよね)
ちょっとの間、小手先技だけで作る作業休んで、この言語自体のこと勉強します
0822デフォルトの名無しさん
2006/07/25(火) 08:07:15やり方キボンヌ
もしくは0列目に新規の列を追加する方法でもいいっす。
DataGridView1.Columns.Add()
では最終列にできてしまう・・・
0823デフォルトの名無しさん
2006/07/25(火) 08:11:160824デフォルトの名無しさん
2006/07/25(火) 09:11:10おぉ、、もうちょっとヒントだけでも・・・
0825デフォルトの名無しさん
2006/07/25(火) 11:55:490826デフォルトの名無しさん
2006/07/25(火) 12:10:040827デフォルトの名無しさん
2006/07/25(火) 16:30:26ものがあったら、どちらが使われている事の方が多いですか?
0828822
2006/07/25(火) 18:23:590829デフォルトの名無しさん
2006/07/25(火) 18:31:49その答えはわからないけど
今後のWindowsプログラミングはランタイムよりBCL推奨。
どちらにしても今後は、.NETFramework上で動くものに統一されていくほうが望ましいわけで、
COMとかOCXもそうだけど、言語依存のあるものはなるべく使わないほうがいい。
っと思ってる。
0830デフォルトの名無しさん
2006/07/25(火) 18:41:11Insert が目に入らんのか……
0831805
2006/07/25(火) 20:49:06Office風?なのがなんか嫌なのでRenderModeを変えても今一よくわからなくて
色々検索してみたのですがよくわからないんで教えていただきたいです。お願いいたします。
0832デフォルトの名無しさん
2006/07/25(火) 20:52:550833831
2006/07/25(火) 21:11:58ありがとうございます
MenuStripで外観をかえられると思ってたのでそういうことろまで目がいきませんでした
プログラミング自体をはじめたばかりなので戸惑いましたが
何とか表示を変えることが出来ました
0834デフォルトの名無しさん
2006/07/25(火) 21:54:56子フォームの位置指定がずれてしまいます。
クライアント領域のスクロール情報の取得は出来ないものでしょうか?
0835デフォルトの名無しさん
2006/07/25(火) 23:14:34パネルを作ってその中にマップ画像を表示して
横にスクロールバーを作ってスクロールさせようと
考えているのですが
50×50のピクチャーボックスを作るところから
躓いています(;^ω^)
Dim pic(50, 50) As PictureBox
まではいいんですが
パネルの中にpicを配置したい場合はどうしたら
いいですか?
0836834
2006/07/25(火) 23:20:43.Top = 0
.Left = 0
.BackColor = .Parent.BackColor
.FormBorderStyle = Windows.Forms.FormBorderStyle.None
と、MDI親クライアントの背景色と同じ色のダミーフォームを置いて、
その .top .left でスクロール情報を取得と自己解決しますた。
0837835
2006/07/25(火) 23:24:24パネルのsize以上に配置はできないのですな
それよりもVScrollBar1でパネル内の画像のスクロールをさせたいのですが
バーは外に配置すべきでしょうか?
それとも中に配置するほうがいいでしょうか?
0838デフォルトの名無しさん
2006/07/25(火) 23:25:27パネルの Controls に Add すればいい。
// PictureBox は結構重いから、PictureBox である必然性がないのなら使わない方が良いぞ。
// Label とかでも BackgroundImage を使えば画像は表示できる。
0839デフォルトの名無しさん
2006/07/25(火) 23:26:26Panel 使ってんだったら AutoScroll 使えばいいんじゃね? 結構癖があるけどな。
0840デフォルトの名無しさん
2006/07/25(火) 23:29:09っていうか、始めたばっかりの人がビジュアルなもの作りたがる気持ちは
分からんでもないけど、はっきりいって無謀。
そういうグラフィカルなものってのは多分思ってるより全然難しいよ。
ちなみに、パネルに限らずそんなコントロールを50x50も配置して
セルを表現するなんて実装方法は論外だよ。
0841デフォルトの名無しさん
2006/07/25(火) 23:29:35VC MFC ダイアログベースアプリケーションで
IDC_LIST1 m_list
のリストコントロールの中にいくつかのCString文字例が入っていて
その中に AAA という項目が存在するか調べるにはどうすればいいでしょうか。
これじゃダメみたいですね。
if( -1> m_list.FindItem("AAA",-1))
{
MessageBox("","",MB_OK);
return;
}
0842841
2006/07/25(火) 23:32:050843835
2006/07/25(火) 23:42:11VBはほとんど初心者ですが
javaとかなら一応できます(´・ω・`)
気付いたのですが、
例えば画像データの配列10個作って
整数の配列の中に画像の添え字として
数字を格納しておいて
for文使って
順々に画像を表示するみたいな方法は使えないのですか?
0844835
2006/07/25(火) 23:43:21ピクチャーボックスじゃなくても
ラベルなどで画像を表示できるんですか(`・ω・´)
0845835
2006/07/25(火) 23:57:560846デフォルトの名無しさん
2006/07/26(水) 00:02:350847デフォルトの名無しさん
2006/07/26(水) 00:09:26Imageクラスに画像データを格納しておく方法はありませんか?
初めに画像のデータを一気に取得しておきたいのですが
0848デフォルトの名無しさん
2006/07/26(水) 01:09:46そのファイルの属性
などを取りたいと思った
以前、vbsで似たようなことをやったなと思い出し
コードをちょっとだけ書き換えて貼ってみた
望んだ通りの結果が得られてしまった
こんなんでいいんですか?
ホントはもっとちゃんとした関数とかあるんじゃないですか?
0849デフォルトの名無しさん
2006/07/26(水) 08:18:04だからここは『ムー』の投書欄じゃないんだが・・・。
俺様のことは細かい点まで言わずともみんな理解してくれるはずだ、
って前提で文章かかれてもな。
0850デフォルトの名無しさん
2006/07/26(水) 08:58:55やっとわかったありがとう
0851デフォルトの名無しさん
2006/07/26(水) 09:18:42「俺ってすごくね?」という青臭いアッピールなんだよ、きっと。
0852デフォルトの名無しさん
2006/07/26(水) 12:28:21Image使ってGraphics.DrawImageで全部自前描画
0853デフォルトの名無しさん
2006/07/26(水) 13:12:480854デフォルトの名無しさん
2006/07/26(水) 13:27:280855デフォルトの名無しさん
2006/07/26(水) 13:37:05基本的には何もかわらない。
0856デフォルトの名無しさん
2006/07/26(水) 14:04:500857デフォルトの名無しさん
2006/07/26(水) 14:07:540858デフォルトの名無しさん
2006/07/26(水) 14:56:32ToolStripRadioButton的なものはないですよねぇ?
ボタンのチェック状態を全部しらべて1個だけ押されてる状態に
するように自分でやらないとダメですか?
0859デフォルトの名無しさん
2006/07/26(水) 16:30:130860デフォルトの名無しさん
2006/07/26(水) 17:47:560861デフォルトの名無しさん
2006/07/26(水) 18:03:43なに!俺は毎日うんこをずっと見続けて悩んでいたのか!
0862デフォルトの名無しさん
2006/07/26(水) 18:36:230863デフォルトの名無しさん
2006/07/26(水) 18:41:40.netだとどっちも変わらないか
0864デフォルトの名無しさん
2006/07/26(水) 22:37:540865デフォルトの名無しさん
2006/07/26(水) 22:54:020866デフォルトの名無しさん
2006/07/26(水) 22:57:460867デフォルトの名無しさん
2006/07/27(木) 06:43:17成果物のことか
0868デフォルトの名無しさん
2006/07/27(木) 14:03:04成果物は作る人で重くも軽くもなる。
開発環境が重いか軽いかはマシンパワーにも依存する。
(テキストエディタとコマンドラインでも開発は可能)
少なくともVBが糞重いと感じるならC#もJ#も糞重いことになる。
君の気持ちは良くわかるが、
格ゲで負けたらボタンのせいにして、
ネトゲで下手糞だと回線のせいにするんだろ?
文句が多い奴は例外なく技術がない。
使えないなら使うな。
0869デフォルトの名無しさん
2006/07/27(木) 14:40:08ここで良いでしょうか?
1レコードを複数行で表示したいのですが
色々調べてみましたがBOCなどの外部コントロールでしかできないのでしょうか?
参考になるURLなどあれば教えて下さい。
スレが違う場合は申し訳ありませんが誘導をお願いします
0870デフォルトの名無しさん
2006/07/27(木) 21:31:410871デフォルトの名無しさん
2006/07/27(木) 21:45:47GUIはVBで複雑な命令はCで作ればいいと聞いたことがあるんですがこれはどういう事なのでしょうか
Cでプログラムを作りDLLかなにかにして
それをVBでGUIや簡単な命令を組み合わせて作ったプログラムから読み込ませるということでしょうか?
Cで作った命令をどうやってVBで作ったプログラムで扱う事ができるのか教えてください
よろしくお願いします
0872デフォルトの名無しさん
2006/07/27(木) 22:46:58できるけど、VB2とかVB4の頃のお話ですか?
んで、純粋に.NET上で開発するなら、 どの言語も「記述」の違い程度しか差はないし、GUIもほぼ一緒。
完成品もほぼ同等。
0873デフォルトの名無しさん
2006/07/28(金) 11:44:23VB.NETとかアホですか?ってくらい糞重いし使えない。
これはまともな開発ツールじゃないねえ。
0874デフォルトの名無しさん
2006/07/28(金) 11:48:120875871
2006/07/28(金) 12:20:59どういうふうにできるのでしょうか?
記述したとおりDLLをCで作成してそれを読み込ませる・・・?
それで、VB2005を使ってるんですが現在はVBもCも機能的には変わらないんですか・・
GUIはVBの方が簡単に作れませんか?
CはWinAPIとかも学ばないといけませんよね
VBはドラッグアンドドロップで・・。
0876デフォルトの名無しさん
2006/07/28(金) 13:04:50> それで、VB2005を使ってるんですが現在はVBもCも機能的には変わらないんですか・・
> GUIはVBの方が簡単に作れませんか?
自己解決してると思いますが。
あんまねーじどでれがしーなAPI使わなければいけない場面以外では、Cの必然性はなし。
0877デフォルトの名無しさん
2006/07/28(金) 15:13:53.NET上で開発するなら、
.NET Frameworkが提供するライブラリだけで作成するのが望ましくて、
C#でAPIを呼んだり、VBで、以前のCOMとかOCXを使うような、
言語に依存するライブラリ使用は推奨されない。
そんなにややこしいことしたいなら、.NET上ではなく、VC++かC++builderを使う。
で、VB2〜4ならDLLを作れなかったのでDLLを使いたければC++で作るしかなかっただけで、
VB6なら、ActiveXDLLを自力作成可能。
VB6で作ったActiveXDLLもVC++で作ったActiveXDLLも使い方は一緒
VB2005なら普通のDLLを作成可能。
C#で作ったDLLだろうと、自分で作ったDLLだろうと使い方は一緒。
そもそも他人が作ったものを流用する以外で、多言語を混ぜこねて作る必要はない。
VBでできないものは最初からVBでやらないべき。
解れよ!
0878デフォルトの名無しさん
2006/07/28(金) 15:37:510879デフォルトの名無しさん
2006/07/28(金) 15:40:10ただしソースは丸見え
0880デフォルトの名無しさん
2006/07/28(金) 16:04:44ネットの接続関係はもちろん、リジュームもノードのクリプトも作りこみがほとんどいらんし
VB2005だと、ほとんど苦労することなく簡単に作れるはず。
プログレスバー付きのViewをどうしようかって思うくらいじゃないか?
0881875
2006/07/29(土) 21:00:53現在の仕様ではCでできることは全てVBでまかなえるんですね
だったらVB2005が扱いやすいのでマスターしたいと思います。
0882デフォルトの名無しさん
2006/07/30(日) 17:07:20前からずっと気になってたけど、裸のC、C++、あるいはVC++、そしてC#、それぞれ全部違うからな。
C#のことをCといってるならVBもC#も基本的には変わらない。
C#はむしろCでもC++でもなく、どちらかというとJavaに近い感じかな。
ただしVC++で出来てVBで出来ないことはある。
0883881
2006/07/30(日) 21:57:36Cでやるような複雑な命令がVB2005でもできるのならこの質問は解決です。
0884デフォルトの名無しさん
2006/07/30(日) 22:12:43ポインタ演算に限っていえばVBではできないよ(C#ではできる)
0885デフォルトの名無しさん
2006/07/30(日) 22:15:180886デフォルトの名無しさん
2006/07/30(日) 22:35:08やるとしたら過去の資産を使いつつさらにポインタも使いたい場合ぐらいか
0887デフォルトの名無しさん
2006/07/30(日) 22:42:55多少面倒だけどな
0888デフォルトの名無しさん
2006/07/30(日) 23:07:10一連の質問内容を見て、貴方の知識や技術が相当低いことは良くわかった。
まずは何を作るか決めて、どんな技術が必要か明確にしてくれ。
それがわからないと答えようがない。
それでVBでできるか、VBに向いてるかどうかという質問をしてくれよ。
話はそれからだ。
0890デフォルトの名無しさん
2006/07/31(月) 15:22:51出力できますでしょうか?
MSDNで調べたことろC#のサンプルしかヒットしませんでした。
ご教授願います。
0891デフォルトの名無しさん
2006/07/31(月) 16:16:230892デフォルトの名無しさん
2006/07/31(月) 17:29:52ご教授野郎には教えたくはないが、ヒント > '''
0893デフォルトの名無しさん
2006/07/31(月) 17:47:04サンクス
0894デフォルトの名無しさん
2006/07/31(月) 19:46:55リストビューからリストビューへのアイテムのドラッグ&ドロップで
MultiSelectを有効にして同時に複数アイテムのドラッグを
したいと思っています。
dobon.netのリストボックスのドラッグ&ドロップのサンプルを見ながら
リストビュー用に変更してドラッグ&ドロップ自体はできるように
なったのですが、その後、リストビュー内でアイテムを選択するときの
状態になってしまいます。
ですのでドロップが完了したらリストビューの選択モードを解除したいのですが
どのようにすればよいでしょうか?よろしくお願いいたします。
0895デフォルトの名無しさん
2006/07/31(月) 23:47:220896デフォルトの名無しさん
2006/08/01(火) 02:37:53>その後、リストビュー内でアイテムを選択するときの
>状態になってしまいます。
>ですのでドロップが完了したらリストビューの選択モードを解除したいのですが
正しく詳しく書いてくれないかな?
0897デフォルトの名無しさん
2006/08/01(火) 03:15:48チャットプログラムを作れるならP2Pのプログラムが作れるといえる。
そういう意味ではネットワークゲームも一緒。
大雑把に言うと、
移動パケットを送るのも、会話メッセージを送るのも、キャラ情報送るのもまったく同じ原理。
当然送られてくるのも同じ。
ファイルを送るのも受け取るのも同じ。
当然だけどWeb上のcgiでよくあるチャットは違います。
0898デフォルトの名無しさん
2006/08/01(火) 10:30:29Oracle8i以降に外部テーブルリンクのシノニムを作り、そいつ経由で操作する
0899デフォルトの名無しさん
2006/08/01(火) 11:15:290900デフォルトの名無しさん
2006/08/01(火) 12:59:03別にDataGridはODPと直じゃないだろ?
DataSet経由すればいいんだから問題なし。
DataSetへの突っ込み方はどうとでも。
0901デフォルトの名無しさん
2006/08/01(火) 14:12:05友達はいないのか
0902デフォルトの名無しさん
2006/08/01(火) 18:18:30のサイトのFTPクラスでは日本語ファイル名のファイルが
アップロードできないのですが、どこを修正すればよいか
ご存知の方がおられましたら教えてください。
0903デフォルトの名無しさん
2006/08/01(火) 19:21:04MicorosoftのページによるとMouseUpイベントが発生しないため
と書いてありました。
http://support.microsoft.com/default.aspx?scid=kb;ja;240946
ただ、これはVB6.0の話のようですので
なぜVB.NET(2003)で同じ問題が発生するのかわかりません。
困りました。
0904デフォルトの名無しさん
2006/08/01(火) 19:30:000905デフォルトの名無しさん
2006/08/01(火) 19:47:50Byte型の配列に対して、
ビット単位にて値を取り出すのに良い方法はないでしょうか。
例えばByte配列に対して5ビット目から18ビット分取り出すような形です。
現在はBitArrayに格納してから扱っているのですが、
BitArrayに対するインデックスがByte単位で逆順になっており
使いづらいです。
40ByteのByte配列の場合、BitArrayに格納し、
320ビット分のByte配列を別に設けて
BitArrayから8個づつインデックスを逆順にし、そこから1ビットを
取り出し、320個のByte配列に格納しています。
よろしくお願いいたします。
0906デフォルトの名無しさん
2006/08/01(火) 20:16:540907デフォルトの名無しさん
2006/08/01(火) 20:25:56or
インデックスを入れ替える関数をつくりそれ経由でアクセス
0908デフォルトの名無しさん
2006/08/01(火) 20:29:360909デフォルトの名無しさん
2006/08/01(火) 20:37:19単純にBitArrayなりByte配列なりをラップするだけだと思うんだが。
配列のインデックスを計算するコード書くときに、±1が必要かワカンネ-、
ってタイプの人なのかな?w
0910デフォルトの名無しさん
2006/08/01(火) 21:51:39そのDynaSet→DataSetの方法が分からない
0911デフォルトの名無しさん
2006/08/01(火) 21:58:390912デフォルトの名無しさん
2006/08/01(火) 23:04:340913デフォルトの名無しさん
2006/08/02(水) 08:03:46返答ありがとうございます。
>何を悩む必要があるのか、むしろ理解できんな。
ということはこの方法で良かったのですね。
ビット値を得るのに何か遠回りしているように感じたので
質問しましたが解決して良かったです。
>配列のインデックスを計算...
BitArrayに対するインデックスの計算は
Private Function GetBitIndex(ByVal index As Integer) As Integer
Return ((7 - index Mod 8) + (index \ 8) * 8)
End Function
というふうにしています。
ありがとうございました。
0914デフォルトの名無しさん
2006/08/02(水) 08:27:14その発想は変だよ。
逆になんてなってないもんw
ちゃんとLSBが一番若い値で、MSBが一番大きな値になってるでしょ。
0915878
2006/08/02(水) 09:05:38試しに作ってみたよ
C#だけどな
0916905
2006/08/02(水) 10:07:29説明不足でした。すみません。
BitArrayにおいて、たしかにLSBが若いインデックスで
格納されているのですが、ハフマン復号などを行う際に、
MSBから読み込むため、MSB→LSBに整列し直しているのです。
そこで整列のし直しが遠回りのような気がしたもので質問しました。
肝心なところを説明せずに申し訳ありません。
914さんありがとうございます。
0917デフォルトの名無しさん
2006/08/02(水) 14:36:59知らないくせにレスするなよゴミが
0918デフォルトの名無しさん
2006/08/03(木) 17:32:430919デフォルトの名無しさん
2006/08/03(木) 18:03:550920デフォルトの名無しさん
2006/08/03(木) 18:33:52コンボボックスのアイテムとそれにあれっするあsふぃd
0921デフォルトの名無しさん
2006/08/03(木) 18:35:010922デフォルトの名無しさん
2006/08/03(木) 23:58:110923デフォルトの名無しさん
2006/08/04(金) 10:30:50こんなのまともな開発環境じゃない。
ごみ
0924デフォルトの名無しさん
2006/08/04(金) 12:57:210925デフォルトの名無しさん
2006/08/04(金) 13:41:420926デフォルトの名無しさん
2006/08/04(金) 14:18:09世界経済が破綻するよ
0927デフォルトの名無しさん
2006/08/04(金) 14:22:55とかしてほしい。いろんな意味で平和になるかも。
0928デフォルトの名無しさん
2006/08/04(金) 14:29:32ようするに、糞だけどみんなが使ってるから仕方がなく使ってるって感じなんですね
0929デフォルトの名無しさん
2006/08/04(金) 16:33:16否定はできません><
0930デフォルトの名無しさん
2006/08/04(金) 16:39:250931デフォルトの名無しさん
2006/08/04(金) 17:17:47ボタンクリックでデフォルト非表示にしているカレンダーを表示し
日付選択後に選択した日付がテキストに入るという処理をしています。
カレンダー表示の間、他のコントロール(例えばテキスト等)が使用可能な状態なので
カレンダーからフォーカス(?)がはずれたらカレンダーを非表示に戻したいと思っています。
例:カレンダー表示→フォームにフォーカス→カレンダー非表示
どのタイミングでイベントを取ればいいのかわからないので詳しいかた教えて下さい。
ダメならカレンダー表示時は他のコントロール全てをReadOnlyとかにするしかないんでしょうか
宜しくお願いします。
0932デフォルトの名無しさん
2006/08/04(金) 18:39:15onblur になるのかね。
0933デフォルトの名無しさん
2006/08/04(金) 18:52:120934デフォルトの名無しさん
2006/08/04(金) 19:02:240935デフォルトの名無しさん
2006/08/04(金) 19:38:320936デフォルトの名無しさん
2006/08/04(金) 20:34:590937デフォルトの名無しさん
2006/08/04(金) 21:47:090938デフォルトの名無しさん
2006/08/04(金) 22:19:10= 批 判 で き る ほ ど 、 技 術 が あ る と は 思 え な い 。
たのむから知性を感じられない書込みはやめてくれ。哀れで涙ぐましくなる。
0939デフォルトの名無しさん
2006/08/05(土) 00:58:120940デフォルトの名無しさん
2006/08/05(土) 01:14:150941デフォルトの名無しさん
2006/08/05(土) 02:19:01これに文句言ってたら、Windowsアプリは生涯作れない。
グダグダ言う暇があるなら新しい環境でプログラミングの一つでもしとけ。
有意義だぞ。
0942デフォルトの名無しさん
2006/08/05(土) 10:07:010943デフォルトの名無しさん
2006/08/05(土) 17:51:28MouseMoveイベントが取れないんだけど、あの時って何のイベントが発生してるんでしょう
SelectedIndexChangedだけ?
0944デフォルトの名無しさん
2006/08/06(日) 20:57:070945デフォルトの名無しさん
2006/08/06(日) 21:26:190946デフォルトの名無しさん
2006/08/06(日) 21:35:08ダウンロードするサンプルを作ってください。
よろしくです。
0947デフォルトの名無しさん
2006/08/06(日) 22:02:10WinInet.dllなんて使わなくても、
ここ読め
http://support.microsoft.com/default.aspx?scid=kb;ja;832679
んで、使えるコマンドはこんな感じ
http://www.atmarkit.co.jp/fnetwork/rensai/netpro11/ftp-command.html
とりあえず自力でがんばってわかんなかったらもっかい聞きに来い。
はい次
0948デフォルトの名無しさん
2006/08/06(日) 22:09:37それはバグだれけで使い物になりません。
なのでWinInet.dllのサンプルをくださいな。
0949デフォルトの名無しさん
2006/08/06(日) 22:17:540950デフォルトの名無しさん
2006/08/06(日) 22:20:500951デフォルトの名無しさん
2006/08/06(日) 22:27:150952デフォルトの名無しさん
2006/08/06(日) 22:35:19昔VC++でWinInet.dllを使ってるから最悪それをDLLにして
使おうとは思ってるんですけどね。
できれば無駄にラップするのも嫌ですから。
0953デフォルトの名無しさん
2006/08/06(日) 22:42:270954デフォルトの名無しさん
2006/08/06(日) 22:45:020955デフォルトの名無しさん
2006/08/07(月) 20:19:330956デフォルトの名無しさん
2006/08/08(火) 03:59:44しばらくたったころ、
ttp://www.ailight.jp/blog/myamyu/archive/2004/09/01/2595.aspx
コレを見てVBのほうがすぐれてるとおもいVBに乗り換えてみた。
そして月日は流れ、俺はナチュラルにVBの達人になっていた・・・
今日から私の燃料は、貴方たちの質問です。
0957デフォルトの名無しさん
2006/08/08(火) 05:30:31【VB.NET】VS2005 選ぶならどっち?【C♯】 の358−400くらいにそのサイトの話題が出てた。
http://pc8.2ch.net/test/read.cgi/tech/1106538237/358-
0958デフォルトの名無しさん
2006/08/08(火) 11:28:39スリーサイズを教えてください
0959デフォルトの名無しさん
2006/08/08(火) 13:12:46両方できる俺は勝ち組ですか?
0960デフォルトの名無しさん
2006/08/08(火) 17:38:59普通。
0961デフォルトの名無しさん
2006/08/08(火) 21:05:430962デフォルトの名無しさん
2006/08/09(水) 17:18:22注意点とかありましたら教えてください、お前ら。
0963デフォルトの名無しさん
2006/08/09(水) 17:33:54全然違う部分多し
くれぐれも気をつけろ 深みにはまるぞ
ついでに設計やり直してスクラッチから書いた方が早いかも
まあがんがれ
0964デフォルトの名無しさん
2006/08/09(水) 19:02:276.0から2003にコンバートするよりは、わりと楽じゃないかな。
コントロール配列やDataGridの使いにくさに辟易したよ。
0965デフォルトの名無しさん
2006/08/09(水) 19:54:430966デフォルトの名無しさん
2006/08/09(水) 23:10:30二重引用符「"」をInStr関数で検索したいのですが、「"""」と入力しても認識してくれません
F1押したり検索したりしましたが解決法は分かりませんでした
どうしたらいいでしょうか
0967966
2006/08/09(水) 23:21:23ヘルプにありました
↓
Visual Basic は二重引用符が文字列リテラルに 2 つ続けて出現した場合に、文字列内の 1 つの二重引用符として解釈します。
「""""」で解決しました
0968デフォルトの名無しさん
2006/08/10(木) 04:37:200969デフォルトの名無しさん
2006/08/10(木) 15:38:47Try
func()
Catch
End Try
上記のfunc内で例外が発生した場合にfunc内でCatchしても
上のfunc呼び元のCatchに入ってしまうのですが
これ呼び元のCatchに行かなくする方法はありますか?
0970デフォルトの名無しさん
2006/08/10(木) 16:32:560971デフォルトの名無しさん
2006/08/10(木) 16:44:36Catchにいって正常なのでは?
というか、行かせたくないのに(func内で処理済だから?)Tryを使用する意図は何?
0972デフォルトの名無しさん
2006/08/10(木) 16:45:29>これ呼び元のCatchに行かなくする方法はありますか?
行かなくなるのが普通の動作。再throwしてるとか何か間違いを犯している。
わからないならfuncの中身をさらすべし。
0973デフォルトの名無しさん
2006/08/10(木) 19:31:20というか、通常ではfuncの中で例外が発生してCatchすると、呼び元のCatchには行かないのでしょうか?
0974デフォルトの名無しさん
2006/08/10(木) 19:38:20逆にcatchしなかったらエラーが出てその場で終了
0975デフォルトの名無しさん
2006/08/10(木) 19:40:100976デフォルトの名無しさん
2006/08/10(木) 19:57:36意図的にthrowしないかぎり外にはいかない
0977デフォルトの名無しさん
2006/08/10(木) 20:07:57方法があれば教えてください。
1) フォーム起動前にある確認を行ない OK の場合のみフォームを表示したい
NG の場合はフォームを表示したくない
(エントリポイントを作成して実装)
2) アプリケーションの2重起動チェック
単一インスタンスのアプリケーションを作成する、にしたい
エントリポイントを変更する為に、アプリケーション フレームワークを有効にするにすると
単一インスタンスのアプリケーションを作成するにチェックが入れられません。
上記を両立する方法があれば教えてください。
0978デフォルトの名無しさん
2006/08/10(木) 20:14:470979デフォルトの名無しさん
2006/08/10(木) 20:39:04funcを呼んでる所でCatchしてればダイアログはでないよ
0980デフォルトの名無しさん
2006/08/10(木) 23:26:01親・子画面があるとして、
親画面に子画面があたかもくっついているかのように
親画面を動かすと子画面も動かすには、どうしたらいいでしょうか?
0981七資産
2006/08/10(木) 23:45:470982980
2006/08/10(木) 23:52:22MDIがヒントですか?
ググってみます
0983980
2006/08/10(木) 23:55:25ありがとうございます。
何とかなりそうです。
てっきり、親座標位置を求めて、
いろいろ、やらないといけないと思ってました。
0984デフォルトの名無しさん
2006/08/11(金) 02:33:49どのようにやればよいでしょうか?
googleで検索したのですが、なかなか見つかりません(逆方向は良く見かけます;)
0985デフォルトの名無しさん
2006/08/11(金) 02:44:190986デフォルトの名無しさん
2006/08/11(金) 02:51:21例外の種類が違うんじゃないのか?
0987デフォルトの名無しさん
2006/08/11(金) 02:56:01そう思ってやってはみているのですが、なかなかうまくいかないのです;
そもそもSQL側の接続でAccessのテーブルを呼んでINSERTすればいいのか、
Access側の接続でSQLのテーブルを指定してINSERTすればいいのかがわかりません。
宜しければサンプルなどの場所(検索のヒント)等いただければ幸いです・・・。
0988デフォルトの名無しさん
2006/08/11(金) 03:21:40しかし同じ接続では無理だろ。
きっちり同じスキーマならDataSet位は共通でいけるかもしらんけど。
AccessはAccess(もしくはODBC)のアダプタで読み込んでから
SQLのアダプタで書き込めよ。
てか、SQLのマネージャかなにかでAccessのテーブル読み込めるんじゃないのか?
テーブル指定して右クリック>全タスクから選択>データのインポート
とか調べるほうが早そうだ。
0989デフォルトの名無しさん
2006/08/11(金) 03:36:38レス有難う御座います。
理由があって手動でのインポートはできません。
どうしてもプログラム上でやる必要がありまして;
>AccessはAccess(もしくはODBC)のアダプタで読み込んでから
>SQLのアダプタで書き込めよ。
アダプタ1にAccess、アダプタ2にSQLのテーブルを読み込むということでしょうか?
アダプタ2へアダプタ1のデータ内容を丸々書き込むにはどうしたらよいでしょうか。
恥ずかしながら、Datasetを使っての一件ずつのデータ更新しかしたことなくて;
0990デフォルトの名無しさん
2006/08/11(金) 03:37:18http://www.microsoft.com/japan/msdn/vbasic/migration/tips/Conversion/
VBプログラムで処理することに拘るなら接続切り替えて詰め替えるだろうな
0991デフォルトの名無しさん
2006/08/11(金) 03:55:08http://msdn2.microsoft.com/ja-JP/library/33y2221y.aspx
すまんが異種のアダプタ間でお手軽に丸丸コピーはやったことは無いのでわからん。
スキーマが同じなら(もしくは一旦XML経由か何かで)AccessのDataSet渡せば
いけそうな気もするが、それで無くとも1行ずつ持っていけばいいんじゃないのか?
0992デフォルトの名無しさん
2006/08/11(金) 04:14:50有難う御座います。
データ総数が1万件以上になるので、1行ずつはちょっと厳しいと思います。
とりあえず、Datasetを渡すようにこれからちょっと組んでみます。
0993992
2006/08/11(金) 05:33:40エラーは出ないのですが、処理後にSQL側のテーブルを見ても、レコードが追加されていません。
(接続処理など割愛)
AccessAdp.Fill(AccessDs, "Table")
SqlAdp.Fill(SqlDs, "Table")
SqlDs = AccessDs.Copy()
SqlAdp.Update(SqlDs, "Table")
やはりこれでは無理なのでしょうか。
それとも私の作り方が的外れですか?
0994デフォルトの名無しさん
2006/08/11(金) 05:54:12データセットの完全なコピーを作ってしまうと、読み込んで何も変更を加えていない状態なので
Adapter.Updateでは全件処理がスキップされる。
コピー後に行ごとのステータスをAdd状態に変更する必要がある。
OleDbCommand/DataReaderで1件ずつ読み込みながらSqlCommandでinsertを繰り返してゆく方法で十分。
DataAdapterを見ればわかるが結局のところ更新処理は1件ずつしかやってないから処理効率は変わらないと思うぞ。
今はメモリを腐るほど積んでるとはいえ上限がはっきりしない大量データをオンメモリー処理するのは抵抗あるな。
0995デフォルトの名無しさん
2006/08/11(金) 07:37:25つーかそれvbでやらんといかんの?
accessでやった方がよほど簡単じゃね?
SQLserver←→Oracleなんてのも簡単だし
(ま遅いけどw)
0996デフォルトの名無しさん
2006/08/11(金) 08:04:51関数の呼び出し記録を全てログファイルに記録したいのですが、
そういった事を行なう便利な仕組みはありますか?
やはり関数の呼び出し前に、ログファイルに書き出す関数を呼び出すよう
自分で書くしか方法はないでしょうか?
0997デフォルトの名無しさん
2006/08/11(金) 08:19:46あと関数の呼び出し前に書くよりは呼び出される関数の
トップにログ出力処理を書くのが一般的。
0998デフォルトの名無しさん
2006/08/11(金) 09:48:21「変更があります。更新しないで終了しますか?」
というメッセージを出したいのですが
全コントロールのchangedイベントで変更されたことを
逐次保存しておかなければこのような処理はできないのでしょうか?
0999デフォルトの名無しさん
2006/08/11(金) 10:13:35Public Class Form1
Dim objNetworkStream As System.Net.Sockets.NetworkStream
Dim rawSocket As System.Net.Sockets.Socket
Sub test()
Dim ipHostInfo As IPHostEntry = Dns.Resolve("localhost")
Dim ipAddress As IPAddress = ipHostInfo.AddressList(0)
Dim ipe As New IPEndPoint("ipAddress", 0)
Dim rawSocket As System.Net.Sockets.Socket
rawSocket = New System.Net.Sockets.Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.IP)
rawSocket.Blocking = False
rawSocket.Bind(ipe)
と、バインドまではなんとかなっているとは思うのですが、ここから先がさっぱりです。
サンプルコードかなにか、ご存じの方がいたら教えていただけないでしょうか、お願いします。
MSDNとかを見て回ったのですが、わかりませんでした。
特定のポートで通信している、サーバーとクライアント間の通信ログを取ることが目的です。
1000デフォルトの名無しさん
2006/08/11(金) 10:22:0110011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。