Scheme の .NET 対応マダー?
4 :
デフォルトの名無しさん:04/11/12 18:23:53
4様参上(゚Д゚≡゚д゚)
えーと、2005βの話題はココで振っていいのかな?
今、Managed DirectX9 October 2004が動くか試してます。
んで、グラボのCapsをコンソールに吐き出そうと↓を打ち込んだ。
Manager.GetDeviceCaps(0, DeviceType.HardWare).ToString().Replace("\n", "\r\n");
どうやら、コレが落ちる原因みたいなのだけれど、例外も吐き出さんと
終了してしまう。Capsの個々のプロパティはフツーに文字列に変換できるので
2005βのバグだと思うんだが?
2005β入れてる奴は上のコードが動くか試してみてくれ。
6rz
7 :
デフォルトの名無しさん:04/11/13 14:18:47
複数の言語を切り替えられるようにするにはどうすればよいのですか?
どうも.NETに国際化対応の機能があるみたいですが
>>7 この辺か?
p://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/Vbcon/html/vboriInternationalization.asp
いきなり落ちそうだな
====
不定期にイベントを発行する Component を作ってます。
その Component では、イベント発生したら大抵 Control を弄るので
1:Component 側で Invoke 系を行ってしまおうと考えた
2:Control.Invoke を行うには Control を取得する必要がある為、Owner プロパティを付けた
結果、デザイナで貼り付けた後 Owner プロパティを設定する手間が新たに生まれたのですが、
可能な限り Component 貼り付けるだけで完了する方向性で 1 か 2 をもうちょっと簡略化できませんか?
10 :
デフォルトの名無しさん:04/11/13 17:00:34
リファレンス打ち出してくれるフリーツール、何か良いの無いですか?
「Webページのビルドコメント」は private なメンバまで出力されるので、かな〜り使い勝手がわるいんス orz
12 :
デフォルトの名無しさん:04/11/16 08:04:15
あげとく
前スレの992のアフォです。
スレちがいなのに、皆様ありがとうございました。
dataGridから、セレクタを選択してある行を消すのに
dataset.Tables["table"].Rows[Position].Delete();
ってやるのと
this.BindingContext[dataset,"table"].RemoveAt(Position);
てのと2種類あるようですが、両方とも同じように行削除できます。
使い分ける必要ってあるんですか?それとも好きなほうを使えってやつですか?
15 :
デフォルトの名無しさん:04/11/16 15:34:43
ビジュアルスタイルではまっています。
manifest でビジュアルスタイルにしています。
画面には textbox が複数あり、これらの textbox は
private void EnterControl (object sender, System.EventArgs e)
{((TextBox)sender).BackColor = Color.Red;}
private void LeaveControl(object sender, System.EventArgs e)
{((TextBox)sender).BackColor = Color.White;}
のように、フォーカスを受け取ると背景色を赤にして、フォーカスを失なうと
白にしています。
この時、フォーカスを失なったコントロールの背景色が白にはなるのですが
赤の枠線が残ってしまいます。
どのような時に枠が残ってしまうのかわかりませんが、枠が残ったコントロール
にマウスカーソルを持っていくとその枠は消えます。
ただ、枠が残ってしまう状態のコントロールがフォーカスを持っている時は
白の枠が描かれてしまいます。でフォーカスを失なうとその白の枠が赤になる
という感じです。
ちょっと説明しづらいのですがこのような現象に関して何か情報があれば
教えて頂きたいです。おねがいします。
J#のバグ潰しマダー?
17 :
デフォルトの名無しさん:04/11/16 22:03:43
質問です。
Panel とかで AutoScroll 有効にしたとき、スクロールバーのつまみいじってるときに
クライアント領域をスクロールとか描画とかしたいんですけどできますか?
スクロールのイベント無いみたいなのですが・・・
あと、Win32APIでのScrollWindow()みたいなメソッドってありますか
以上、よろしくおねがいします。
とかとかとか
>>17 継承クラスをつくってオーバーライドしたWndProcでWM_HSCROLLとWM_VSCROLLを捕まえてイベントを発生させる、かな。
コードからスクロールさせる場合はAutoScrollPositionプロパティを操作すればいい。
ただしAutoScrollPositionを操作してもWM_(V|H)SCROLLは発生しない。
質問ですCとC++を一応覚えたので
次にC#をやろうとしていたら
友人にC#は糞だから素晴らしいjavaをやったほうがいいと
言われたのですが本当ですか
22 :
デフォルトの名無しさん:04/11/17 11:14:11
javaを素晴らしいという人がC#を糞という理由は何だろうね。
決まりきってる、アンチMSなだけ。
たいていは後発の言語の方が優れてるよ
>21
C#=(Java+Delphi)/2+C++
よって
C#>>>Java
Scheme の地位は揺るがんよ
>29
クラシック音楽は素晴らしい音楽ですが
聞く人は少数派です。
まぁ、将来どうなるかは分からんが、C#やっておいて損は無いけどね。
Webアプリは、JavaかASP.NET、偶にPHPやPerlか?
Windowsアプリ作るなら、C/C++か.NETだしな。
なかなか仕事してても、Webアプリ”だけ”、Windowアプリ”だけ”やってる奴なんて少ないしな。
また、Webアプリ”だけ”やってたとしても、必ずしもJavaとも限らない。
C/C++は覚えたというんだから、次はJavaとC#(またはVB.NET)やっておけば、
とりあえず、此処最近の技術は網羅してるんだから問題無いだろう。
両方やったほうが間違いなく楽しめる
自分の世界を広げろ
>24
タダ・・・なのと
色々オープンソースのフレームワークがあるから
それで実験できるとか・・・
C#重すぎる!けど、
javaでUI作るのよりは少しマシ?
C#おもいか?
38 :
マリー:04/11/17 22:36:39
常にVMを起動しておけばいいじゃない
>>36 >javaでUI作るのよりは少しマシ?
かなりマシかも・・・でも 98系だと起動が遅いね。
なんにしても言語の問題じゃないと思うんだが。
拡張子がEXEだから使いやすい以外はJavaと一緒だよ、
重さも使いやすさもライブラリも。
神経質になれば微妙に些細な優劣があるけど、
Windows向けにちょっと調整しただけのデッドコピーだね。
そもそもSunとMSの係争の果ての産物だし。
>41
そんなことはないだろ。
RADの使いやすさとか言語仕様とかC#が勝ってる部分は多い。
Javaにももちろん有利な点はあるが、Windowsでプログラミングする限りは
C#>>>Javaだよ。
43 :
デフォルトの名無しさん:04/11/18 10:53:22
総合的な優劣を決める必然性ないだろ。
状況に合ってる方を使え。
RUBY!!!!!!!!!!!!!!!!!!!!!!
ひとつの言語しか使えない低脳以外はどっちが優れていようが問題ないだろ
確かにC#かJavaやってて、C/C++を知らないというのは低脳だな。
>46
わざわざメモリ解放を考えるのは無駄。
実体とポインタの使い分けを考えるのは無駄。
MFCを覚えるのは無駄。
C#とJavaで十分。
こいつは凄い奴だな
interfaceもない言語を使うのは無駄。
ヘッダファイルとソースファイルに同じことを二度書くのは無駄。
WinAPIを直接叩くのは無駄。
C/ C++のような低級言語を使う時代は終わった。
時代はC#/Javaの高級言語だ。
そんな議論が無駄。
>>49 同意。
C#/Java なんか出る前から、心ある人は VB しか使ってませんでした(w
C++の唯一の牙城であったテンプレートも
C#へのGenericsの導入で優位性が崩れつつある。
もうC++は終わった。
そうだねーアセンブラとかも無駄だもんねー(棒読み)
低脳必死だな
最後に一言
「無駄なことは無駄」
そうですね
話もとに戻しますが、みなさんどんだけ Dispose 入れてます?
というのも、漏れいままではロジカルに必要なところでは Dispose してたんだけど、
頻繁に更新されるデータを保持するのに大き目の配列の作成・消滅を繰り返してると
意図的にGC.Collect() しないとメモリ足らんとか例外が出るようになって・・・
こうなってくると、リソースの制限にひっかりそうなオブジェクトや、
すぐにリソース開放したい場合以外はファイナライザに任せてもいいかな、という気分に。
using の嵐も面倒だし・・・
imageオブジェクトとストリーム関係ぐらいかなあ意図的に
Disposeするのって。
>>57 「こうなってくると」は、「どうせ適当な間隔で GC 動かす必要があるなら」てな意味です。
.NET 2.0 ではこの辺修正されたんでしたっけ・・
60 :
デフォルトの名無しさん:04/11/18 22:27:53
Udpでの送受信ができません。どこがおかしいんでしょうか。
送信側
byte[] sendBytes = Encoding.ASCII.GetBytes("Hello World");
UdpClient client = new UdpClient(1023);
IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"),2323);
client.Connect(endPoint);
client.Send(sendBytes,sendBytes.Length);
client.Close();
受信側
public void ReceiveData()
{
UdpClient server = new UdpClient(8080);
while(true)
{
IPEndPoint endPoint = null;
byte[] receiveBytes = server.Receive(ref endPoint);
string receiveData = Encoding.ASCII.GetString(receiveBytes);
this.textBox1.Text = receiveData;
}
}
受信側の開始スレッド
Thread thread = new Thread(new ThreadStart(ReceiveData));
thread.Start();
thread.Abort();
>>60 SendTo で 8080 宛に送ってください。
>>57 メモリー足らないのホントに厳しいよ、なんとかならんかな。
もう2G使い切っちゃって増設できねぇぇぇぇ
ぬぉおおおおおおどうしてくれようかぁぁぁ
と絶叫中
>>60 thread.Abort(); // <- これ要りません。っていうかあるとダメ。
>>52 http://www.mamezou.com/tec/equip001.htm これを読め。C++のテンプレートとジェネリクスは大分違うぞ。
大きな違いは
-同一変換と異種変換
-閉じた多態と閉じていない多態
って感じか。
C#のジェネリクスはC++のテンプレートに比べて強力な感じはしない。
以下、C++のテンプレートにできてジェネリクスにできないこと
-型生成子
-タグディスパッチ
-テンプレートの特殊化
-テンプレートのインライン展開によるメタプログラミング
などなど。C++のboostのlamda(は次のバージョンでは無名の
デリゲートがサポートされるらしいからできるかも)やFC++みたいな
関数型プログラミング系のテクニックはつらいだろ。
>>61>>63 どうもありがとうございます。これで動きました。
送信
byte[] sendBytes = Encoding.ASCII.GetBytes("Hello World");
UdpClient client = new UdpClient(1023);
client.Connect(IPAddress.Parse("127.0.0.1"),8080);
client.Send(sendBytes,sendBytes.Length);
client.Close();
受信
public void ReceiveData()
{
UdpClient server = new UdpClient(8080);
while(true)
{
IPEndPoint endPoint = new IPEndPoint(IPAddress.Any,0);
byte[] receiveBytes = server.Receive(ref endPoint);
string receiveData = Encoding.ASCII.GetString(receiveBytes);
this.textBox1.Text = receiveData;
}
}
受信スレッド
Thread thread = new Thread(new ThreadStart(ReceiveData));
thread.Start();
66 :
エデン:04/11/18 23:16:06
Form1.cs(312): 型または名前空間名 'Socket' が見つかりませんでした。
ディレクティブを使うかアセンブリ参照を使ってください。
これが何を指しているのかわからないのですが・・・。
こういう場合どっかその近くを書き間違えているということでしょうか。
ディレクティブやアセンブリを調べると何かファイルが足りないというような意味みたいだし
教えてエロい人
>>66 たぶん
using System.Net.Sockets;
を追加。
>>64 52じゃないけど、C#でもそんなものなのですか?
VMからして対応していると聞いていてちょっと期待していたのですけど。
69 :
デフォルトの名無しさん:04/11/19 01:50:16
話はちょっと変わるのですが、WSDLサービスを記述したデータをwsdl.exeに
渡すと、C#のスケルトンを生成してくれるますがこれ以外に、XMLデータの
スケルトンを生成する方法はないでしょうか?
Wsdl2JavaではコードのほかにXMLもはけますがどうなのでしょうか?
もしできたとして、WSDL.exe自体を勝手に配布したりすとまずいですよね?
C++のテンプレートはコンパイル時にエラー出すと255文字こえるエラーメッセージgがでて
わけわからんかったなぁ。
dataGridから、セレクタを選択してある行を消すのに
dataset.Tables["table"].Rows[Position].Delete();
ってやるのと
this.BindingContext[dataset,"table"].RemoveAt(Position);
てのと2種類あるようですが、両方とも同じように行削除できます。
使い分ける必要ってあるんですか?それとも好きなほうを使えってやつですか?
74 :
デフォルトの名無しさん:04/11/19 16:11:08
各行にチェックボックスとエディットボックスを備えた
リストボックスのようなUIを求められています。
あまりトリッキーでない方法で実現するにはどうするのが
ベストでしょうか?
最悪はListViewにして、編集には1アクション操作してもらう
ようにお願いしようと思いますが、できれば要望書に近い
UIにしてあげたいのです。
■[ 編集可能 ] 文字列 文字列 文字列
□[ 編集可能 ] 文字列 文字列 文字列
■[ 編集可能 ] 文字列 文字列 文字列
■[ 編集可能 ] 文字列 文字列 文字列
文字列の出所はOleDbですが、一部加工してから表示するので
連携は特に必要ありません。
よろしくお願いします。
売ってるグリッドクラスとか買って来い
出なければ編集時だけeditboxはっつけるか、自分で気合で作る。
DataGridの拡張はそんなに難しくないよ。
77 :
デフォルトの名無しさん:04/11/19 17:21:39
>>76 どもでした。
DataGrid
DataGridTableStyle
DataGridBoolColumn
DataGridTextBoxColumn
この辺の組み合わせで納得してもらえるようなものを
作れそうです。
つーか、ASP.NETなのかWindowsFormsなのかはっきりしてくれ。
>>79 Windows.Formです。
aspxでListViewって使えましたっけ?
EXEファイルの内部の変数を外部の他のEXEファイルから参照したり出来ないでしょうか?
参照設定にEXEファイルを選んでもDLLしか駄目みたいなことを言われるのですが
>>77 listen する IP アドレスは、クライアントが接続してくる interface の IP アドレスを指定する必要があります。
例えばPCが 127.0.0.1 と 192.168.0.0.2 の2つのIPアドレスを持っているとした場合、
それぞれのアドレスを指定した2つのlistenerで同時に待つ必要がある。
遊びに突っ込みもアレだけど、
> Socket handler = (Socket)socketList[socketList.Count-1];
これはスレッド生成時の引数 (object が一個渡せる) で渡したほうが良いような・・・
>>81 内部の変数とやらはともかく、VSからでは参照設定に.exeを指定できない。
.csprojファイルを手でいじってやれば参照できる。
84 :
エデン:04/11/19 21:34:24
型、名前空間の定義、またはファイルの終わりが必要です。
と出るのですが多分ファイルの終わりがないんだと思うんですが、
いくらやってもこれが出てしまいます。
どうすればいいんでしょうか
ちなみに
usingはこれを使ってます。
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Net.Sockets;
using System.Net;
昨日の終わりか今日の始めにも同じようなことを書きましたが(TT
using部分は大丈夫そうだ。
{ }はちゃんと対になってる?()も。
>>84 括弧がきちんと閉じられていない感じ。
ちゃんと開いた括弧は閉じましょう。
それ以上はコードも無しにわかりっこない…
だからそういうのまとめてソースから削って原因を絞り込めって。
88 :
エデン:04/11/19 22:05:52
>>86 この文の全体が500行ほどあることもですが
よく言われる『教えて君』みたいにすぐ答えを聞くんではなくて
ヒントみたいなものをもらって自分で解きたいと思ってのことです。
まあ自分も昔プログラム(当時で10年以上前のベーシックを5年ほど前に中学で、ですが・・・。)
やっていたんで『コードないのに答えれるか!?』というのも理解できるのですが
・・・
>>84 も『ある意味』教えて君ですがw
>>88 なんかVC#のエディターというか文法解釈はあやしいことがありました。
再起動したら普通にコンパイルできたり。
500行程度なら、#if falseつかいまくって、ソースをけずりまくっては?
>>90 ネットワークドライブ使ってない?
俺それでやられた。
ローカルにしたら直ったよ、多分タイムスタンプの問題。
くそおおおおおおおおおおおおおおおおおおおお!!!!!!
動かねぇと思ったら作ったスレッド動かしてなかった!!!!
半日潰したぞ!!
>>92 半日ならまだまだOKのうちじゃない?
まあ、おつ。
>>92みたいな奴に限って「これだからM$は」とか能書きたれるよな。
95 :
デフォルトの名無しさん:04/11/20 20:38:41
フォームの上にコントロールをいくつか配置するとき、
あるコントロールを別のコントロールの子として配置する方法ってないんでしょうか?
半透明が子でないと効いてくれないので・・・・
あともう一つ、子に発生したマウスイベントを親で受け取る方法ってないのでしょうか。
>>95 Control.Parentを設定しなおす。
>>96 ControlのMouseMoveなどのイベントを使う。
>>97 どもです
>Control.Parentを設定しなおす。
デザイナからはやっぱ無理なんですかね?
>ControlのMouseMoveなどのイベントを使う。
実はイベントの転送方法が分らなくて・・・
99 :
デフォルトの名無しさん:04/11/20 21:12:10
AutoScroll用にパネルの上にPictureBoxをおいているのですが、
スクロールバーなどをのぞいた実質的なPictureBoxの高さってどうしらべればいいんでしょうか?
今は水平スクロールバーがあるかどうかをPanelのサイズとImageのサイズを比べて
あれば PictureBox1.Height-20とかでしのいでるのですが、不便なのでなんかいい方法ないでしょうか?
100 :
お尋ね:04/11/20 21:15:42
実際のところ .NET の GUI って、開発しやすいですか?
>>98 イベントハンドラで対応するOn...を投げる。
>>99 ClientSizeでいいんじゃないか。
102 :
95:04/11/20 21:24:03
>>101 >イベントハンドラで対応するOn...を投げる。
protected でアクセスできないです(T_T)
>>98 >デザイナからはやっぱ無理なんですかね?
FormのLoadイベントなり、InitializeComponent()の後なりでできる。
>実はイベントの転送方法が分らなくて・・・
VS使ってるならプロパティウィンドウから設定すれ。
>>100 C/C++でAPI使って書くよりは楽。
実際に
>>98にはIDEなしで、簡単だからメモ帳あたりでウィンドウを使うコードを書いてみろと言いたい。
104 :
95:04/11/20 21:27:20
>>103 転送用のプロパティーってどれなんでしょうか?
>>104 プロパティウィンドウの雷みたいなマーク。
というかイベントの使い方ぐらい覚えれ。
106 :
95:04/11/20 21:42:09
>>105 受け取り方はわかるのですが送り方がわからなくて・・・
107 :
95:04/11/20 21:58:35
.NetFrameworkでSendMessage PostMessage に当たるものってあるのでしょうか?
108 :
デフォルトの名無しさん:04/11/20 22:45:36
>>107 pinvokeすればいいんじゃないの?
110 :
95:04/11/20 23:58:12
やっぱアンマネージドで行くしかないのかな・・・ふぅ
そうだね、君には無理そうだね。
>>110 つかわざわざクラスで隠蔽してるイベントを外側のコードから発生させるのはよろしくない気がする。
>>113 そんなもんは百も承知だ、分らんなら黙ってろ
アンマネージドでいく方が敷居高い気がするが。
背景画像固定でスクロールさせたいのですが何もいいアイデアが思い浮かばずorz
質問です。
よくゴミ箱に入れて削除してしまったファイルを復元するツールがありますが、
それはどうやって復元しているのでしょうか?
削除は読み出せないようにフラグをつけているだけ、ということは知っているのですが、
それをいざ読み出してやる、というと方法が思いつきません。
すいませんが、教えてください。
お願いします。
マネージドじゃむりじゃね?
122 :
デフォルトの名無しさん:04/11/21 11:36:17
Form1から
dialog.ShowDialog(this)
として、Form2を開き、
Form2から、Form1のOpacityをリアルタイムで変更したいのですが、
どういった方法ですれば良いのでしょうか?
当たり前なのかもしれないですが、
Form2から
this.Owner.Opacity = 0.5;
とかやってもダメでした。。
Form1側で
Opacityを操作するプロパティを用意してもダメでした。。。
助言お願いします〜
>>122 まずどう駄目だったのかをはっきりさせてからだ。
実行はできるんですが、
Form1のOpacityにアクセスするとこで落ちます。
エラー内容が
オブジェクト参照がオブジェクトインスタンスに設定されていない
です。
NullReferenceExceptionが返ってくるならnullでなくせばいい。
何がnullになってるのかを考えれば(あるいは調べれば)すぐ答えは出る。
自動的に代入されてるプロパティばかりではないと言う事だ。
何がnullかわかりました!
ShowDialog(this);
とやってForm2を呼び出しているのに、
Form2のOwnerはNullのままでした。(なぜ!?
改善策はわからず。。もうすこし見てみます。。
参照がなければ事前に入れたらいいのに。
>>127 126ではないが、そういう場当たりばっかりやってると、プログラムメチャクチャなるよ
>>121 すでに解決策やらヒントは出てるべ。
マネージドでやる方法もアンマネージドでやる方法も。
そんな時点で教える・教えないもあったものでもないと思うが。
だめだ。。
webにのってるのと同じようにしてるのに、
親フォームを取得できないです。。。
親側で、
form2.ShowDialog(this)
として子を呼び出し、
子側で
((Form1)this.Owner).mypublicvalue = 10;
とかすれば、良いはずじゃないのでしょうか?
タスケテー
131 :
デフォルトの名無しさん:04/11/21 14:02:41
C#でアニメーションしたいのですがよくわかりません。
具体的にはPicureBoxで表示した画像をアニメーションさせたいのですが
どなたかヒントいただけないでしょうか?よろしくお願い致します。
>>129 現状ではもうアンマネージドによる方法で解決している。
てゆうか、質問した時点でその方法についてなら既に解決済み。
マネージド方式については、どこにあるのか言ってみろ!!
>>131 手軽な方法はタイマーでPictureBoxの画像入れ替え
>>132 言語を理解してるならマネージのほうほうが先に思いつくわけだが、
どっちにしても解決してるなら別にいいじゃん。
>先に思いつくわけだが、
ウソこけ
135 :
131:04/11/21 14:31:31
>>133 レスありがとうございます。
タイマーで入れ換えとなると画像再模写になりますよね?
一度模写した画像を動かす方法ってありませんでしょうか?
宜しくお願い致します。
解決しました。
Form2のコンストラクタ内でForm1のオブジェクト
取得しようとしちゃダメなんですね。テヘ
すいませんでした〜
>>135 >模写
模写というのが、画像のファイルなどからの読み込みのことを言ってるなら
あらかじめ画像を読み込んでイメージリストにするなり
変数として保存しておけば読み込みは最初だけですむ。
>>136 ( ゚Д゚)<
変にカタいところのある95、微妙にずれてる122
どっちもがんがれ。めっちゃがんがれ。
>>122 97 名前:デフォルトの名無しさん[sage] 投稿日:04/11/20 20:50:06
>>96 ControlのMouseMoveなどのイベントを使う。
141 :
デフォルトの名無しさん:04/11/21 15:26:33
見た目重視のためだけなのですがFormのOpacityを
Mouse_Leaveで0.2F Enterで1F
にするコードを書いたのですが、
そのフォーム上で
ControlPaint.FillReversibleRectangle(new Rectangle(this.PointToScreen(p),old_size),Color.Transparent);
で範囲選択をしようとすると反転矩形が表示されなくなってしまいました。
Mouse_Leave,EnterのOpacityを変更する行をコメントアウトすると
問題なく表示されるのでOpacityを触ったのがだめだった用です。
また、Mouse_Leave,Enterの代わりにForm_DeactivedとActivatedを用いても
同じ結果でした。
>>139 散々かかれてますが、受け取る方法ではなくて転送する方法
MouseMoveでイベントを受信することはできるが送信はできない。
初めの条件は「子に発生したマウスイベントを親で受け取る方法」でイベントの転送ではない。
転送しなくてはいけないと思ったのは95が理解していないだけで
この条件を満たすだけならイベントを転送する必要はない。
つかOn...のところで感じ取ってくれよ・・・・
>>144 子で発生したからといって子で処理する必要はなく親にイベントハンドラを実装すればいい。以上。
>>144 だからイベントを勉強しなおせ。
というかなにをしたいのかよくわからん。
>>145 そういうわけでOnXXXを使う前に基本的な段階がわかってなさげ。
判った判った、お前の勝ちだ、全く役に立たないコメントありがとね。
>>148 最大の敗因は教えを請う相手を煽ってることと、決定的なC#への理解不足。
>役に立たないコメント
豚に真珠
お前ら大人気ないな。
>>150 なにを間違ってるのかわざわざ指摘してやってるんだからむしろ懇切丁寧だろ。
>役に立たないコメント
/// <summary>幅を取得します。</summary>
int GetWidth();
>152
こういうギャグがとっさに出てくるのが2chだなw
>役に立たないコメント
/// <summary>2を取得します。</summary>
int Get2();
2番煎じはつまらんよ
3番煎じ
>役に立たないコメント
/// <summary>test1をします</summary>
int test1();
ちょっと質問。
TextBoxとかListViewなどのコントロールになんて名前のつけかたしてる?
159 :
デフォルトの名無しさん:04/11/21 18:04:36
4番煎じ
>役に立たないコメント
/// <summary>回答を激しく求めています</summary>
String getAnswer(
>>141);
ここまでくると可哀相に思えるな
>>158 textBox_hoge
.NET の名前付けガイドラインに思いっきり反してるが、
Formのコントロールはぽこぽこ増えたり減ったりするので、
自分で管理してるほかのフィールドとは区別したい。
>>159 どうも透過ウィンドウと相性悪げ。
プラットフォーム呼び出しでPatBltのDSTINVERTを使って
選択範囲内のコントロールをいちいち描画してくとか面倒なことが必要になりそうだな。
レスありがとうございます。
ちょっと見た目重視にするだけでやたら面倒くさそうですね…
素直に諦めます…
5番煎じマダ〜?
Opacity を変えると見た目が良くなるのか…
5番煎じ
>役に立たないコメント
/// <summary>
>>141を減量します。</summary>
Man man = new Man(
>>141);
man.Hear.Count--;
Hear -> Hair。
二℃と現れません。orz
168 :
デフォルトの名無しさん:04/11/21 22:56:40
01.jpgと言う画像を表示させたいだけなのですがうまくいきません。
pictureBox1.Dispose();
//PictureBox pb = new PictureBox();
PictureBox PictureBox2 = new PictureBox();
PictureBox2.Location = new Point(300, 400);
PictureBox2.Size = new Size(100, 100);
//pb.Image = new Bitmap(300, 300);
//Bitmapオブジェクトの作成(画像ファイルを読み込む)
Bitmap bmap = new Bitmap("01.bmp");
//または、次のようにも出来る
//Image bmap = Image.FromFile(@"C:\Blue hills.jpg");
//PictureBox1のGraphicsオブジェクトの作成
Graphics g = PictureBox2.CreateGraphics();
//画像の描画
g.DrawImage(bmap, 300, 300);
//BitmapとGraphicsオブジェクトを破棄
bmap.Dispose();
g.Dispose();
どこか、間違っていますでしょうか?
169 :
168:04/11/21 22:57:34
あ・・・拡張子は、下記ミスってます。
拡張子以外のミス、ありませんでしょうか?
PictureBoxをFormのControlsにAddしてないとみた。
なんかわけわからんことやってるなー……。
折角PictureBox使うのになぜImageプロパティじゃなくて直接書くのかとか。
pictureBox1.Dispose()ってなによとか。
ひょっとして画像を変更するためだけに一々コントロールを作り直してるのか?
172 :
168:04/11/21 23:11:50
コピペしてから修正しろw
174 :
168:04/11/21 23:20:58
>>170 簡単なImageの方でやったらAddの有る無しで表示されない場合と表示される場合
確かめることが出来ました。
Addしていませんでした(まだ解決してませんが)
>>171 >172
>>173 コピペしました。。
コピペしてねーじゃん。
一辺ファイル名と変数名以外全部コピペでやってみな。
その「うまくいかない」状態というのがどういったものかを教えてくれないとどうしようもない気がするが
コンパイルすら通らないのか
コンパイルは通るけど思ったような動きをしてくれないのか
そうならばどのような動きをしているのか、とか
178 :
168:04/11/21 23:42:50
>>175-177 コピペしてやってみました。一瞬表示されて消えるみたいです。
コンパイルは通り、プログラムは実行されるのですが
画像が表示されないという状況です。
このプログラムの前にちがうpicturebox1.Dispose()しているのも原因の一つみたいです。
179 :
デフォルトの名無しさん:04/11/21 23:45:34
Paintイベントハンドラに書いてんのか?
それもそのURLにかいてあんぞ。
お世話になります。GUIのプログラミングに関しての質問です。
現在、お手軽2ちゃんねるブラウザをC#で開発中です。
取得済スレッドの振り分け機能を作ろうと思っているのですが、
それをOutlookのメッセージルール
作成に見られるような
「下線をクリックすると編集できます」みたいな感じで作りたいんです。
こんな感じのボックスってRichTextBoxで実現できますか?
他にも何かいい方法があったらおしえてくださいませ。
>こんな感じのボックスってRichTextBoxで実現できますか?
できなくはない。
>他にも何かいい方法があったらおしえてくださいませ。
UserControl
VSの設定ダイアログみたいに、左にツリー置いて右に詳細をおいた設定を作りたいけど
どうやればいの?
タブより面倒くさそ
>>182 ありがとうございます。
UserControlをどのように応用するのか私には想像がつかないのですが、
サンプル的なコードなどありますでしょうか?
foreach (TextBox tb in this.Controls)
{
tb.Text = "";
}
Formに配置したすべてのテキストボックスをリセットにしたいのですが
指定したキャストは有効ではありません と実行時にエラーが出ます
コンパイルは通るのですが何かすべてのテキストボックスをリセットするいい方法ないですか?
Controlで回して中でas演算子
foreach(Control tb in this.Controls)
{
TextBox temp = tb as TextBox;
if(temp!=null)
{
temp.Text = temp.Name;
}
}
でうまくいけました。 ありがとうございました。
けどやってみて気づいたのですがGroupBoxの中に分類して入れてる10個以上のTextBoxは
FormのControlコレクションに入ってないんですね… orz
>>183 TreeViewのAfterSelectイベントでごにょればなんとかなるまいか。
コンテナだからさ。
>>163 ちょっと調べてみた。
MouseEnterでOpacityを1Fに戻すところで
一緒にForm.AllowTransparencyをfalseにするのはどうだろう。
191 :
デフォルトの名無しさん:04/11/22 02:05:38
TextBoxを拡張して、色分け表示しようとがんばって調べていますが、
OnPaintとかオーバライドするのがベーシックなやり方でしょうか?
また、TextBoxは内部でもっているデータにどのようにアクセスして、
テキストとして描画しているのか理解できていないのですが、どうやって
調べれば判るでしょうか?
コントロールのフォーカス枠を非表示にしたいんですが、
フォーカス枠を描いているメソッドてありますか?
>>192 Control.ShowFocusCues プロパティ
とか言ってみる。
194 :
デフォルトの名無しさん:04/11/22 09:06:38
それをoverrideして、常にfalse返すようにしてもダメぽいんです。。
というか、ShowFocusCuesは
フォーカスが移ってきた場合でも使用されて無いみたい。
>>162==190さん
その方法で無事反転矩形が描画されました。
ありがとうございました。
AllPaintingInWmPaint追放してえ
C#で拡張子の関連付けを設定するにはどうやるんですか?
A.exeがB.exeのstaticな変数を共有する事は出来ないのでしょうか?
B.exeは起動中一秒ごとにpublic static int aをインクリメントし、
A.exeはボタンを押すとその時点のB.aの値を取得して表示する、というものなのですが、
A.exeのアセンブリ参照にB.exeを加えても、
B.exeから見た変数aと、A.exeから見た変数aとが異なるのですが
appdomain
>>200 プロセス間でとなるとメッセージのやりとりやDDE、リモート処理が必要。
//まず別プロセスで実行する必要性があるかどうかから検証するとか。
>>201-203 ありがとうございます。
やはり単純には行かないのですね。
AppDomainについて勉強してからもう一度やってみようと思います。
205 :
デフォルトの名無しさん:04/11/22 22:07:41
クラスの設計について質問です。
Console.WriteLineなどのように、出力専用であったり、ある値を変換するだけ
のクラスは、staticメソッドにしてもよいのでしょうか?
それともインスタンスを生成して、メソッドを利用するほうがよいのですか?
あまりstaticな変数やメソッドは使うべきではないと聞くのですが、
主にstaticなものはどのような具合に使用するのがよいのでしょう。
>>205 そこらへんはコーディング スタイルの問題だと思う。
私ならほとんどの場合インスタンスを生成してメソッド利用にするけど。
>>205 Console は設計があまりよろしくない。
Win32 では確かに Console は同時に一つしか持てないことになってるが、
他の環境でどうだかは定かではない。
static にしないほうが良かった。
Math などの普遍的かつ非オブジェクト的なメソッド/プロパティはstaticがよろしい。
Path は名前は間違ってるがやってることはやっぱりstaticでよろしい。
javaのstringTokenizerクラスだったか、あれは.NETではString.Splitメソッドで済ます方向だよな。
//わざわざクラス立ててる割りにメソッドがしょぼいと言うイメージを受けたが。>stringTokenizer
即レスありがとうございます。
たしかに少し値を変換するぐらいのメソッドだったら、
インスタンスを生成せずstaticで済ませたい気持ちありますね(汗
もうすこしクラスの組み立て方を考えてみたいと思います。
みなさんありがとうございました(^^
210 :
デフォルトの名無しさん:04/11/22 23:04:22
オプションなどで変更した画面配色などを、次回起動時にも反映できるように、
設定などを保存しておきたいとします。
現在は配色や、その他設定項目を保持するクラスを生成して、
XmlSerializerとTextWriterを使ってそのクラスをファイルに書き出している状態です。
こちらのページを参考としました。
http://fe0r.at.infoseek.co.jp/Doc/csXmlSave.htm 最近バグに気づいたのですが、Colorクラスなどは参照型なので(?)、
値がうまく保存されないことに気が付きました(;´д⊂
文字などはきちんと保存され、読み込みもできるのですが・・・。
Color.Blackなどの情報はどのように保存して置けばいいのでしょうか?
Color は値型でんがな
212 :
デフォルトの名無しさん:04/11/22 23:08:53
bool a=b=true;
abともに真である条件式で
if(a & b){}
if(a && b){}
お前らはどっち書く?
複数のスレッドから、ひとつのファイルに読み書きを行っているのですが、
ファイルに対して排他ロックを取得する良い方法はないでしょうか?
読み書きを行うメソッドをひとつのクラスにまとめ、
lock(this){}でロックをかけていたのですが、
諸々の事情から、他のクラスからもファイルにアクセスする必要があり、
出来れば、ファイルそのものに対してロックをかけたいのです。
lock(filename){}とかで今はごまかしているのですが、
これだと単純に一定の文字列に対してロックをかけているだけなので、
やはりファイルそのものでロックをかけたいのです。
何か良い方法はないでしょうか?
>>212 供に真であるとわかっているなら、その if 節自体書かない。
わかっていないなら、&& を使う。コスト変わらない場合でもなんとなく。
あれ?同じプロセス内なら排他しててもファイル開けるんだっけ?
OS上でそれなら、擬似的に排他を行うファイルクラス作ればいいんでは?
>>212 &&で書く。結果は同じになるかもしれんが、
論理演算子とビット操作演算子では意味が違う。
あんまり保守プログラマをいじめないでくれい。
b を必ず評価すべきときは当然 &。
a の値によって b を評価すべきか否かが決まる時は &&。
どっちでもいいときは、コストが少なくなる可能性がある方をとって &&。
つか、リファレンス嫁。
>結果は同じになるかもしれんが、
>論理演算子とビット操作演算子では意味が違う。
ここまで自覚のない厨房は初めて見たな。傑作だ
>>216。
もうちょっと詳しく書いておくと、bool型の値を返すメソッド A() と B() があるとして、
A()とB()を両方呼んで、どちらの戻り値もtrueだったらC()を呼ぶ、と言うような場合は、
if (A() & B()) C();
A()の戻り値がtrueだったらB()を呼んで、B()の戻り値がtrueだったらC()を呼ぶ、
というような場合は
if (A() && B()) C();
C由来の構文を持ってる言語はほとんどそうなんじゃないかな。
>>220 いやそれは誰でも知ってる・・・というか C# でもそれは && の定義だから当然だとして、
マルチポストの
>>212 は bool a=b=true と(たぶん)単純変数のケースを指定してきてるわけじゃないか。
つまり「どっちでもよさげな場合はどっちにしてる?」という、単なるアンケートかと。
>>220 自分は余計なバグ増やしたくないんでそういう記述絶対にしないんだが。
俺も&&||を短絡のために使うことはないな・・・。
本当に右オペランドを評価して欲しくないならifの入れ子にする。
あ、でも
if ( s==null || s.Length==0 )
とかは普通にやってるな・・・orz
そ、そうか? 俺おかしい?
こういうC時代からの癖は、もはや時代遅れなのかな…… orz
今はあんまり使わない技法だねぇ
素直に&& || 使っちゃうな
いやおかしくはないんだけど、うっかり評価関数の順番入れ替えたりとかうかつなことしそう。
&では違うが、ififも&&もILは全く一緒になるんだからそこまでこだわらなくてもイイのでは?
保守性って言ってもそんな大掛かりな変更が必要になる場面じゃないんだし、
ミスが減る減らないはそんな構文の違いより個人個人の癖の方が大きいんじゃないかな。
&と|は列挙型の合成分離にしか使わない。
そうだねえ。普段から書き慣れてるスタイルが一番ミスが少ないわな。
短絡って言っても、せいぜい
if (args.Length > 0 && args[0] == "xxx") {} とか
if (aaa.ShowDialog() == DialogResult.OK && xxx()) {} 程度のことしかやってないし、
気にするほどでもないな。
233 :
デフォルトの名無しさん:04/11/23 02:25:45
>>231 いや下のほうはどうかと思うぞ。
Cでも普通そういうことしないだろ。
Perlでは当たり前にやるみたいだが。
Perlは xxx or die と書きたいだけ
iif ( hoge != null && hoge.Visible )とかわりとよく使う。
漏れは。
俺も短絡評価はいちいち参照のnullチェックでインデント下げたくない時くらいだな
new Hoge(new Hage(new Mage(new Moge(new Hige new Fuga()))));
>>237 >new Hige new Fuga()
プゲラッチョ
C#は、C++でいうところの
if (Derived* pDerived = dynamic_cast<Derived*>(pBase)) {
・・・;
}
みたいなコードが一文&&余計なスコープ無しで書けないのが自分ではかなりぎこちない。
C言語の時代じゃないんだから
ややトリッキーな書き方は止めるべきだね。
可読性が大事。
そんなオレはスクリプト言語は使えませんw
Pytho はいいぞ。可読性もばっちり。
>>220 短絡評価ってやり始めると凄い見通しがいいんだよな、&&はやるのは考え物なので専用の演算子が欲しい所。
しかし短絡評価とそうでない評価の両方が使い分けられるのは便利だな。
>>239 あーそれはあるなあ。
C#でそれをやろうとすると、
Derived derived = base as Derived;
if (derived != null) { ・・・; }
とか
if (base is Derived) { Derived derived = base as Derived; ・・・: } // 効率悪い
とか異様に長ったらしくなるんだよね、、、
245 :
デフォルトの名無しさん:04/11/23 16:12:42
GraphicsのDrawImage()メソッドで描写したイメージを
消したいのですが、DeleteImageメソッドみたいな物はありませんでしょうか?
g.DrawImage()
↓
g.DeleteImage()
よろしくお願い致します。
Drawする前の状態に戻したいという意味なら、そんなものはない。
>>245 「消したい」が何を言ってるのかさっぱり分からんが、
ある色で塗りつぶしたいんならClearとかFillRectangle、
イメージオブジェクトを破棄したいんならimage.Dispose(); image = null;でいいんじゃないの
>DeleteImageメソッドみたいな物はありませんでしょうか?
その「DeleteImageメソッド」とやらが一体何者なのか何の説明もなく、
いきなり「DeleteImageメソッドみたいなもの」とか言われても答えようがないんだが。
249 :
245:04/11/23 19:23:18
>>247 deleteみたいなメソッドは無いみたいですね。
結局disposeで消し(オブジェクトごと)ました。
ありがとうございました。
250 :
デフォルトの名無しさん:04/11/23 19:32:28
もうちょっと詳しく書いておくと、bool型の値を返すメソッド A() と B() があるとして、
A()とB()を両方呼んで、どちらかの戻り値がtrueだったらC()を呼ぶ、と言うような場合は、
if (A() | B()) C();
A()の戻り値がtrueだったらB()を呼んで、B()の戻り値がtrueだったらC()を呼ぶ、
というような場合は
if (A() || B()) C();
その両者を使い分けているコードはすっきりはするだろうが可読性はかなり下がりそうだな。
何かの言語で and と andalso というのがあったような。
あと、or と orelse だったかな。
C/C++からC#に移ってきたマーはすっかり短絡評価に慣れきっているので
全評価をするDelphiのような論理結合は必要性を感じなくなっている。
逆に言うとDelphianに受けがいいように両方用意したのかもな。
>>253 あり?Delphiは
if (A() || B()) C();
こっちのスタイルじゃなかったか?
VB6は全評価のみだったかな。
>>250 if(A()||B())C();
と
if(A())
if(B())
C()
之で速度にどれほど差があるの・・・可読性と保守では圧倒的に後者だと思うんだけど
伝統的にPascalの流れを汲む言語は完全評価だが、Object Pascalは
例外的に短絡評価をベースとする。完全評価には{$B+}指令が必要。
C#は両方の評価方式を取り入れてしまったためにスカラ型を暗黙のうちに
ブール型に変換する事ができなくなってしまった。
そのためCやC++のように
if (a) .... のような構文は a が bool型の時しか使えなくなった。
>>256 ダウト。単に型変換を厳しくしたからだろ。
そもそも250の解説が間違ってるな。
なんで完全評価だとスカラ型を暗黙のうちにブール型に変換できないのかわからん。
>>259 書いてる本人が間違うぐらい読みづらい表記ってことだな。
いかにバグのないコードを書くのが難しいかよくわかりました。
へんに凝らずに素直に書けばいいのさ
.NET 2.0ならListViewもオーナードローできるようになってるんだけどねー。
268 :
デフォルトの名無しさん:04/11/24 04:36:25
C#で2chのトリップ解析する方法教えて下さい
2ch の cript 関数は 56bitDES です。
できるかどうかだけでも教えて下さい
269 :
デフォルトの名無しさん:04/11/24 04:40:23
die( sprintf "usage: %s <tripkey>\n", __FILE__ ) unless @ARGV;
my $tripkey = $ARGV[0];
my $salt = substr substr( $tripkey, 1, 2 ) . "H.", 0, 2;
$salt =~ tr{:;<=>?\@[\\]^_`}{ABCDEFGabcdef};
$salt =~ s{[^./0-9A-Za-z]}{.}g;
my $trip = substr crypt( $tripkey, $salt ), -10;
printf "◆%s", $trip;
このperlをC#に変換してください
死んでください
272 :
デフォルトの名無しさん:04/11/24 04:46:46
こんなことで死ななきゃならないのか世の中きびしいな
273 :
268:04/11/24 04:57:13
cryptの関数がないんですよ。C#には・・
おしえて
2次元少女のエロ画像もってきたら
教えてやるよ
275 :
268:04/11/24 05:07:11
System.Security.Cryptography 名前空間の
DES クラスだ。
.NETのリファレンスもってるなら調べられるだろ
Cryptographyってのは暗号のことだ
277 :
268:04/11/24 05:19:20
エロ画像本当にもってくる268に敬礼しとこう。
280 :
デフォルトの名無しさん:04/11/24 13:10:08
C#でImageMagickを使うことってできますか?
ファイルでなくメモリでデータの受け渡しをしたいです。
281 :
デフォルトの名無しさん:04/11/24 14:34:20
True って1?
trueはtrueですが何か。
283 :
デフォルトの名無しさん:04/11/24 14:39:27
richTextboxに何も入力させない用にするにはどうしたらいいのですか?
Enableはtrueでお願いします。
プロパティ一覧ぐらい目を通そうや。
285 :
283:04/11/24 14:43:34
あとEnterとDeleteとBackSpaceも入力不可にしたいです。
自己解決しました
287 :
デフォルトの名無しさん:04/11/24 16:17:28
配列の中に文字列が入っており、
全ての文字列の後ろから、半角数字部分を摘出し、
その半角数字部分でソートをしたいのですが、
どの様な関数を用いるべきでしょうか?
例
[ABC012][ZZ101][Z99][A23][B11]
これを
[B11][ABC012][A23][Z99][ZZ101]
にする。
288 :
山田:04/11/24 17:05:36
StreamReaderを使用してファイルを読み込む処理を行っています。
----------------------------------------------------
StreamReader sr = new StreamReader( "test.txt", System.Text.Encoding.GetEncoding( "SHIFT-JIS" ));
string input;
string sql;
while(( input = sr.ReadLine()) != null )
{
sql += input + "\r\n";
}
sr.Close();
---------------------------------------------------
1回目の呼び出しは、正常に行われるのですが、2回目以降呼び出すと
「プロセスはファイル "***" にアクセスできません。このファイルは別のプロセスが使用中です。」
というエラーメッセージが表示されます。
※読み込み対象ファイルは、1回目と2回目以降、異なります。
ストリームをクローズしているのに?どうしてこのようなエラーが・・・。
ご存じの方、いらっしゃいましたら、ご教授願います。
>>288 > ※読み込み対象ファイルは、1回目と2回目以降、異なります。
読み込むファイルが違うなら、このストリームをCloseしてるかどうかは関係ないと思うんだが。
その2回目以降に読み込むファイルがなんらかでロックされてるんだろ。
290 :
山田:04/11/24 17:16:16
>>289 早速のご回答ありがとうございます。
そうですね・・。ファイルが異なるので関係ないとは思います。すいません。
2回目以降に読み取るファイルを、別プロセスが何か行っていることは
あり得ない状況です。デバック上だと、このエラーは再現しません。
>>288 よくわかんないけど「非コンソールアプリを .bat ファイルや .cmd ファイルから連続して
呼び出していて、アプリが実行を終了しない間にどんどん次のを起動している」に1ぺリカ。
>>288 そのプログラムを試しに実行してみたらバグがあったとかで……
二個目のファイルを読み取った時点で異常停止していたりして
で、そのプロセスが何時までも居座り続けてるとか
>>288 この sql += input + "\r\n"; って重い処理だから、
StringBuilder sb = new StringBuilder;
...
sb.AppendFormat("{0}{1}", input, System.Environment.NewLine);
とかにしたほうがいいと思います。
なんかの事情で数千行のファイルを処理したりするときになってくると効いてくると思う。
あと、ここで例外をキャッチしないで「プロセスは・・・」っていうメッセージが出てるくらいだから、
どこか他に中途半端なキャッチし忘れがあってファイルを開きっぱなしにしている可能性も考慮してみては?
>>287 [ABC012][ZZ101][Z99][A23][B11]
を
(0, 012) (1, 101) (2, 99) (3, 23) (4, 11)
という具合に元々のインデックスと数値の対と見なして数値でソート
(4, 11) (0, 012) (3, 23) (2, 99) (1, 101)
そしてインデックスを見て配列組み直し
[B11][ABC012][A23][Z99][ZZ101]
とかやるんですかね。
インデックスと数値の対をクラスにして IComparable を実装すればいい感じがしそうです。
>>280 ImageMagickに限らず、メモリ領域のポインタを引数にとるアンマネージド関数の呼び出しは
こんな風に行える。
// マネージドメモリを確保
byte[] buf = new byte[1024];
// マネージドメモリを固定し、アンマネージド関数から参照できるようにする
// ガベージコレクタの対象からも外れる
GCHandle hGC = GCHandle.Alloc(buf, GCHandleType.Pinned);
// buf のポインタを取得
IntPtr lpBuf = hGC.AddrOfPinnedObject();
// この辺でAPI呼び出し
// メモリの固定を解く
hGC.Free();
296 :
268:04/11/24 22:13:47
>>269 これは、何枚画像持ってくればやってもらえますか?
余談ですが、レジストリが狂ってしまって
VB6のアイコンがVS.NETに変わってた・・・
レジストリもスワップされたみたいで、起動してもまともに動かない
AD-AWAREのせいかな・・・
再インストール時間かかるんだよなぁ・・
>>296 せめて、できない個所だけにまとめようよ。
ネタじゃなくて本気の質問というところに驚きを禁じえない
299 :
デフォルトの名無しさん:04/11/25 01:38:44
TreeView オーナードローして、カラフルなTextを表示するヒントください。
そろそろ、System.Windows.Form等のdll解析するのめんどくなってき
たので助けてください。
300 :
デフォルトの名無しさん:04/11/25 02:38:18
>>296 そうだな・・・
5枚あればやってやらんこともない。
ただ今度は糞画像は却下。
直エロじゃなくて微エロでよろ
>>287 正規表現使うと楽かも
public class MyComparer : System.Collections.IComparer {
public MyComparer() {
}
#region IComparer メンバ
public int Compare(object x, object y) {
string a = (string)x;
string b = (string)y;
//正規表現で末尾の数字を取得
System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex("(?<num>\\d*)$");
int numA = int.Parse(regex.Match(a).Groups["num"].Value);
int numB = int.Parse(regex.Match(b).Groups["num"].Value);
return numA - numB;
}
#endregion
}
という風にIComparerの実装を作っておいて
string[] ary = new string[] { "ABC012", "ZZ101", "Z99", "A23", "B11" };
Array.Sort(ary, new MyComparer());
>>302 件数が少ないときはシンプルでよいかも・・・
304 :
山田:04/11/25 09:07:45
288です。
皆さん、色々ご回答下さいまして、有り難うございます。
ファイル変更監視のWindowsサービスを作成して、サービス開始
処理内容は、特定にディレクトリにファイルが吐かれたことをキャッチして、通知メールを送ります。
そのファイルの内容を読み込む・・というメソッドの中で、このエラーは起きてます。
>>291 2つめのファイル以降、全部エラーになっているので、次々呼び出したから・・と
いう訳ではなさそうです。
>>292 デバック上だとエラーが出ませんので、バグではないと思います。
>>293 有り難うございます。早速書き換えます。
と、例外はキャッチしてます。言い忘れてました。すいません。
例外キャッチ後、その例外エラーメッセージをイベントログに書き込んでいます。
そのイベントログを見て、「プロセス・・」エラーが出ていることが分かりました。
>>304 ・・・・・・他のプロセスが作成したファイルをすぐに開くと、先方の
プロセスが開いているので開けません。
> ファイルが吐かれたことをキャッチして
> そのファイルの内容を読み込む
まだ吐いてる途中じゃねーの?
307 :
山田:04/11/25 11:21:44
>>305 単体テストとして、ファイルを吐くシステムは別物なので
あらかじめ作成しておいたテキストファイルを、コピーして特定のディレクトリに貼り付けてるんです。(手作業)
1つ目のファイルも、2つ目のファイルも、同じようにコピペでテストしているのに
どうして2つ目以降は怒られるのでしょうか?
>>306 手作業で貼り付けている段階で、起こっている現象ですので
あり得ないと思います。
308 :
山田:04/11/25 12:37:29
なんか僕が質問してばかりですいません。
関係ないのかも知れませんが、ファイルが別プロセスで起動中だろうが
関係ない、非排他でファイルを読み込むメソッドを
ご存じの方がいらっしゃいましたら、教えて下さい。
エロ画像は持っていないのですが・・。
309 :
デフォルトの名無しさん:04/11/25 13:20:40
質問です。
PanelにコントロールをAddしたりRemoveしたりするところで、
System.Windows.Forms.dllでWin32Exceptionが発生します。
毎回発生するわけではなく、原因がつかめません。
対策や回避方法について、なにか情報をお持ちの方は教えて
いただけないでしょうか?
自己解決したかもしれません。
RemoveしたコントロールをDisposeしていませんでした。
311 :
280:04/11/25 14:25:17
>295
返事ありがとうございます。
Cを呼ぶのはAPI覚えるのと作るのが大変なのでできればどなたかラッパーしたのが使いたいです。
標準でWindows OLE版があるらしいので.netで使ってみたのですが出力結果が取得できませんでした。
http://www.imagemagick.org/www/ImageMagickObject.html 作ってみたソース
MagickImageClass magic = new MagickImageClass();
object[] list = new object[2];
object[] inlist = new object[2];
byte[] buf;
using (FileStream stream = new FileStream(@"C:\test\image\test.png", FileMode.Open))
{
buf = new byte[stream.Length];
stream.Read(buf, 0, (int) stream.Length);
}
inlist[0] = "png";
inlist[1] = buf;
list[0] = inlist;
object[] outlist = new object[2];
outlist[0] = "jpeg";
list[1] = outlist;
object msg = magic.Convert(ref list);
MessageBox.Show(""+msg);
byte[] outbuf = (byte[]) ((object[])list[1])[1];
if (outbuf == null)
{
MessageBox.Show("null");
}
using (FileStream stream = new FileStream(@"C:\test\image\test_out_magick.jpg", FileMode.Create))
{
stream.Write(outbuf, 0, (int) outbuf.Length);
}
Access.Application l_AccessApp = new Access.ApplicationClass();
のようにして、Accessを制御しようとしていますが、ユーザーに
Accessをされてしまうと、次にl_AccessAppにアクセスする時に
当然ながら例外となってしまいます。
そこで、事前にl_AccessAppが有効か無効かをチェックしたい
のですが、どうやったらいいのでしょうか?
手持ちのMSDNを検索していますが、探し方がヘタで見つかって
いません。
>>山田
ネタかもしれないけど、一応レスしときます。
>1つ目のファイルも、2つ目のファイルも、同じようにコピペでテストしているのに
>どうして2つ目以降は怒られるのでしょうか?
様々な理由が考えられます。ファイルシステムに変更が加えられてから通知されるまでの
タイムラグに違いが出てきているのかもしれませんし、1つ目のファイルが小さくてあなたの
プログラムがOpenしようとする以前にコピーが完了しているのかも知れません。
>手作業で貼り付けている段階で、起こっている現象ですので
>あり得ないと思います。
「手作業での張り付け」っていっても、ウィンドウズのエクスプローラーが「ファイルを作成」して
「内容をコピー」してるわけですよね。エクスプローラーがクローズする前に開こうとすれば
失敗する可能性があります。
>ファイルが別プロセスで起動中だろうが関係ない、非排他でファイルを読み込むメソッドを
簡単な方法はありません。Win32APIをフックして、先方のプロセスがAPIに渡しているパラメータを
変更するのが一番簡単でしょうけれども・・・
>>312 漏れはCOMとか全く知らないけど、『なぜかAccess.Applicationは(EXCEL等と違って)Quitイベントが
取れないから、「読み込み解除時」か「閉じる」イベントとかで代用汁!』みたいなのを見かけたことが
あるな・・・
自アプリ的には発生起因も無いのにそれらイベントが発生したら、ユーザが閉じたと判断するわけです。
315 :
山田:04/11/25 18:05:34
>>313 ファイルを読み込む前に、sleepを入れたら、正常に動作しました。
おっしゃる通りだったと思います。
1回目だけ、なぜ上手くいけたのかは分かりかねますが・・。
下手なやり方ですが、ファイルをオープンさせて
IOの例外がキャッチされたら、Sleep、そして再度オープン、という
よくない方法で回避したいと思います。
パネルコントロールとピクチャボックスの違いについて質問です。
ワーカスレッドで作成したビットマップを、
コントロールのPaintイベント内でDrawImage()して表示しているのですが、
パネルで行うとちらつきが激しいです。
DrawImageなら、描画途中のグラフィックは表示されないのではないでしょうか?
バッファリングの方法としてこのような形式が紹介されていたのですが
ちなみにピクチャボックスで同じ処理を行えばちらつきはありません。
素直にピクチャボックスにすればよいのですが、
CPUの負担を少しでも減らすためにパネルにしたいのです。
どうか知恵をお貸しください。
>>316 まず、PanelなりUserControlなりから派生しないかぎり無理。
派生クラスで、
this.SetStyle(ControlStyles.DoubleBuffer| ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true);
OnPaintBackgroundをオーバーライドし、中身を空にする。
ていうか、検索すれば腐るほど資料は見つかるんだが・・・?
>>317 ありがとうございます。
調べが不十分で申し訳ありません。
つまりダブルバッファリングをスタイルとしておかないと駄目だということですよね。
ところでControlStyles.DoubleBufferとはどのような処理を行っているのでしょうか?
DrawImage()でちらつくのがどうしても理解できないのです。
大変申し訳ないです。
すでにご回答頂いていたようです。
重ね重ねスミマセン。
>すでにご回答頂いていたようです。
どの問題についてどの「ご回答」のことを言ってるんだか分からない。
解決したのなら、他の人が見ても分かるようにしっかり書け。
321 :
デフォルトの名無しさん:04/11/26 00:53:02
ListViewやTreeViewなど現状オーナードローできないViewについては
WndProcをoverrideするしかないのは理解できたのですが、
具体的にWndProcを使って表示する文字色や大きさなどを変更するためには
どのように書けばいいのでしょうか?
322 :
デフォルトの名無しさん:04/11/26 01:01:02
ケツだけ星人〜
C#でプログラミングする時のバイブルみたいな本って何でしたっけ?
325 :
デフォルトの名無しさん:04/11/26 11:20:00
using System.Threading;
using System.Windows.Forms;
namespace Mut {
class Mut {
public static void Main() {
Mutex mutex = new Mutex(false, "むーてっくす");
if (!mutex.WaitOne(0, false)) {
MessageBox.Show("二重起動のようです");
Application.Exit();
}
MessageBox.Show("mutex");
}
}
}
と多重起動回避をさせようとしています。2つ目以降のプロセスで
"二重起動のようです"というメッセージボックスは表示されるんですが、
Application.Exit()がうまく動作せず次の"mutex"というメッセージボックスも
表示されてしまいます。使用コンパイラは
Microsoft(R) Visual C# .NET Compiler version 7.10.3052.4
for Microsoft(R) .NET Framework version 1.1.4322
です。コードはネット上で見つけたサンプルのほぼ丸コピーなので動くはずなんですが・・・。
GC.KeepAlive(mutex);を追加してガベージコレクションから外しても動作しませんでした。
どのように修正すればきちんと終了するようになるのでしょうか?よろしくお願いします。
>>325 メッセージループ(Application.Runで始まるループ)もないのにApplication.Exitしても意味ない。
Mainをそのままreturnで終了したまい。
また、もっと単純に
using System.Threading;
using System.Windows.Forms;
namespace WExit {
class WExit {
public static void Main() {
Application.Exit();
MessageBox.Show("表示されないはずですが表示されてます");
}
}
}
とやってもメッセージボックスが表示されてしまうので、問題はApplication.Exit()周りに
あるものだと考えています。MSDNによるとApplication.Exit()は
> このメソッドは全スレッドで実行中のメッセージ ループをすべて停止し、アプリケーションのウィンドウをすべて閉じます。
> このメソッドによって、アプリケーションが強制的に終了されることはありません。
とのことですので、アプリケーションを途中終了させるためには別のメソッドを利用するのでしょうか?
>>326 素早い返答をありがとうございます。試したところうまくいきました。
>>アプリケーションが強制的に終了されることはありません。
ちゃんとこのようになってますが・・・
あなたの言う動作をしたければ、自分を含むすべてのスレッドをKILLしたほうがいいと思います。
>>327 Application.Exit() が説明の通りに「実行中のメッセージ ループをすべて停止し、
アプリケーションのウィンドウをすべて閉じ」た後で、
MessageBox を呼び出しているからメッセージボックスが表示されるのです。
アプリケーションを綺麗に途中終了する方法はありません。
強制終了させるのであれば、Process.GetCurrentProcess().Kill() で出来ますが、
正常な終了処理は行われないので全くお勧めしません。
Application.Run() 実行後であれば、Application.Exit() でほうっておく、
それ以前であれば Main から単にリターンする、というのが妥当な方法です。
>>329,330
アドバイスありがとうございます。
実は最初のうちはApplication.Run(new Hoge())で呼ばれるコンストラクタ内で
Mutex判定を行い、Application.Exit()していました。Cのexit()の感覚で使ったのが
間違いのもとのようです。
>>331 Cのexit()に相当するのはEnvironment.Exit()あたりだと思う。
333 :
デフォルトの名無しさん:04/11/27 01:45:21
ICMPメッセージの送受信のサンプルって無いですか?
Pingのサンプルなら宇宙仮面にあったな。
336 :
デフォルトの名無しさん:04/11/27 02:19:25
アマゾンのURLなんか貼るなやクズが。
わからんならレスしなくていいよ
宇宙仮面ってサイト自体が妙にCPUリソース食う作りになってるよな
視力も浪費します
なぜか太字だし背景ウザイからな。
Microsoft.DirectX.AudioVideoPlaybackというのを使って
メディアプレーヤーを作ろうと思ってます。
ファイルを開くときに、
Audioクラスと、Videoクラスのどちらを生成すれば良いか?
というのは、まず、Videoクラスでインスタンス作成をtryして、
ダメならcatchしてAudioクラスで開く。
というようなアプローチでよいのでしょうか?
あと、早送りとかはどのように実装すればよいのでしょうか?
早送りボタンを作って、ボタン押しっぱなしかどうかチェックして、
押しっぱなしの間はずっと早送りをし続ける。
というのをやりたいと思ってるのですが、
押しっぱなしかどうかチェックする術がわかりません。。
シンプルな、audio,video両対応プレーヤーの
サンプルなんか知ってましたら英語でもかまわないので
教えてもらえるとうれしいです。
お願いしますm(_ _)m
読込はそれで良いんじゃない?
拡張子でまず区分する手もあるけど。
ボタンのおしっぱなしはMouseDownとMouseUpで。
AudioVideoPlaybackはいまいち使われてないんだよね。
MDXのサンプルの中にAVP使ったプレイヤーのサンプルもあったはず。
>>342 どうもありがとうございます!
AVPサンプルとはこれですね!
http://www.microsoft.com/japan/msdn/directx/japan/dx9/AVCS.asp しかし、これもVideoしか考慮してないようなのです。。
早送りは、押しっぱなし判定用共有変数 を持たせて、
MouseDownとMouseUpで変数をいじって、
MouseClickでおしっぱ変数がtrueの間、
Click{
while(osippa)
{
CurrentPosition += 1;
}
}
とやってみたのですが、
Down->Click(whileループ)で、
Upが呼ばれない!てことになってしまいました;;
(やってみて当たり前のことなのか、と気づきました。。)
スレッド処理とかで、早送り処理はやらせるべきなんでしょうか?
(予想以上に大事になってきてしまいました・・)
ボタンはToolBar上に配置しています。
押しっぱフラグの判定をMouseClickイベントハンドラでやるからだめなんだということはわかったわけね。
じゃあどうすればいいのかといえば、
・マウスボタンと関係ない
・定期的に実行される
場所でやればいいわけだ。
それを満たすためには、ざっと以下の方法が考えられる。
1.監視用のスレッドを作る。
2.TimerのTickイベントをつかう。
3.WndProcメソッドをオーバーライドする。
俺がやるとすれば3を選ぶ。一番シンプルだから。
安易にWndProcをオーバーライドするのは同意しかねるな。
私ならTimerを使う。直感的だから。
確かに、どうしてもメッセージを処理しなきゃならない時以外にWndProcをオーバーライドするのはよろしくないな。
ましてや、初心者のうちから変な習慣をつけちゃダメだ。
>>344 のラスト1行は撤回する。
347 :
デフォルトの名無しさん:04/11/27 18:31:56
ある変数の型を別の型へキャストできるかどうか、というメソッドってなんでしたか?
>>344-345 ありがとうございます!
petzold本にちょうどTickを使った例が載っていたので(p689)
それ使ってやってみようと思います。
しかし、また問題が出てきてしまったのですが、
早送りするなら、ボタンが押されたときに発動しなければならないので、
(よってClickイベントだとダメ!)
Downイベントを使おうと思ったのですが、
ツールバーに乗せたボタン(ToolBarButton)の場合、
各々のボタンにイベントがない為
ツールバーのDownイベントを使うしかないと思ったのですが、
ツールバーのDownイベントだと 押されたボタンが取得できません;;
(Clickイベントだったら取得できるのに。。)
この場合は自分でpanel用意して、
Buttonをペタペタ貼り付けるしかないでしょうか?
>>348 メソッドっていってるのに演算子を答えてる。もうだめぽ。
ちなみにMSILでは、isinst。実際にキャストするのは、castclass。
>>347 Type.IsAssignableFrom。ただし結構重い。
>>350 347 は初心者以上だったのか。すまん。
うえーん、IPを実装したいけどよくわかんないよ〜
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧
( ´Д⊂ヽ
⊂ ノ
人 Y
し (_)
x86アセンブラの本を読め
354 :
デフォルトの名無しさん:04/11/27 21:13:16
richtextboxで指定した行へ飛ばすにはどうしたらいいのですか?
sendmessageでVBの時やってたのですが全然解りません。
355 :
デフォルトの名無しさん:04/11/28 01:00:56
配列の中に、同じものが入っていたら削除したいのですが
{98,98,100,80,80,100,50}
を並べ替えて、
{50,80,80,98,98,100,100}
のようにして、最後に
{50,80,98,100}または、
{50,80,98,100,0,0}
を作成する方法をよろしくお願いします。
クラスの継承・インターフェイスを学んでいて不思議に思ったので質問します。
C#ではinterface内でクラス内変数を宣言することは推奨されないのでしょうか?
どこのサンプルを見ても関数定義のみで変数定義をしていないようなんですが。。
やってみりゃわかるがそもそも不可能。
理由はちょっと考えれば分かる。
>>358 宣言したものが全てpublic abstractになり、後から実装されなければならないから、でしょうか?
interface は、それを実装したクラスと外部との“インターフェイスを”定義するためにある。
そのために必要ないことはできてはいけない。
>>356 すみません。誰もいないと思っていました。
最後の同じ要素を削除する部分です。
よろしくお願いします。
>>356 すみません。誰もいないと思っていました。
最後の同じ要素を削除する部分です。
よろしくお願いします。
こんなんでどうだ? (Whidbeyだともっとすっきり書けるんだけどねえ)
int[] a = {98,98,100,80,80,100,50};
Array.Sort(a);
int buf = a[0];
int cnt = 1;
for (int i = 1; i < a.Length; i++)
{
if (a[i] == buf)
a[i] = int.MaxValue;
else
{
buf = a[i];
cnt++;
}
}
Array.Sort(a);
int[] b = new int[cnt];
Array.Copy(a, 0, b, 0, cnt);
Whidbeyだとこんな感じか。
int[] a = { 98, 98, 100, 80, 80, 100, 50 };
Array.Sort(a);
List<int> b = new List<int>();
b.Add(a[0]);
for (int i = 1; i < a.Length; i++)
{
if (a[i] != a[i - 1])
b.Add(a[i]);
}
int[] c = b.ToArray();
Whidbey(.net 2.0) でやるなら
ttp://www.wintellect.com/powercollections/ にあるPowerCollectionsのOrderedSetを使えばもっとすっきり
int[] a = {98,98,100,80,80,100,50};
OrderedSet<int> set = new OrderedSet<int>();
set.AddAll(a);
int[] b = set.ToArray();
int[] a = {98,98,100,100,80,80,100,50};
Array.Sort(a);
int ptr = 1;
for (int i = 1; i < a.Length; i++)
{
if(a[i-1]!=a[i])
{
a[ptr]=a[i];
ptr++;
}
}
int[] b = new int[ptr];
Array.Copy(a, 0, b, 0, ptr);
c#2002
書いてみますタ。
>>355 は自分でアルゴリズムを描くということをまったく考えなかった予感
人の宿題手伝っちゃだめだよ(´ω`)
370 :
デフォルトの名無しさん:04/11/28 13:44:40
.Netのリファレンス読んでるんですが
Socketクラスでパケットキャプチャする仕方がまったくわかりません
簡単な方法を教授お願いします
372 :
368:04/11/28 14:03:28
ArrayList array = new ArrayList();
int[] a = {98,98,100,100,80,80,100,50};
Array.Sort(a);
foreach(int num in a){
if(!array.Contains(num))array.Add(num);
}
foreach(int num in array){
Console.Write(num + ",");
}
ゴミプログラム作成してすいません。
373 :
370:04/11/28 14:07:31
>>371 いやサンプルじゃなくてさ・・
肝の部分をおしえてよ
CodeProjectって認証いるやん
374 :
デフォルトの名無しさん:04/11/28 15:34:12
ワード2000上で(例えば)F10を押すと、
自作のVC#AppliであるmyAppli(起動済)のある
メソッドを実行させることってできますか?
DDEとかFindWindowとかSendMessageとかOLEとかActiveXコンポーネントとか
検索したらいろいろあるんですが・・・おながいします
COM呼び出せりゃそ子から。NET呼ぶだけですむんじゃね?
376 :
374:04/11/28 16:57:06
>>375 え、え、すみません。
まず何を勉強したらよろしいのでしょうか。
COMとはどのコンポーネントを指すのでしょうか。
377 :
デフォルトの名無しさん:04/11/28 16:58:10
#defineのような複数のファイルにまたがって参照できる
定数はC#ではなんですか?
378 :
374:04/11/28 17:07:49
定数はclass内でreadonlyで定義しる
>>376 まずどんな構成を考えているかだ。
他のプロセスのキー入力を取得するのは.NETでは不可能。C/C++などでメッセージをフックする必要がある。
グローバルなホットキーならWin32APIを使えば.NETで扱えるが、全てのウィンドウでのキー入力が奪われてしまう。
その代わりWindowsキーを修飾キーに当てる事もできるから、Windows+F10とかの他に害のないキーを使うなら割と手軽に実現できる。
VBAには詳しくないが、そっちの方でキー入力を判断してとかできるならワード上でなんとかできるかもしれない。
その場合起動済みプロセスにメッセージなりなんなりで通信することになる。
>>377 まずC/C++の思考を捨てろと。
オブジェクト指向で物を考えろと。
constかstatic readonlyのフィールドだ。
380 :
374:04/11/28 17:19:55
F11なんて、今まで一度も使ったことないので
このボタンなら他のいかなるプロセスとも重複しないから
いいかなと思いました。
Win32APIの具体的にどの関数がよろしいのでしょうか。
FindWindow SendMessage以外にございますか?
>>380 F11はアプリによってはフルスクリーン切り替えボタンになってるから
気を付けたほうがいいよ。
>>376 ワードから呼び出せるものが何かわからないけれど、COMで作ったコンポーネント呼び出せるならそのコンポーネントから.NET製のアプリなりコンポーネントなり呼び出すがよい。
383 :
374:04/11/28 17:34:18
そのウィンドウ間でのやりとりをする時は、
ワード2000作業中です。
ワード2k内のF11押下→SendMessage(?)→myCSAppli
ですので、他のアプリって関連がないと思うんですけど・・・
(常駐ソフトをのぞく)
Sleipnirはウィンドウサイズ変更でした(今やってみました)
RegisterHotKey UnregisterHotKey GetForegrondWindow
辺りかな。
いや、グローバルホットキーだとあらゆるウィンドウの入力を奪うから、
F11をグローバルホットキーに割り当てると例えばSleipnirのウィンドウサイズ変更も不可能になる。
385 :
374:04/11/28 17:38:00
>>382 word(A COM)
_______↓
myApl(B COM)
であり、COMは同一のもの。
ということですか?
このスレはレベルの低い質問は許されますか?
387 :
374:04/11/28 17:40:32
グローバルホットキー?
確かにこれを設定すると、
起動中のすべてのソフトにおいて
各々のソフト内で割り当てられた当該キーを無効にしてしまう
んですよね・・・たしか。
word
↓
ブリッジコンポーネントl(COM)
↓
YourApl(.NET)
390 :
374:04/11/28 17:41:34
>>389
きたーーーーーーーーーーー!
目もメモ・・・
391 :
374:04/11/28 17:44:44
>>389 ブリッジコンポーネントってなんだょぅ・・・(; ;)
DDEみたいなものですか?DDEはCOMじゃないけど(?)
みなさん、やさしいっす・・・(T_T)
392 :
374:04/11/28 17:48:12
393 :
374:04/11/28 17:48:54
394 :
デフォルトの名無しさん:04/11/28 22:54:19
winmm.dllのマルチメディアタイマがC#でうまく使えません。
timeSetEventにC#のdelegateで渡して
定期的にイベントを発生するようにすると
最初のうちは動くんですが
数秒たつとnull参照の例外をスローして勝手に止まってしまいます。
delegateじゃだめなんでしょうか?
取りあえず10ミリ秒間隔100秒の10000回は問題ないな。
何がnullになってるんだ?
>>364-367 372
ソースコードまで、丁寧にありがとうございます。
実はもっと配列のサイズが大きいので、速度的にどう書けば良いか
考えていました。
>>368 夜中に2重投稿するほど考えてました。
確かにArray.SortCompareRemove()があればいいと思っていましたが。
>>369 単なる趣味でプログラムしているだけです。
速度を気にするのなら重複分を削除よりも
ソートの方が気を使うべきなんじゃ
398 :
374:04/11/29 00:06:02
[DllImport("user32.dll", EntryPoint="RegisterHotKey", CallingConvention=CallingConvention.Winapi)]
public static extern int RegisterHotKey(uint hwnd, uint HK_ID, uint MOD_KEY, uint KEY);
こいつでうまくいきやした。
ありあした。
細かいとこだが、返値はBOOLなんだからboolで宣言してやればいいんじゃないかというのと、
ハンドルの類はIntPtrを使うのが一般的であるという点。
いや別にいいんだけどね。
>>397 ここからは自分でソートのアルゴリズムから勉強し直してみます。
でりげーとさきおぶじぇくとをDispose溶かしてる余寒
402 :
374:04/11/29 00:50:09
>>399 え、え、そこんとこ、もう少し具体的に
助言お願いします・・・
>>402 「ハンドル」というのは要はポインタのことだから、ポインタを表すIntPtr型を使った方がいいってこと。
.NETでポインタを扱うメソッドやプロパティ(Marshalクラスのメソッド群とか、Form.Handleとか)は
ポインタとしてIntPtr型の引数をとるから、いちいち変換する手間がないという利点もある。
もっとも、MSDNのサンプルでウィンドウハンドルにintを使っていたりするので、動作そのものに
支障はないんだけどね。
あとプラットフォームによってポインタのサイズが変わる可能性がある、と言う点もIntPtrにする理由だな。
IntPtrならプラットフォームによるポインタサイズを考慮する必要がない。ということになってる。
406 :
デフォルトの名無しさん:04/11/29 11:22:06
Startボタンを押すと時計がスタートする
10分の1秒単位で表示
Lapボタンを押すとstartボタンをおしてからの
経過時間が表示される
STOPボタンを押すと時間がとまる
Resetボタンをおすと0にもどる
closeボタンを押すとフォームをとじる
っていうのでストップウォッチをつくりたいんですけど。。
教えてください。
何を教えればいいのかな。
408 :
デフォルトの名無しさん:04/11/29 11:29:13
どのようなソースになるのかが
わからないです・・・(><)
>>408 ∧∧ バコ ☆
( *・-・)っ―[] /
[ ̄ ̄ ̄] (><)
ベクターより選んでダウンロードする。
>>408 ここにきくより。
まず、VC#の基礎を紹介しているHPまわったほうがいいよ。
Timer,TextBox,Buttonコントロールはりつけてイベント記述して完成。
412 :
374:04/11/29 14:05:09
>>404 405
詳しく書いてくれたもんだから、うれしいじゃねーかよ!!
あんがとな。
ばっちりだぜ。
ファイルを開くときに、そのファイルに対して他のプロセスが排他的なロックを行っているか調べる方法はありますか?
今は例外をキャッチしたら・・・という処理にしているのですが、
出来ればファイルを開く際にロックを調べたいのです。
よろしくお願いします。
414 :
デフォルトの名無しさん:04/11/29 21:28:48
IPやTCP, ICMP等のパケットを自分で作りたいんですが、それぞれの関係や、具体的なデータの例を出して解説してるWebサイトってありませんか?
(UDPパケットはIPパケットのデータ部分に含まれてるとか、そういうプロトコル同士の関係とか)
インターネット -----(グローバルIP) ルータ(192.168.1.1)------- (192.168.1.10)LAN端末
こんな環境でLAN端末で動いているC#アプリから
グローバルIPを取得する方法知りませんか?
tracert みたいなもんを組むしかないんじゃない?
IPアシストというグローバルアドレス取得ソフトでも結局診断君あたりの情報を使ってるだけだな。
レスありがとうございます。
どうやら、外に問いあわせるしかないようですね。
がんばって組んでみます。
なんか、手はあるそうだけど、ルーター選ぶみたい。
手っ取り早いのは外にといあわせですね。
ルータの機種にもよるけど、こんな方法はどうだ?
HTTPなりHTTPSでルータ管理画面(のHTMLソース)を取得し、その中からIPアドレスを抜き出すとかw
サンプル作ってみた。ルータは Planex BRL-04FWU。
// ルータステータス画面のURI、ユーザ名、パスワード
string uri = @"
http://192.168.1.1/status.htm";
string username = "admin";
string password = "password";
try
{
System.Net.WebClient wc = new System.Net.WebClient();
wc.Credentials = new System.Net.NetworkCredential(username, password);
string src = System.Text.Encoding.Default.GetString(wc.DownloadData(uri));
System.Text.RegularExpressions.Regex rx
= new System.Text.RegularExpressions.Regex(@"\d+\.\d+\.\d+\.\d+");
string ipAddr = rx.Matches(src)[0].Captures[0].Value;
Console.WriteLine("成功しますた。 Global IP Address: {0}", ipAddr);
}
catch
{
Console.WriteLine("失敗しますた。");
}
たいへん初歩的かもしれませんが、たいへん大事な疑問を持っています。
C#という言語は、米国マイクロソフト社のものだそうですが、
現在、これは同社がどの程度にぎり締めているのでしょうか?
・C#言語で書いたソースコードを作成した場合、それはマイクロソフト社から
何らかの所有権のような主張を受ける可能性がありますか? 現在何らかの主張
を受ける可能性と共に、将来に渡って主張を受ける可能性があるのかどうかが問題
です。
たとえば、現在はC#言語を使うことについて、マイクロソフト社にお金を支払う
必要もないし、許可を得る必要もないと示していると思います。ただし、所有権は
握っていて、ただ単に今はお金も許可もなしで使っていいです、と言っているだけで、
やがて将来のいつかの時点で、おカネいただきます、とか言い出す可能性があるような
公開のされかたをしているのでしょうか?
・また、C#言語のソースコードを処理するプログラム。たとえばコンパイラや変換プログラム
などを作成する際に、上記のような主張をされ得る可能性があるでしょうか。つまり、
そのようなC#言語の仕様の公開のされかたがなされているでしょうか?
・同様に、C#言語に関する文書や、マイクロソフト社製のソフトやサービスを利用した人が、
そこからインスピレーションやアイデアを受けて、別の何か面白い物を考え出した場合、
マイクロソフト社から、それはC#の利用規約上、あなたは我々に従わねばなりません、
おカネいただきます、とか主張される可能性があるでしょうか?
そのような主張がされるような可能性を残すような、公開のされかたをしているでしょうか?
どうぞよろしくお願いします
おいおい、C#はEMCAにも標準認定されてる言語だぜ。
自分用に使うだけなら、適当なFTPサーバにアクセスしてデータポートを開かない
ままLISTとか投げると大概はエラーコード550に続いて此方のIPを返してくれる。
あとはSMTPサーバにアクセスしてEHLO投げてみるとか?
>>427 CLIの部分をISOにも提出してるっていってたよな。
通ったんだっけ?
>>432 2.0ではできるようになる。
今はそんな使えないもの使わず自前で。
そっか。頑張ってみるよ。ありがとん。
435 :
デフォルトの名無しさん:04/11/30 06:38:22
>プログラミング言語に著作権は無い
ように見せかけているだけ。実際言語とは何か? ライブラリーとは
なにか? そのうちUNI死すみたいに豹変する可能性大。
436 :
デフォルトの名無しさん:04/11/30 06:41:21
Re:>435
馬鹿は死ね
437 :
デフォルトの名無しさん:04/11/30 07:30:48
>>435 Unisysが持っているのは著作権ではなく「特許」なわけだが。
さらに言うと、その中身は言語でもライブラリでもなく、LZWという「アルゴリズム」。
なぁなぁ、ManagedDirectXの日本語ドキュメントをVSを使わずに見る方法があるはずなんだが、
どうやってやるんだっけ?
っつーか.NETのドキュメントすらねぇ('A`)
ドキュメントだけ落とすことはできなかったっけ?SDK丸々落とすの?(´・ω・`)
確かオブジェクト指向という考え方そのものに特許を持っている
企業があって最近大騒ぎになったような…
アラヤダ
スレを間違えてたよ(´・ω・`)
たしかに豹変は怖いな
この言語って無料ではできないんですか
言語は無料
俺の童貞は無料
無料でも貰い手が無い
(´Д⊂)
450 :
デフォルトの名無しさん:04/11/30 18:15:00
(  ̄,_ ̄)プ
451 :
デフォルトの名無しさん:04/11/30 19:57:24
どこかにアルゴリズムとか言語とか抜きの無料でかわいい女の子いませんか?
C++様(*´Д`)ハァハァ
……とか言うべき流れなのだろうか。
>>444 .NET Framework自体にコンパイラが含まれてるんで、それだけでも開発はできる
俺はよく仕事に使うツールなんかを作ったりしてるよ。
454 :
デフォルトの名無しさん:04/11/30 23:46:18
お世話になります。
tabpageの配列に関しての質問です。
tabpageの配列?を作りたいんですが、
ボタンをクリックする毎に
ひとつのtabControl上に順ににabPage1、tabPage2、tabPage3、・・・
と作られるようにしたいのです。
xをインデックスとして
int x = 1;
void Button1Click(object sender, System.EventArgs e)
{
System.Windows.Forms.TabControl control = new System.Windows.Forms.TabControl();
System.Windows.Forms.TabPage page[x] = new System.Windows.Forms.TabPage();
control.Controls.Add(page[x]);
x++;
}
としてもどうやら文法ミスのようでうまくいきません。
なんででしょうか?
こう書けば出来るよっていう書き方を知ってたら教えてください。
455 :
454:04/11/30 23:51:23
ちなみにエラーメッセージです。
構文エラーとか言われてます。
c:\Documents and Settings\yuu\My Documents\SharpDevelop Projects\arraytab\MainForm.cs(107,41): error CS0650: 構文エラーです。不適切な配列の宣言子です。マネージ配列を宣言するには、次元指定子を変数の識別子の前に指定します。
c:\Documents and Settings\yuu\My Documents\SharpDevelop Projects\arraytab\MainForm.cs(107,45): error CS1002: ; が必要です。
c:\Documents and Settings\yuu\My Documents\SharpDevelop Projects\arraytab\MainForm.cs(107,45): error CS1525: '=' は無効です。
c:\Documents and Settings\yuu\My Documents\SharpDevelop Projects\arraytab\MainForm.cs(107,47): error CS1002: ; が必要です。
ビルド完了 -- 4 エラー, 0 警告
>>454 取りあえず
> System.Windows.Forms.TabPage page[x] = new System.Windows.Forms.TabPage();
みたいな書き方するレベルなら、もっと基礎から学んでいくべきだね。
配列の宣言と代入の仕方から。
> System.Windows.Forms.TabControl control = new System.Windows.Forms.TabControl();
FormとTabControlとTabPageの関係も考えてみる。
何がTabControlで何がTabPageだ?
どのTabControlにどのTabPageを入れるか?
458 :
454:04/12/01 00:08:14
>>456 ありがとうございます。
いまついうっかり書き写し間違えてしまいまた。
じゃあこんなのはどうでしょうか?
System.Windows.Forms.TabPage[] page = new System.Windows.Forms.TabPage();
配列の要素数を最初っから決めたくないんですが・・。
この気持ち分かってくれますか?
どうでしょうかも何もコンパイルすりゃ分かるだろう。
配列サイズを動的に増加させたいならArrayListでも使ってろという話だ。
ところでなんで基礎を基礎をと言う話は華麗にスルーするんだろうねこういう人たちは。
おまいもかれいにするぅしろぃ
461 :
454:04/12/01 00:20:40
答え教えてくれよ。
462 :
デフォルトの名無しさん:04/12/01 00:23:59
>>461 釣りだというのは承知で言わせてもらうが
お前は死ね!
>>454 つられよう。
タブコントロールボタンクリックするたびにつくってどうする!
タブページをどこに追加してんねん!
そもそも以下略・・
System.Windows.Forms.TabPage tabPage = new System.Windows.Forms.TabPage();
this.tabControl1.TabPages.Add(tabPage);
ちなみに追加の仕方はこうだ。
配列は勉強汁
みんな優しいのね。
>>454だとButton1Clickの度にTabControlが作られるよ。
そうしたいなら話は別だが・・絶対に違うだろ?
468 :
デフォルトの名無しさん:04/12/01 01:20:36
[DllImport("Imm32.dll",EntryPoint="ImmEnumRegisterWordA")]
public static extern IntPtr ImmGetContext(IntPtr hWnd);
[DllImport("IMM32.DLL")]
public static extern Int32 ImmReleaseContext(IntPtr hWnd, IntPtr hIMC);
[DllImport("IMM32.DLL")]
public static extern Int32 ImmSetOpenStatus(IntPtr hIMC, Int32 fMode);
[DllImport("IMM32.DLL")]
public static extern Int32 ImmRegisterWord(IntPtr hKL, String lpszReading, UInt32 dwStyle, String lpszRegister);
[DllImport("User32.dll")]
public static extern IntPtr GetForegroundWindow();
[DllImport("User32.dll")]
public static extern IntPtr GetKeyboardLayout(UInt32 dwLayout);
private const Int32 mc_TRUE = 1;
private const Int32 mc_FALSE = 0;
//public const Int32 IME_REGWORD_STYLE_USER_FIRST = 0x80000000;
public const Int32 IME_REGWORD_STYLE_USER_FIRST = 0x0000;
public const Int32 IME_REGWORD_STYLE_USER_LAST = 0xFFFF;
469 :
デフォルトの名無しさん:04/12/01 01:21:13
private void button1_Click(object sender, System.EventArgs e)
{
//辞書ボタン
IntPtr hWnd;
IntPtr hIMC;
IntPtr hKL;
hWnd=GetForegroundWindow();
if(hWnd==IntPtr.Zero)
{
MessageBox.Show("hWnd = "+hWnd.ToString());
}
hIMC=ImmGetContext(hWnd);
if(hIMC==IntPtr.Zero)
{
MessageBox.Show("hIMC = "+hIMC.ToString());
}
hKL=GetKeyboardLayout(0);
if(hKL==IntPtr.Zero)
{
MessageBox.Show("hKL = "+hKL.ToString());
}
if(ImmSetOpenStatus(hIMC,mc_TRUE)==0)
{
MessageBox.Show("ImmSetOpen Failed");
return;
}
MessageBox.Show(hKL.ToString());
ImmRegisterWord(hKL,"へけけ",IME_REGWORD_STYLE_USER_FIRST,"へけっしゅ");
ImmReleaseContext(hWnd,hIMC);
MessageBox.Show("最後まで到達");
470 :
468:04/12/01 01:25:59
うわ〜恥ずかしい、hIMCがIntPtr.Zeroになってしまうのを
質問しようとしたら、IMMGetContextになぜかエントリーアホイントが
残ってたじゃないですか・・・すみません。
改めて、エントリーポイント削除して起動したら、無事
hIMCは取得できました。
しかし、
ImmRegisterWord(hKL,"へけけ",IME_REGWORD_STYLE_USER_FIRST,"へけっしゅ");
をしたにも関わらず、単語登録されていません。
ちゃんとReleaseでコンテキストを開放しているんですけど、
プログラム実行後すぐに辞書を確認しても、登録されていません。
だれか、教えてください。まじ、頼む・・・
471 :
468:04/12/01 01:27:18
hWnd=GetForeGroundWindow()じゃなくても
hWnd=this.Handle;
でいけそうな予感もしたので、先生方、そこんとこもよろしくです。
まじたのもう。
472 :
468:04/12/01 01:29:15
そのほかにも、「おまえアホか」とか
「この文、ナンセンスだよね」とかあったら、
教えてください.
ネット上では、IntPtrの代わりに
longがよく使われているみたいだけど、
longでも代用可能な理由と、どちらを選択すべきか及びその理由も
教えていただけると、僕はなきます。まじで、なく。
取りあえず一般的な事を。
> hWnd=GetForeGroundWindow()じゃなくても
> hWnd=this.Handle;
> でいけそうな予感もしたので、先生方、そこんとこもよろしくです。
thisがフォアグラウンドなフォームなら返ってくる値は同じ。
BOOLはboolで宣言して問題ない。 //対応するマネージ型はInt32になってるけど。
個人的にはconstで宣言するよりenumで纏めるな。 //これはコーディングスタイルの問題だが。それにこの例のように2つだけならconstも真っ当だ。
IntPtrの方が自然。
つうかlongで宣言してる例って見かけないんだけど……。
//VB6はLongが.NETにおけるInt32になるよ。
32bit環境でならIntPtrは32bitとして扱われるのでちょうどInt32と相互に互換性がある。
そのためInt32/UInt32で定義することも珍しくはない。
がしかしInt32にしろInt64にせよポインタサイズを決めうちしてしまうと、
プラットフォーム固定になってしまうから好ましくない。
474 :
454:04/12/01 01:59:09
int x = 0;
System.Collections.ArrayList myArrayList = new System.Collections.ArrayList();
void Button1Click(object sender, System.EventArgs e)
{
myArrayList.Add(new System.Windows.Forms.TabPage());
tabControl1.Controls.Add((TabPage)myArrayList[x]);
x++;
}
エラーが消えて希望の処理が出来るようになったので
安心して死ねます。みなさんありがとうさようなら・
475 :
468:04/12/01 02:00:42
>>473 天使だな、あなた。 とりあえず、うれしいぜ。
DLLインポートの時に、上記すべての宣言時において
EntryPointでエントリポイントを念のためきちんと指定しておきました。
もっともEntryPointの記述なしにハンドルとか取れていたので、
EntryPoint って結局いるのいらないの?
そこんとこも、頼みます(・人・)
あと、
//public const Int32 IME_REGWORD_STYLE_USER_FIRST = 0x80000000;
public const Int32 IME_REGWORD_STYLE_USER_FIRST = 0xA000;
これも。Basic.Netで&H80000000と書いてあったんで
C#.netなら、0x80000000でよいかなと、
で、ちょっと桁が多くておかしいなと。16進法なのに・・・
というわけで、80000000が8進法だと仮定して・・・あれ。
8進法なら7までのはず・・・はぁ僕っておばかさん。
476 :
468:04/12/01 02:02:15
>>454 え、何それ、それやるとタブ増えるの? めもめも
477 :
454:04/12/01 02:11:29
まだ死ねなかった。
>>474で生成されたTabpageなんだけど
いざ新しく出来たタブに名前をつけようとして
例えば
(TabPage)myArrayList[x].Text = "新しいタブ"
とかやるとエラーが出てくる。どうしてか教えてください。
>>475 EntryPoint の指定は、特に別名を指定したい場合以外は必要ない。
(例えば、static メソッドには必ず sm_ というプレフィックスをつけるというコーディング規約
がある時とかね)
あと、ANSI版(〜A)とUnicode版(〜W)がある関数の場合、あえてAやWを指定せずに、
(例えば、LoadLibraryA とか LoadLibraryW とか書かずに LoadLibrary と書く)
CharSet = CharSet.Auto と指定すると、プラットフォームに応じて適切な方を呼んでくれる
という機能があるので、積極的に利用汁。
>>468-470 [DllImport("imm32.dll")]
public static extern uint ImmGetRegisterWordStyle(IntPtr layout, uint itemMaxCount, [Out] StyleBuffer[] buffer);
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Ansi)]
public struct StyleBuffer {
public int Style;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=0x20)]
public string Description;
public override string ToString(){
return string.Format("StyleID: 0x{0:X8} 品詞: {1}", Style, Description);
}
}
IntPtr layout = GetKeyboardLayout(0);
uint count = ImmGetRegisterWordStyle(locale, 0, null);
StyleBuffer[] buffers = new StyleBuffer[count];
count = ImmGetRegisterWordStyle(layout, count, buffers);
foreach (StyleBuffer buffer in buffers)
Console.WriteLine(buffer.ToString());
で品詞とそれに対応するStyle値が手に入る。
例えば名詞が0x80000001だとして、
ImmRegisterWord(layout, "ああ", 0x80000001, "吁嗟");
これだけならコンテキスト取得する必要も無し。
> //public const Int32 IME_REGWORD_STYLE_USER_FIRST = 0x80000000;
基本的に正しい。Int32はその名の通り32bit。4bitで16進数一桁だから32ビットは16進数8桁。丁度だ。
ただ、DWORDに対応するマネージ型はUInt32だからね?
480 :
468:04/12/01 09:27:03
はぁ、もうみんなやさしすぎ。
まじうれしいです。
休み時間にゆっくり検討させていたらきます。
481 :
初心者:04/12/01 11:12:16
お世話になっています。C#初心者です。
現在、HTTPプロトコル経由で、CGIへ送信メソッドを呼び出すプログラムを作成しています。
POSTメソッドに引き渡すパラメータの中に、「画像ファイルバイナリデータ」があるのですが
一体、どのように渡せばいいのか、検討が付きません。
どなたかご教授下さいますよう、宜しくお願い致します。
-------------------------------------------------------------------
WebRequest webReq = HttpWebRequest.Create( "・・・.cgi" );
wk_webReq.Method = "POST";
Stream stream = webReq.GetRequestStream();
StreamWriter writer = new StreamWriter( stream );
↓↓↓↓↓↓↓↓↓↓ ここの部分が不明です。
string parameter = "key=111&gazou=(画像ファイルバイナリデータ)";
parameter = HttpUtility.UrlEncode( parameter );
writer.Write( parameter );
writer.Close();
WebResponse wk_webRes = wk_webReq.GetResponse();
・・・
>string parameter = "key=111&gazou=(画像ファイルバイナリデータ)";
>parameter = HttpUtility.UrlEncode( parameter );
これだとCGIに渡されるデータは「key%3d111%26gazou%3d(・・・」になるぞ
>>481 そのCGIの仕様を知らないから何とも言えないが、大抵はBase64エンコードを使うんでは無かろうか。
System.Convert.ToBase64Stringメソッド。
POSTするときはContentLengthプロパティの設定も忘れずに。
484 :
初心者:04/12/01 11:29:31
>>482 間違えました。パラメータの=右値のみ、UrlEncodeする予定です。
>>483 ありがとうございます!!
僕も、そのCGIの仕様を全く知らないのですが、仕様書にそう
書かれていました。
485 :
468:04/12/01 12:23:02
486 :
468:04/12/01 12:31:00
>>473 まじ、俺、うれしいぜ。
ちょっと恥ずかしいくらい、今うれしいぜ。
>thisがフォアグラウンドなフォームなら返ってくる値は同じ。
らじゃ。フォアグラウンドウィンドウってことは
ようは、Active()なウィンドウってことでオッケーっすよね。
>BOOLはboolで宣言して問題ない。 //対応するマネージ型はInt32に
>なってるけど。
はぅ、まじっすか?確かに小文字にしただけなのでいけそうな気も
していたのですが、BOOLはInt32であって、True or Falseというわけでは
ないから、無理だとばかり思ってました。だって、
Int32をboolに暗黙的に変換できませんでした」なんて言われそうで・・・。
487 :
468:04/12/01 12:31:21
>個人的にはconstで宣言するよりenumで纏めるな。
> //これはコーディングスタイルの問題だが。
>それにこの例のように2つだけならconstも真っ当だ。
らじゃ、列挙んとこ、勉強しときます。
>IntPtrの方が自然。
>つうかlongで宣言してる例って見かけないんだけど……。
>//VB6はLongが.NETにおけるInt32になるよ。
VBのLongを、longと近藤さんでした。
IntPtrでがんがんいくぜ! ってか
IntPtrって、C言語でいう
単なるポインタなんでしょ?ってか、単なるアドレス格納庫なんだよね?
(間違ってたら遠慮なく「あほ」とおながいします)
488 :
468:04/12/01 12:38:16
>>479 ポイセドン級のレベルですね。
ドラゴンボールでいうなら、デンデでしょうか。
パッパリピ・・・ごっふぉん。
ってか、まじさんくす。
そんなサンプルどこにありました?
僕はかなーり探しましたけど、imm32に関しては
定義くらいしか載っていませんでした・・・
確かにスタイル取得の構造体に関する記述は少しあったけど、
ぜんぜんくわしくなくて、まるで雲をつかむ思いでした。
でも、天使君臨。(>_<)
>>487-488 > IntPtrって、C言語でいう
> 単なるポインタなんでしょ?ってか、単なるアドレス格納庫なんだよね?
まあそういう理解で間違いじゃない。
ただ32bitなりのただの数字だから、単純に数値を渡す時にも使ったりする。……のも結局Cと同じだよな。
//SendMessageのWParamを想像するとわかりやすい。
要はプラットフォームに固有の桁サイズ(メモリアドレスがその代表格)を持つ数値を表す構造体であると。
> そんなサンプルどこにありました?
> 僕はかなーり探しましたけど、imm32に関しては
> 定義くらいしか載っていませんでした・・・
> 確かにスタイル取得の構造体に関する記述は少しあったけど、
> ぜんぜんくわしくなくて、まるで雲をつかむ思いでした。
定義が載ってたから後はトライアンドエラー。
閃いたのはImmRegisterWordのstyle値を成功するまでループで回してみて、0x80000001で成功が返ってきたから。
DllImportの記述は慣れ。
490 :
468:04/12/01 13:05:14
>>489 アドバイス、本当にありがとうございます。
おかげで、なんかいけそうな気がしてきました。
僕はスタイル値に適当にぶっこんどけば
動くものだと思っていました。
(「適当に」というのは0x80000000とか)
僕の頭の中には、残念ながら以下の文に関する知見がございません。
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=0x20)]
勉強しに逝ってきます。
491 :
デフォルトの名無しさん:04/12/01 16:25:28
while文を使って、ファイルを一行一行読み込んでいます。
ある行でエラーが発生した場合、次の行を読み込みたいのですが
どうしたらいいんでしょうか
continue;
493 :
デフォルトの名無しさん:04/12/01 16:39:50
enum Test : int
{
value1 = 0x0100,
value2 = 0x0110
}
ていう列挙体を作って、
Console.WriteLine(Test.value1);
で、これだと「value1」が出力されます。
Console.WriteLine((int)Test.value1);
だと、「256」が出力されます。
ダイレクトに「0100」という出力結果がほしいんですが、どうしたらいいんでしょうか?
printf
ダイレクトも何もコンパイル時に0x100、つまり256という「数値」で格納されるので0x0000などという表記は喪失する。
Convert.ToString(int, string)とかで適切に対処する。
文字に変換するのが重要なら構造体にしてToStringをオーバーライドするという手もある。
Convert.ToString(int, int)の間違いだった。
>>493 内部的には16進リテラルも10進リテラルも同じだから区別のつけようは無い。
そのため、出力関数側で16進表示の面倒を見てやる必要がある。
Console.WriteLine("16進表示:0x{0}", Enum::Format(typeof(Test), myTest, "x"));
といった感じ。
ここを参考:
ms-help://MS.NETFrameworkSDKv1.1.JA/cpref/html/frlrfSystemEnumClassFormatTopic.htm
498 :
デフォルトの名無しさん:04/12/01 23:07:01
tabControlのBackColorを変更したいのですが、
それぞれのページのBackColorは変更ではなく、
tabControl自体のBackColorは変更できないのでしょうか?
ボタンのところではなく、外枠っぽいところです。
そこだけ無機質なWindowsコントロールの色なので変更したいのですが・・・
Q1: バイナリを配布する際にコンソールを表示しないようにしたいのですが
可能でしょうか?
Q2: プログラムからIEを起動してヘルプを表示したいのですが、
どのようにすれば良いでしょうか?
Q3: 「コンパイル済みHTMLヘルプファイル」(.chm)を作るツールみたいなものって
あるのでしょうか?
おながいします。
>Q1
可能
>Q2
IEのパスを取得してSystem.Diagnostics.Process.Start();
>Q3
ある
502 :
468:04/12/02 00:48:43
//The Function to get IME Context
[DllImport("imm32",CharSet=CharSet.Auto)]
public static extern IntPtr ImmGetContext(IntPtr hWnd);
//The Function to release IME Context
[DllImport("imm32",CharSet=CharSet.Auto)]
public static extern bool ImmReleaseContext(IntPtr hWnd, IntPtr hIMC);
//The Function to Set IME Opened
[DllImport("imm32",CharSet=CharSet.Auto)]
public static extern bool ImmSetOpenStatus(IntPtr hIMC, bool fMode);
//The Function to Get IME Status
[DllImport("imm32",CharSet=CharSet.Auto)]
public static extern bool ImmGetOpenStatus(IntPtr hIMC);
//The Function to get ResisterWord Styles
[DllImport("imm32",CharSet=CharSet.Auto)]
public static extern UInt32 ImmGetRegisterWordStyle(IntPtr hKL, UInt32 nItem, [Out] StyleBuffer[] lpStyleBuf);
//The Function to resister words
[DllImport("imm32",CharSet=CharSet.Auto)]
public static extern bool ImmRegisterWord(IntPtr hKL, String lpszReading, UInt32 dwStyle, String lpszRegister);
503 :
468:04/12/02 00:49:10
//The Function to delete resiterd word
[DllImport("imm32",CharSet=CharSet.Auto)]
public static extern bool ImmUnregisterWord(IntPtr hKL, String lpszReading, UInt32 dwStyle, String lpszUnregister);
//The Function to Get ForeGround Window
[DllImport("user32",CharSet=CharSet.Auto)]
public static extern IntPtr GetForegroundWindow();
//The Function to Get Keyboard Layout
[DllImport("user32",CharSet=CharSet.Auto)]
public static extern IntPtr GetKeyboardLayout(UInt32 dwLayout);
//The struct field used for "ImmGetRegisterWordStyle"
[StructLayout(LayoutKind.Sequential, CharSet=CharSet.Auto)]
public struct StyleBuffer
{
public UInt32 Style;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst=0x20)]
public string Description;
public override string ToString()
{
return string.Format("StyleID: 0x{0:X8} 品詞: {1}", Style, Description);
}
}
504 :
468:04/12/02 00:50:01
private void button1_Click(object sender, System.EventArgs e)
{
//辞書ボタン
IntPtr hWnd;
IntPtr hIMC;
IntPtr hKL;
hWnd=GetForegroundWindow();
if(hWnd==IntPtr.Zero)
{
MessageBox.Show("hWnd = "+hWnd.ToString());
return;
}
hIMC=ImmGetContext(hWnd);
if(hIMC==IntPtr.Zero)
{
MessageBox.Show("hIMC = "+hIMC.ToString());
return;
}
hKL=GetKeyboardLayout(0);
if(hKL==IntPtr.Zero)
{
MessageBox.Show("hKL = "+hKL.ToString());
}
505 :
468:04/12/02 00:50:25
if(ImmSetOpenStatus(hIMC,true)==false)
{
MessageBox.Show("Can't Open IME");
}
if(ImmGetOpenStatus(hIMC)==false)
{
MessageBox.Show("IME not Opened");
}
UInt32 count = ImmGetRegisterWordStyle(hKL, 0, null);
StyleBuffer[] buffers = new StyleBuffer[count];
count = ImmGetRegisterWordStyle(hKL, count, buffers);
foreach (StyleBuffer buffer in buffers)
Console.WriteLine(buffer.ToString());
506 :
468:04/12/02 00:51:23
if(ImmRegisterWord(hKL,"へけけ", buffers[0].Style,"へけっしゅ")==false)
{
MessageBox.Show("Can't Resister Word");
}
//登録したけど、やっぱ消す。
//2重登録はエラーになるからめんどい。
if(ImmUnregisterWord(hKL,"へけけ", buffers[0].Style,"へけっしゅ")==false)
{
MessageBox.Show("Can't UnResister Specific Word");
}
if(ImmReleaseContext(hWnd,hIMC)==false)
{
MessageBox.Show("can't release IME Context");
}
MessageBox.Show("最後まで到達");
}
死ねと言われる前に他所に行くなり諦めるなりしたほうがいいぞ
509 :
デフォルトの名無しさん:04/12/02 01:44:35
頭の悪い質問なのですがunmanaged codeのDLLをインポートしたときの
デバッグについて質問なのですが、DLL側ではスレッドを起動している以外はごくごく普通のCとC++をラップした
APIの構成になっているのですが、デバッグするとほぼ確実にunmanaged code
メソッド周辺で落ちるのですがこれは、呼び出しがそもそもいけないのでしょうか?
その辺のサンプルに乗っているのと同様にDllImport文法を利用しているにすぎず
特殊なことは一切しておりません。原因がDLL側にあるのかC#のほうの呼び出しに問題があるのか
切り離せず苦慮しています。何かいい知恵授けてください。
DLLでデバッグするようにしてどこまできてるかとか確かめてみたら?
511 :
デフォルトの名無しさん:04/12/02 03:02:14
デバッグしないと正常に値が出し入れできるので頭が痛いのです。
デバッグしたときだけ落ちるので、何がいけないのか良くわからない状況です。
単体デバッグだけならDLL、C#とも何も起きません。
だったらまずリリースにしてDLL側でログはくようにしろよ。ファイルでおきなかったら、共有メモリにはく。
513 :
468:04/12/02 08:57:11
すみません、削除依頼出しておきます。
すみません。
514 :
468:04/12/02 12:02:28
削除願い、今朝提出させていただきました。
ご迷惑おかけしました。
どうでもいいけどMSのドキュメントってなにげに良質じゃない?
開発環境は良質
之は(・∀・)イイ!!
517 :
デフォルトの名無しさん:04/12/02 12:15:27
.NETのリファレンス級のマニュアルがあれば
すぐLinux+GCC+KDEにころぶが・・・そうはいかないからなぁ
518 :
デフォルトの名無しさん:04/12/02 12:35:30
PCに割当てられてるグローバルIPを取得するには、どうやったらいいですか?
同時に、ネットにつながってない場合、192.0.0.1を取得するようにしたいんですが。
>>515 良質。メソッド毎のサンプルも結構あるし。
MSってドキュメンテーションにすごいお金かけてるよね。Platform SDKなんかの
古いAPI のドキュメントも未だにメンテナンスされ続けてるし。
ちゃんと外からのフィードバックを反映する体制が出来てるんだろうなぁ。
520 :
デフォルトの名無しさん:04/12/02 15:25:48
画像ファイルを、バイナリデータとして
文字列で取得したいんですが
どうすればいいですか。結果的には0と1の文字列にしたいのですが・・。
>>520 FileStreamで開けてバイトを読み出してConvert.ToStringで二進数にしてPadLeftで左を0で埋めてStringBuilderにAppendしていく。
522 :
520:04/12/02 16:16:07
>>521 ありがとうございます。
StringBuilder sb = new StringBuilder()
// ファイルをbyte型配列としてすべて読み込む
FileStream stream = new FileStream( "c:\gatou.jpeg", FileMode.Open, FileAccess.Read );
byte[] bt = new byte[stream.Length];
int len = stream.Read( bt, 0, (int)stream.Length );
stream.Close();
for( idx=0; idx < len - 1; idx++ )
{
sb.Append(Convert.ToString(bt[idx]).PadLeft(8,Convert.ToChar("0")))
}
523 :
デフォルトの名無しさん:04/12/02 17:14:43
SSL関連のクラスが見当たらないんだけど、SSLで接続するにはどうしたらよい?
>>523 ms-help://MS.NETFrameworkSDKv1.1.JA/cpguidenf/html/cpconUsingSecureSocketsLayer.htm
C#のADO.NETをつかって、MS-ACCESSのテーブル一覧を取得するにはどうしたらよいのですか?
527 :
デフォルトの名無しさん:04/12/02 18:17:22
>>526 書店にいくと、ADO.nETとAccessに関する
良本がたくさん出版されています。
だから聞くなとは言いませんが、包括的に学習するためにも
購入されてみてはいかがでしょうか。
528 :
デフォルトの名無しさん:04/12/02 18:57:22
ディスプレイ全体のスクリーンのキャプチャを取ろうとしているのですが、
下のコードではアクティブウインドウのスクリーンしか取れません。
なにがいけないのでしょうか?
SendKeys.SendWait("{PRTSC}");
Bitmap bmp = (Bitmap)(Clipboard.GetDataObject().GetData(DataFormats.Bitmap));
サンプルコードつけてくれる所がうれしいね
>>526 あきらめてADODB.ConnectionとADOX.Catalogで、
>>528 Shift(+)かCtrl(^)付け加えると良いよ。
(´・ω・`)放置プレイ
とれました。ありがとうございます。
C#というか.NETframework環境でのマルチスレッドについて書かれた書籍はないでしょうか?
>>524-525 なるほど。。。
でもSMTPで使いたいんですよ…。
MSDNのそのページはhttpsを前提にしているけど。
538 :
デフォルトの名無しさん:04/12/03 14:18:10
Ethernet実装したいけど、よくわかんないよ〜
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
∧_∧
( ´Д⊂ヽ
⊂ ノ
人 Y
し (_)
参考になるサイトキボンヌ
WDMデバドラ入門
540 :
デフォルトの名無しさん:04/12/03 17:33:52
MDB内にある取得クエリ(リライト却下された)を動かし、
その結果をDataTableで扱わねばならんのですが、最適な方法がわかりません。
とりあえずCOMに参照設定してクエリ動かすまではやりました。
一度AccessインスタンスをSaveAllで落としてからOleDbConnectionで繋ぎにいくべき?
もっといい方法ってあるんでしょうか。
C#使ったことないんですけどオートメーションサーバー作りたいんですけど、簡単に作れますか?
いいページとかないですか。
>>540 dao.Database l_Database = CurrentDb();
とやってもいいし、オートメーションに用がなければ終わらせてから
daoで単独に開いてもいい。
544 :
デフォルトの名無しさん:04/12/03 18:46:36
ATL/WTL
英語が苦手だから間違ってるかもしれないけどクライアントの方じゃなくてサーバーのほうが楽に作れるか知りたいんです。
埋め込みとかまでやる複雑な奴じゃなくて
WSHのVBScriptとかから呼び出して操作できる奴。
<SCRIPT LANGUAGE="VBScript">
Dim app
set app = CreateObject("MyApp")
app.hello()
</SCRIPT>
みたいにVBScriptから生成して実行できるMyAppみたいなやつです。
>>542 をつけるの忘れてた。
レスどうもありがとうございました。
ATL/WTL
Apple Talk Library / Winsock Type Library
549 :
540:04/12/03 19:13:39
>>543 レスありがとうございました。
DAOで取得することにします。
STAThread属性について教えて下さい。
過去ログとMSDNを参考になんとなくは理解出来たような気はするのですが、
CLRのスレッドの管理方法にはMアパートメントの概念そのものがないですよね?
[STAThread]は、あくまでCOM側から見た場合、
擬似的にアパートメントを作ってるような感じなのでしょうか?
GUIアプリでスレッドを沢山使う必要があるのですが、
Windowsフォーム以外のオブジェクトもスレッドに結び付けられてしまうのでしょうか
>>550 >>552 どうも有り難うございます。
そういうことが知りたかったです。
まだC#知らなくてこれから勉強するんだけど。
555 :
468:04/12/04 00:33:24
tp://www.akadia.com/services/dotnet_arraylist_datagrid.html
このサイトを参考にプログラムを作ったのですが、
cs.Width = colwidth;
を、
cs.Width = 15;
に変えてみたにも関わらず、
datagrid1上(フォーム上)では、列の幅が反映されません。
また、列(column)が複数あるのですが、
列の並び順番が、左から列名の若い巡になってしまいます。
[Zoo] [Price] [Popularity] [enterprise]
という列名を、上記ソースを参考に用意しようとしても
[enter..] [Popu..] [Pri..] [Zoo]
といったようにアルファベティカリになってしまいます。
1 列幅設定の反映しない理由
2 列名をアルファベット順に勝手に並べ替えない方法
に関して、教えていただけませんでしょうか。
Googl、MSDNで調べても
なかなか理解できません。
お願いします。(・人・)
556 :
デフォルトの名無しさん:04/12/04 00:34:10
↑すみません、前の番号が残っていました。
また468か!
558 :
555:04/12/04 01:43:07
↑はい、重ね重ね申し訳御座いません。
どっちも再現しないと言うかコード通りになったので答えようがないな。
ま、どうせ変なコード書いたんだろ。
質問です。
public struct data
{
public int[] ge; public double x;
public double ev; public string id;
}
data[] gen = new data[8];
method()
{
if(){
gen[4].ge=gen[1].ge; baf=gen[4].ge;
}
if(){
gen[4].ge=gen[2].ge; baf=gen[4].ge;
}
if(baf[a]==1) baf[a]=0;
else baf[a]=1;
}←ここの時点でのデバッグ時の質問です。
簡略化して書いてますがデバッグで値を追ってみたところ、
このようなときbaf[]の配列がgen[1].geやgen[2].geにも反映されてしまっています。
参照型や値型、クラスや構造体など調べてみましたが自分の力では
解決することができませんでした。
おかしなところあればご教示願います。
>>560 読みづらいコード書くね……。
> gen[4].ge=gen[1].ge;
> baf=gen[4].ge;
gen[4].geとgen[1].geが同じオブジェクトを参照するようになる。
bafとgen[4].geが同じオブジェクトを参照するようになる。
よってbafとgen[1].geは同じオブジェクトを参照するようになる。
配列を代入したって配列の参照をコピーするだけで要素はコピーしない、というのは基礎の基礎だぞ。
要素ごとコピーしたいならCloneメソッドとか使う。
>>561 に補足
ge & buf は Array クラスのサブクラス int[] のインスタンス
インスタンスなので = 演算子では参照がコピーされる
baf = gen[4].ge; の瞬間、gen[4] と baf は同じ int[] のインスタンスを指す事になってる
だから変更されないようにするには baf = (int[]) gen[4].ge.Clone(); とする
ただし、ge がもし参照を格納する配列だったら、さらに一手間かける必要があるかもしれない
これより先は『浅いコピー』『深いコピー』で調べるよーに
>>562をちょいと修正
> ge & buf は Array クラスのサブクラス int[] のインスタンス
> "クラスの"(=構造体でない)インスタンスなので = 演算子では参照がコピーされる
560です。
読みづらいのは縦長になるのはちょっと迷惑かなと思ったのですが
逆に読みづらくなりましたね。申し訳ありません。
まだプログラム書き始めて間もないのでいろいろ教えられることが多いです。
問題のことですが迅速な対応をしていただいてありがとうございます。
早速調べてみて解決してみたいと思います。
スレ汚し失礼しました。
>>563 すまぬ。構造体もインスタンスと呼ぶんでしたな
クラスを複製したいのですが、
stringなどはクラス=参照系だからそのまま代入したらダメですよね。
ということはCloneクラスから全てのプロパティを コンストラクタにわたして〜ってことをしないといけませんが、
クラスの全てのプロパティを設定するためのメソッドorコンストラクタを用意しないといけず、
非常に面倒です。
何か代案はありませんか?
>>566 びみょ〜にひょ〜げんがおかしいが
string はヒープに確保されるから参照型だけど、
変更できないオブジェクトだからコピーしなくても問題ないです
というか Clone クラスなんて無い
>>566 まて
もしかしたらインスタンスじゃなくてクラスを複製する話をしているのか?
そうじゃなかったら Clone メソッド内を整備すればいいやん
ちなみに浅いコピーで良いならObject.MemberwiseCloneメソッドでCloneを実装するだけで済む。
571 :
デフォルトの名無しさん:04/12/04 23:02:37
GDNJSにあるもぐらたたきを改造しています。
モグラコントロールをtimerで一定時間ごとに移動させています。(this.leftを操作)
すると、Ctrl+F5で実行させると、コードデザイナに配置したコントロールまで移動してしまいます。
この超霊現象をなんとかしたいんですが、なんとかなりませんか?
572 :
デフォルトの名無しさん:04/12/04 23:14:45
>>570 超高級言語しかさわったことのないバカにはわかりません
たしかに
>>566 は超高級言語(日本語)を分かってないみたいだ。
574 :
デフォルトの名無しさん:04/12/05 00:33:35
ttp://vbdotnet.fc2web.com/csharp/control/DataGrid03.htm DataTable dt = (DataTable)dataGrid1.DataSource;
指定されたキャストは有効ではありません
って言われてしまいます。なぜなのでしょうか。
DataTable dt = (DataTable)_mydatagrid.DataSource;
MessageBox.Show("行の総数 = "+dt.Rows.Count.ToString());
をしてもだめみたいです。
MessageBox.Show("現在_datagrid1は「" + _mydataset.Tables["_mytable"].Rows.Count.ToString() + "行あります。」");
これをすると、Nullreferenceとなります。
private System.Data.DataSet _mydataset;
private System.Data.DataTable _mytable;
private System.Windows.Forms.DataGrid _mydatagrid;
private System.Windows.Forms.DataGridTableStyle _mydatagridtablestyle;
this._mydatagrid.DataMember = "_mytable_name";
this._mydatagrid.DataSource = this._mydataset;
DataSourceにDataSetを使ってるんだからDataTableにキャストなんかできるわけなかろ。
Tablesの引数もDataTableを格納する変数名とDataTableの名前を混同してるようだし。
サンプルを参考にするのは良いが訳も分からず引き写すのは感心しないな。
576 :
574:04/12/05 00:59:21
夜分遅くに的確なアドバイス、ほんとうにありがとうございます。
確かにDataSourceには、_mydatasetも、_mytableも選べましたが、
ttp://ukamen.hp.infoseek.co.jp/Programming1/DataGrid/index.htm を参考に後者にしていました。
僕はてっきり_mydatagrid.DataSource.DataMemberのような
構造だとばかり思っていました。
(Datamemberの意義がよくわかってないのかも・・・)
Tablesの引数に関してのアドバイス、ありがとうございます。
この引数はヒントで、string name と書かれてありました。
_mytableのnameですから、_mytable_nameにしたら、うまくいきました。
ほんとうにありがとうございました。
577 :
574:04/12/05 01:05:22
DataTable dt = ((DataSet)_mydatagrid.DataSource).Tables[_mydatagrid.DataMember];
MessageBox.Show("行の総数 = "+dt.Rows.Count.ToString());
一歩成長したような気がしました。
dt.Rows.Count.ToString()
ToString()はイラネ
>>578 君はstringとintを平気で足せるような型の弱い人か。
ToString()はイラネ
くらだないので一応言っとくと、
stringとintを平気で足せるような型の弱い奴というのは、ToString()を自動で補完してくれるC#のことです。
曖昧さがなければ型がゆるくっていいよ
584 :
574:04/12/05 01:49:02
DataTable dt = ((DataSet)_mydatagrid.DataSource).Tables[_mydatagrid.DataMember];
DataRow dr = dt.NewRow();
dr[_column1] = 7;
dr[_column2] = "挿入部";
dr[_column3] = "109";
dt.Rows.InsertAt(dr, 7);
はぁ、なんでInsertAtがAddと同じような振る舞いしか
してくれへんのやろ ○rz...
dt.Rows.Countが10行以上あるのに・・・.ToString();
"dt.Rows.Countが10行以上あるのに・・・".ToString();
ここでもやっぱりToString()はイラネ、だな
> dt.Rows.Countが10行以上あるのに・・・.ToString();
チョットワロタ
ListView の View を View.Details にして、
そのマスに棒グラフ(矩形)を描画したいのですが、
可能でしょうか?
C++で #define MAX 100 っていうのは、C#ではどう書くんですか?
constででも宣言しときな。
レスありがとうございます。
やっぱりそうなるんですね。
全てのクラスで共有される定数だけを集めたクラスを作りたいんですが、どうしたらいいんですか?
static constは駄目なんですが・・・。
class A
{
//他のクラスから、A.aaaという形で呼び出したい。かつ変更不可にしたい。
public static const int aaa = 123;
}
constは暗黙的にstaticなのでstaticキーワードはいらない。
>>403 遅れましたがありがとうございます
private static int TimerID;
private static uint TimerDiff;
private struct TIMECAPS
{
public uint wPeriodMin;
public uint wPeriodMax;
}
private delegate bool TimeProcDelegate(int uID, int uMsg, int dwUser, int dw1, int dw2);
[DllImport("winmm.dll")] private static extern void timeBeginPeriod(uint x);
[DllImport("winmm.dll")] private static extern int timeGetDevCaps(ref TIMECAPS lpTimeCaps, int uSize);
[DllImport("winmm.dll")] private static extern int timeSetEvent(uint uDelay, uint uResolution, TimeProcDelegate lpFunction, int dwUser, int uFlags);
public static void Test()
{
TIMECAPS tc = new TIMECAPS();
timeGetDevCaps(ref tc, Marshal.SizeOf(tc));
TimerDiff = Math.Min(Math.Max(tc.wPeriodMin, 5), tc.wPeriodMax);
timeBeginPeriod(TimerDiff);
TimeProcDelegate tpd = new TimeProcDelegate(Timer);
TimerID = timeSetEvent(5, TimerDiff, tpd, 0, 0); // TIME_ONESHOT = 0 1回だけ呼ぶ
}
private static bool Timer(int uID, int uMsg, int dwUser, int dw1, int dw2)
{
TimeProcDelegate tpd = new TimeProcDelegate(Timer);
TimerID = timeSetEvent(5, TimerDiff, tpd, 0, 0); // TIME_ONESHOT = 0 1回だけ呼ぶ
return true;
}
596 :
394:04/12/05 14:45:38
マルチメディアタイマを使いたいんですが
これでTest()を実行すると、
何もしなければ大丈夫なんですが
MouseMoveなど他のイベントが何回か発生したときに
'System.NullReferenceException' のハンドルされていない例外が 不明なモジュールです。 で発生しました。
追加情報 : オブジェクト参照がオブジェクト インスタンスに設定されていません。
現在のソースコードの場所を特定できません。
になります。
タイマは別スレッドで動くらしいですがその使い方がおかしいのでしょうか。
> 呼び出すメソッドのポインタへの参照
馬から落馬だよ……。
呼び出すメソッドのポインタの間違い。
599 :
デフォルトの名無しさん:04/12/05 17:21:27
ノータッチデプロイメントをしようとして、作成したexeファイルをアップ。
エラーがでたので、ためしに、新しいプロジェクトでフォームしかない
プログラムを作成して、アップやっぱりエラーが・・・。どういうことなんでしょう?
エラーは「System.Security.Policy.PolicyException がDomain2で発生」
開発環境は「Visual c# .Net 2002」で、サイトに存在するノータッチデプロイメントの
プログラムはきちんと動作しますので、.Net frameworkのセキュリティはOKだと思うのですが
C#(.NET)でReal PlayerのactiveXを使って
rmファイルを再生すると、再生時に一瞬
real社のロゴが表示されるのですが、
これを非表示にする方法はないでしょうか?
(ちょっとC#とは関係ないような気もするのですが・・・)
ほかのフリーのプレイヤソフトなどだと、
こういうロゴが表示されないのですが、
もしかしたら、別の方法(RealPlayerのactivex使ってではない)
があるのでしょうか?
もしかして、そっちの別の方法が一般的だったり。。
602 :
デフォルトの名無しさん:04/12/05 17:47:14
はい。大丈夫です。一度、セキュリティを最低にていみましたが、
同じエラーでした。
ん〜、試してみたけど、.NET1.0のアセンブリの場合
・デフォルト:PlicyExceptionがDomain2で発生
・.NETウィザード>.NETセキュリティの変更>このコンピュータへの変更を行う>インターネット が信頼無しになってるのを確認
・一段階信頼を上げてウィザード完了 >問題なく起動
と言う事になったけど?
Waveファイルを再生したく思います。。。
PlaySoundを使って、普通に再生する ということは出来るんですが、
リソースに追加されたWaveファイルを再生することが出来ません・・・。
リソースから読み込む方法が良くわからず
PlaySoundの引数に何を渡せばいいのやら・・・
ご教授お願いします
もしやウサギさんですか?
1).rcで記述したリソーススクリプトをリソースコンパイラに食わせ、
/win32resでくっつけてエイリアス名とSND_RESOURCEフラグで実行する
2)リソースをbyte配列に読み込み、GCHandle(このスレに使い方が書かれてる)でラップして
ポインタとSND_MEMORYフラグで実行する
>>607 文字列の加算は全て StringBuilder.Append で行っているんだっけか?
>>607 ハァ?
自分じゃ何も試せないチンカスでつか?
610 :
584:04/12/05 22:38:13
放置プレイ・・・(T_T)
取り合えずildasmしろ、話はそれからだ。
明示的に文字列結合として書いてないという問題以外に
ToStringしてないと場合によっては予想外にボクシングしまくることもある。
そもそもあんたがプレイしていた事に気付かなかった。
584で(自己)完結してるじゃん。
>>609 自分の聞きたい話だけを聞いて生きていくならそうすればいい。
ずーっと間違ってろ。おまえに情報をやる義理もないしな。
ToString以外でも、構造体にインタフェイスを実装させるときとか気をつけないといけないよな。
予想外のボクシングで効率落ちたりとか、結果が反映されなかったりとか。
初心者の質問ですみません。
スクリーンキーボードと同じ機能のアプリを作ろうとしています。
「あ」〜「ん」までの50音分のボタンを用意して、「い」のボタンを押すと
テキストボックスに「い」が代入される。というのを作ったのですが、これは
平仮名が代入されるだけで、漢字変換しようと思ってもできませんでした。
自分でキーボードイベントを起こしてやらないといけないんじゃない?
とアドバイスをもらったのですが、具体的な方法が分かりません。
考え方だけでもご存知の方が居ましたら、教えてください。よろしくお願いします。
IMEかんれんをしらべてみよ
617 :
584(再度失礼します):04/12/06 00:28:33
DataTable dt = ((DataSet)_mydatagrid.DataSource).Tables[_mydatagrid.DataMember];
DataRow dr = dt.NewRow();
dr[_column1] = 7;
dr[_column2] = "挿入部";
dr[_column3] = "109";
dt.Rows.InsertAt(dr, 7);
と記述して、RowIndex=7 のところに
new Rowを挿入したいのですが、結果として
リストの最終行に「追加」されるだけで、うまく明日してくれません。
「挿入」というからには、当然予め挿入される行番号よりも
多くの行を事前に用意してあります。
ところで、予め列ヘッダをクリックして数度(少なくとも1度)
ソートを実行しておくと、dr[_column1] = 7; という記述により
挿入される値「7」が挿入時に自動ソートされているようです。
私のInsertAtメソッド記述周りの
どういった点が怪しいと思われますか?当人調査継続しておりますが、
お助け請いたく存じます。
618 :
584(再度失礼します):04/12/06 00:31:23
<<527
調べて無理そうでしたので、聞いてみました。
<<530
やはりそれしかないのですねえ。
>>617 Rowsコレクションの物理的な並び順はあまり意味を持たないようです。
キーでの並び順はDataViewで操作可能です。DefaultViewをいじってみました。
// データセットとテーブルの作成
_dataSet1 = new DataSet("TestDataSet1");
DataTable dataTable = _dataSet1.Tables.Add("TestDataTable1");
dataTable.Columns.Add("ID", System.Type.GetType("System.Int32"));
dataTable.Columns.Add("NAME", System.Type.GetType("System.String"));
dataTable.Columns.Add("LNAME", System.Type.GetType("System.String"));
// Primary keyを付ける
DataColumn[] pkey = new DataColumn[1];
pkey[0] = dataTable.Columns["ID"];
dataTable.PrimaryKey = pkey;
// デフォルトViewを変更
DataView dataView = dataTable.DefaultView;
dataView.ApplyDefaultSort = true; // Primary keyでソート
//dataView.Sort = "ID desc"; // Primary keyがないか別のキーでソートする場合
// DataGridにバインド
_dataGrid1.SetDataBinding(dataTable, "");
//_dataGrid1.SetDataBinding(_dataSet1, "TestDataTable1"); // こっちの表記だとうまくいかないようだ
622 :
617:04/12/06 12:35:39
>>621 サンクスコ 家帰って、復習します。
他にも何か代替策ございませんか?
>>554 横レスで一点補足。COM使ってないつもりでも、例えば STA 指定無しのスレッドで
いきなりProcess.Startで url を開こうとしたりするとエラーになったりする。
>指定しない場合は暗黙的にMainが属するのと同じアパートメントになるんだったかな。
明示的に設定しない場合は MTA だったと思う(1.1)・・
というか実験結果としてはMTA的動作になってた。ドキュメントは読んでないけど。
ライブラリの下のほうでこっそりCOM使われたりすることもあるから注意ってこと。
>>623 確かに属性無しとMTAThread属性だとurlでエラーになりますね。へ〜
少し脱線するけど、Processオブジェが何でSystem.Diagnostics(診断)
の下にあるんだろう。
.netのクラスライブラリの構造って不可思議なところがありますね。
ApplicationオブジェがなぜかSystem.Windows.Formsのしたにあって
はじめの頃ずいぶん探しました。
ライブラリごとに、完全CLI(移植性あり)、OS依存の機能あり、
COM呼んでる、APIじかに使ってる・・
といった区別がキチンとつくようにしてくれると助かるんですけどね。
ここはひどい.NET Frameworkですね
マネージドヒープはプロセス毎にひとつでしょうか、AppDomain毎にひとつでしょうか?
627 :
デフォルトの名無しさん:04/12/06 22:41:16
private Word.Application _wApp;
private Word._Document _wDoc;
private Word.Selection _wSel;
上記3インスタンスを規定どおりに開きました。
ここで、ワードを先に閉じられたことを検出するには、
どのインスタンスを確認すればよろしいのでしょうか。
イメージ:
if(_wDoc.Exist==true) _wDoc.SaveAs();
else _wDoc = null;
お願いします。
C#でwordを操作。
628 :
デフォルトの名無しさん:04/12/06 22:44:47
お願いします。c言語です。
0〜10までの整数を入力して、数を当てるゲームプログラムを作って下さい。
(ただし99を入力すれば終了)初めに自分の好きな整数を入力してから、
ゲームスタートです。
(実行例)
Input Your favourite Number 540000
3 ← ここから自分で 数を当ててみます。
more Upper
Input Your favourite Number 5
Congratulation!!
ヒントプログラムです。
#include <stdio.h> /* printf を使うために必要 */
#include <stdlib.h> /* 乱数を発生させる srand rand を使うために必要*/
void main( )
{
int myNumber;
printf("Input Your favourite Number"); scanf ("%d",&myNumber);
srand( myNumber );
int result = rand() / 3276 ; /* rand()は 0〜32767 の乱数を生成 */
int inputNumber = 0;
while(1){
scanf ("%d",&inputNumber);
if( inputNumber > result){ printf("more lower \n"); }
else if( inputNumber < result){ printf("more upper \n"); }
if( inputNumber == 99){ break; }
}
629 :
デフォルトの名無しさん:04/12/06 22:45:57
モーダルダイアログでShowDialog()で開いたウィンドウを
デスクトップで最前列に表示させ、且つアクティブ状態に
するには、どうすればよいのでしょうか。
form2.Activate();
form2.textbox1.Focus();
をform1でのShowDialog()直後に記述しても
表へ出てきませんでした。
(ちなみに、form1はホットキーで操作しています)
630 :
627:04/12/06 22:47:03
ワード文書を閉じるには
_wDoc.Close(ref oTrue, ref oMissing, ref oMissing);
でいけます。参考までに。
>>629 ShowDialog はモーダルダイアログが閉じられるまで帰ってこないので、
ShowDialog の直後に何か書いてもダメです。
form2.VisibleChanged += new EventHandler( this.form2_VisibleChanged );
とかしておいて、
private void form2_VisibleChanged(object sender, System.EventArgs e)
{
Form form2 = sender as Form;
form2.Activate();
form2.textbox1.Focus();
}
とか。
form2 ってのが自分で作ってるクラスなら、form2のクラス側で行うべきって気もする。
textbox1.Focus() なんてのは TabIndex を適切に設定すれば不要になると思うし。
>>631 それだと form2 が消えるときにも実行されるから、if (form2.Visible) とかで囲ったほうが良い。
634 :
629:04/12/06 23:03:41
>>631,632
いけたぜ、ブラザー。
サンクスコ☆
636 :
デフォルトの名無しさん:04/12/07 00:31:58
DataGridTextBoxColumnを継承した独自クラス作ったのはいいのですが、
OnPaintをoverrideしてセル単位で文字色を制御することはできました。
しかし行を選択すると、ベース呼び出しだと文字のForeColorがハイ
ライト表示になり黒だと白表示といったぐあいにRGB値が反転しているは
ずなのですが、overrideするとこの機能が失われてしまいます。
どのように基底クラスで実装しているから調べる方法知らないでしょうか?
>>636 フォーカスの有無に対するフラグを持たせて場合分けで描画する
とかいうことになるんじゃないかと。
639 :
デフォルトの名無しさん:04/12/07 01:04:21
string test = "ABCDEF";
while(test != 最後まで){
一文字ずつ取得
}
って処理C#だとどう書けばいいのですか?stream系いろいろあるけど
戻り値全部intだし困った困った。
foreach (char c in test) {...}
StringReaderとかなら返値のintはcharにキャストしてやればいい。
知らなかった……。
foreach (char c in test.ToCharArray()) ってやってたよ orz
>>641 [Serializable]
public sealed class String : IComparable, ICloneable,IConvertible, IEnumerable
接続可能なSQLサーバ一覧を取得しようとして以下を実行するとエラーになります。
SQLDMO.NameList sqlServers = sqlApp.ListAvailableSQLServers();
エラー
インターフェイス SQLDMO.NameList の QueryInterface に失敗しました。
SqlServerのSP3aは、入れてあります。
誰かわかる人教えてください。
644 :
デフォルトの名無しさん:04/12/07 10:44:21
<<643
ソース書き忘れ付け足し
SQLDMO.Application sqlApp = new SQLDMO.ApplicationClass();
SQLDMO.NameList sqlServers = sqlApp.ListAvailableSQLServers();
645 :
デフォルトの名無しさん:04/12/07 13:22:26
テキストファイルの特定行だけ読み込ませたいんだが
具体的なサンプルとかある場所ありませんか?
行単位で考える時点で先頭から内容を検証する必要が発生するわけで。
StreamReader.ReadLine()で読み込む行まで空読みすればいいじゃん。
645じゃないんだけど
空読みってどうやんの?
通常の読み込み
string line = streamReader.ReadLine();
空読み
streamReader.ReadLine();
読み込むだけ読み込んで結果は無視するってだけ。
649 :
647:04/12/07 14:26:49
あぁ〜なるほどね
なんか単純すぎて思いつかなかったわ
サンクス
>>645 あらかじめインデックス作っとくしかないでしょ。
651 :
627:04/12/07 16:11:30
放置しないで、ぐすん。
一般的には、コレクションにget_Itemなどさせ、目指すアイテムが見つからなかった場合nullを返す物だが。
653 :
627:04/12/07 17:54:19
>652
らじゃー、家帰ったら、やってみまっする。
サンクスコ。
654 :
デフォルトの名無しさん:04/12/07 18:02:10
VBでいうSendkeyはC#にはないのですか?
System.Windows.Forms.SendKeys
656 :
デフォルトの名無しさん:04/12/07 20:48:13
ドラッグ&ドロップでコントロールのサイズを変更するには
どのようにすればよいでしょうか?
具体的にはMSNメッセンジャーの、
文字を入力するテキストボックスのサイズを変えるような感じなのですが・・・
658 :
656:04/12/07 21:05:37
現在パネルとDockプロパティで、フォームのサイズ変更時の
引き伸ばしなど行っていますが、やはり、ドラッグでコントロールの
サイズを変更できればと思っているのですが(´・ω・`)
659 :
デフォルトの名無しさん:04/12/07 21:07:42
本の記述に、本書で使用されているサンプルコードは、
http://www.gotdotnet.com/ あたりで取得できると書いてある割には、
英語のGotDotNetに接続できません。
数週間前に試した時も駄目だったんですが、
もしかして、見えないのは俺だけですか?
『.NETでのテスト駆動開発』に載っているコードが欲しいのですが。
660 :
627:04/12/07 21:08:45
this.textbox1.Size.Width = this.Size.Width * alpha;
this.textbox1.Size.Height = this.Size.Height * beta;
this.textbox1.Location.NeverChange;
662 :
656:04/12/07 22:27:00
スケルトン試してみたいと思います。
ありがとうございました(^-^
663 :
374ありがとうございました。:04/12/07 23:35:19
皆様のおかげでようやくソフトが完成しました。
皆様には、
1. DataSet関係
2. Word操作関係
3. imm関係
4. HotKey関係
に関して、有益なアドバイスをたくさん頂きました。
特にimmに関しては、レスを無駄に増やすという
失態をしてしまい、大変ご迷惑おかけしました。
ここに改めてお詫び申し上げます。
いつかソフトつくりの壁にあたったときには、
心より宜しくお願い申し上げます。
ありがとうございました。
664 :
デフォルトの名無しさん:04/12/07 23:38:48
ソース見れば分かるんじゃないの?
666 :
デフォルトの名無しさん:04/12/07 23:46:54
For the sake of looking for a window which can make a dock
http://... I take advantage of the Dll presented at that URL,
While displaying a window with a button pushed,
is it possible to focus the window already shown ?
Thank you.
667 :
デフォルトの名無しさん:04/12/07 23:48:23
試しに、664を英訳ソフトで英訳してみました。
このソフト、もしよかったら紹介しましょうか?
それがC#製ソース付きなら是非とも。
そうでなきゃいらん。
669 :
デフォルトの名無しさん:04/12/07 23:57:27
DataGridで、任意のセルに配色やフォントの置換をするにはどのようにすれば
いいのでしょうか?
DataTable dt = new DataTable();などと作っていって
dt.Rows[][]で任意のセルを取ってくることはできますが、
オブジェクト型にキャストすればいいのでしょうか?
とってきてForeColor = Color.Redなどとしたいのですが。よろしく
お願いします
う〜ん・・・
DLL経由でないとウィンドウが表示されているかがわからない
ということでしょうか?
671 :
663:04/12/08 00:18:53
672 :
デフォルトの名無しさん:04/12/08 01:11:55
C言語でいうstructは、C#だとstructなんでしょうか?classでしょうか?
>>672 structだね。一応MSDN読んでclassとの違いとかを確認しといたほうがいいよ。
674 :
デフォルトの名無しさん:04/12/08 02:25:58
インスタンス名の指定に変数をつかって、インスタンスを多数作るには
どのようにしたらよいのでしょうか?
以下のような感じでdt_NNNの部分が変化する数百個のインスタンスを作りたいのです。
(dt_NNNの部分の文字列はstringの配列に入っています)
DataTable dt_123 = new DataTable();
DataTable dt_286 = new DataTable();
DataTable dt_NNN = new DataTable();
・・・
よろしくお願いします。。
そうまでして配列を使わない理由を小一時間(ry
興味アル方メールください
業務内容
サーバ・アプリケーションの設計・開発・運用・保守管理などの業務に取り組んでいただきます。
資 格
学歴不問25〜40歳位迄、下記項目中2項目以上の経験者が望ましい。
Java開発経験者(Tomcat等のJakarta Projectを利用した開発)
DB開発運用経験者(Oracle,PL/SQL,Pro*C,MySQL,PostgreSQLを利用した大規模DBの運用・開発経験者)
Linuxサーバの構築・運用経験者(bind,sendmail,qmail,ネットワーク一般、セキュリティ設定等)
システム開発プロジェクトマネージャー経験者
勤務地
東京都渋谷区
HttpWebRequest req = (HttpWebRequest)WebRequest.Create("
http://www.yahoo.co.jp");
HttpWebResponse resp = (HttpWebResponse)req.GetResponse();
MessageBox.Show("CharacterSet=" + resp.CharacterSet);
MessageBox.Show("Contents Encording=" + resp.ContentEncoding);
とかやっても、CharacterSetとかContentEncordingが取得できません。
この後で、StreamReader使って読み込みたいと思っても、Encodeがわからないので、
日本語のページでは困った事になってしまってます。
これらの簡単な解決方法はないのでしょうか?
HeaderのContent-TypeでCharacterSetまで定義している場合は少ないと思うので、
やっぱり行単位で読み込んでいって、Metaタグで判定してから変換とかになるのですかね?
なんかお知恵をください。
>>674 Hashtable hash = new Hashtable();
hash["123"] = new DataTable();
hash["286"] = new DataTable();
hash["NNN"] = new DataTable();
・・・
DataTable tbl = (DataTable)hash["xyz"]
>>678 簡単な解決があったらブラウザが文字化けする事も無くなってしまうわな。
>>681 ググってみたけど、「最新のサービスパックを充てろ」って書き込みが多い。
漏れは使ったことないからよく分からんけど。
683 :
デフォルトの名無しさん:04/12/08 14:49:47
タブコントロール内でPictureBoxを描画する場合、タブコントロールを
Refreshしなければ描画の表示がうまく表示されないのですが、
リフレッシュさせずに描画を表示させるのはどのようにすればよいのでしょうか?
普通はPictureBoxをInvalidateするものだが。
685 :
デフォルトの名無しさん:04/12/08 15:35:37
684
それを使って描画しているのですが…
今やってみると、なんだか描画できたりできなかったりです。汗
tabPageのRefreshとUpDateとInvalidateはどう違うのかが
わからないです…
Invalidate ⇒そのうち OnPaint や何かが動いて再描画される。
Update ⇒ Invalidate されていたら、すぐ再描画する。
Refresh ⇒ Invalidateしてすぐ Updateする。
686
なるほどです。
タブコントロール上でアニメーションやタイマーイベントで描画する場合、
アップデートで十分という解釈でよろしいのでしょうか
今までリフレッシュでやっていたんですが、
どうしても画面がちらつくのが…
俺、FlashでアクションスクリプトつかってHPとかつくったことのある人です。
C#をつかってwindows用のアプリケーションを作りたいと思ってアカデミックかってみたはいいが、アクションスクリプトにくらべてクラスとか種類が多くて大変だね。
1冊本つかって勉強してるんだけど、ひたすらサンプル作ったり問題といたりして土台みたいなの身につきますか?
将来的にはwebアプリケーションみたいなのつくたいんよ。
>>690 2冊目を買ってからのほうが良いよ。一冊で補完しきれない部分とか結構あるから。
>>691 アドバイスTHX。
年末にかけてマターリやってみますヽ(´ー`)ノ
693 :
デフォルトの名無しさん:04/12/08 19:02:46
695 :
デフォルトの名無しさん:04/12/08 20:45:04
C#でディスプレイに落書きするソフトを作りたいのですが、
どのAPIを使えば出来そうですか?
696 :
デフォルトの名無しさん:04/12/08 21:18:32
大きなフォームを作る。
→透過色を適宜設定
→MouseMoveとかで描画
697 :
683:04/12/08 22:28:56
Paintで描画して、Invalidateで再描画しております。
他に描画する方法がありますでしょうか?
>>697 ちらつくのはInvalidate()じゃなくてPaintで描画しているせい
バッファリング汁
yes
フォームのダブルバッファリングは知っていたのですが、
ピクチャーボックスにもあったんですね。
皆様ありがとうございました。
>>699 その辺を自前でやるのなら、PictureBox じゃなくて単純なPanelを使ったほうが
考慮すべきことが減ってラクですよ。
昔ダウンロードしたファイルを、どこからダウンロードしたか調べられませんか?
元のurlとかの情報はWindowsには保存されてないんでしょうか?
704 :
デフォルトの名無しさん:04/12/08 23:35:21
Panelに描画していくということでしょうか?
>>702 「パネルがちらつきます。ダブルバッファリングしてるのにどうしてでしょうか?」
とかいう質問に3000マリネラ
>703
オレは少しでも役に立ったページは必ずお気に入りに登録するが。
code projectなどは記事毎にお気に入りに登録してるしな・・・
708 :
デフォルトの名無しさん:04/12/09 00:46:52
HttpRequestクラスを継承したクラスを作成したいのですが、
コンストラクタ定義した時点で、引数があるにもかかわらず、
HttpRequestに引数は0このメソッドはありませんと出てしまう。
何がいけないのでしょうか?
やりたいことは、Headerの予約されている要素をデータを設定し
た以後でも自由に改変したいのです。元の動作では、そのまま用意されている
プロパティに値突っ込んでやるとランタイムエラーメッセージが出てしまう。
その仕様を無視させたいので継承したいだけです。
ヘッダー自由に作成できる別クラスがあればそれでもいいのですガ....
クラスを継承させる場合、基底クラスのコンストラクタが自動的に呼ばれる。
実行されるコンストラクタは指定しない場合基底クラスのデフォルトコンストラクタ(引数無しのコンストラクタ)だ。
で、HttpWebRequestはデフォルトコンストラクタ持ってないから。
じゃあ引数付きのコンストラクタはどうかというと、2つあるのはどっちもinternal。
唯一のprotectedコンストラクタはISerializable用の.ctor(SerializationInfo, StreamingContext)。
事実上、好き勝手な継承はできない。
ところで
>データを設定した以後でも自由に改変したいのです。
ってのがよくわからのだが。
710 :
デフォルトの名無しさん:04/12/09 01:24:07
何に対して偽装するんだ……?
712 :
デフォルトの名無しさん:04/12/09 02:18:53
Expect Date Host等のヘッダ情報を書き換えれればいいだけなのですが
>>693 おぉ。ありがとうございます。明日書店で拝見させていただきます。
693さんは、かなり経験豊富みたいですねぇ(〃▽〃)
714 :
デフォルトの名無しさん:04/12/09 08:56:10
hoge
>>710 開始した後は変更できないよ。だってもう先方にリクエスト送っちゃってるもの。
716 :
デフォルトの名無しさん:04/12/09 23:11:20
Explorerを「詳細」にするとListViewみたいな感じになりますよね。
そのタブの部分が右クリックで表示を切り替えられるようになっていますが
C#のListViewでおなじことをするにはどうしたらよいですか?
717 :
デフォルトの名無しさん:04/12/09 23:19:46
718 :
デフォルトの名無しさん:04/12/10 00:24:00
タブコントロールで、
その中にタブページを表示すると、その背景がフォームの色になってしまいます。
WindowsXPで、ほかのソフトとかWindowsの設定ダイアログとかを見ると、
タブページの背景はグラデーションがかったものになってます。
こうするためにはなにか設定が要るんでしょうか?
EnableVisualStylesとかしてもダメでした。
719 :
デフォルトの名無しさん:04/12/10 11:24:55
CGIへデータをPOST(ENCTYPE="multipart/form-data")するシステムを作成しています。
画像ファイルを送りたい場合、バイナリになりますが
一体どのようにコーディングすれば宜しいでしょうか
721 :
719:04/12/10 12:47:00
>>720 481のことでしょうか?ちょっと異なるのですが・・・。
じゃあ何がどう異なるのかを説明しなよ。
>719の記述は曖昧に過ぎる。RFCを読めとしか言いようがないさ。
723 :
719:04/12/10 13:12:29
すいません。
CGIへPOST(ENCTYPE="multipart/form-data")するシステムを
作っています。
WebRequestクラスを使って、POSTへデータを投げようと
思うのですが、POST文字列をどのように作成すれば良いのか
分かりません。
ヘッダーも作る必要があるのでしょうか
実際に何を送ってるのか分からないと言うのなら、ブラウザで送信してみてそれをパケットキャプチャとかしてみる。
726 :
デフォルトの名無しさん:04/12/10 18:05:17
DataSet
DataTable
DataGrid
DataGridTableStyle
に関する質問です。
DataGrid.Source が DataSetであって、
DataGrid.Member が DataTableです。
DataGrid上でDataSetをSortすると、
「DataGrid上でMouseUp.HitTestで取得した行番号」
と、
「そのMouseUpされた行の内容が収められているDataTable内での
行番号」
が一致しません。
ソートしなければ、一致します。
ソートすると、HitTestで検出する行番号が
実際のデータではなく「DataGridに表示された表向きの行番号」
となってしまうのです。
これは、いかにして解決すべきでしょうか。
先輩方、先生方、どうぞよろしゅうお願いいたします。
727 :
フナ太郎:04/12/10 18:10:29
もうちっとデータグリッド使い勝手よくなんねーかなー
だからこそのDataGridView。
……多機能すぎて使い勝手の面であんまりよろしくないな。
730 :
デフォルトの名無しさん:04/12/10 18:23:48
C#で、文字列作成してますが
"を文字列として出したい場合、どうしたらいいんですか
こんどVC#を始めようと思うのですが、お勧めの本を教えてください。
ちなみにVBはやったことがあります。
リア厨でお金が無いんでこれ一冊でIDEの使い方からコンソール、GUIまでOK!みたいなヤツをお願いします。
常時接続環境があるなら、ネットにあるので割と十分。
>>732 じゃあ、一番オススメなのはなんですか?
>>733 一応繋ぎ放題ですがAirH"なんですよ。
結構厳しいです。
>>734 む〜……
「IDE」「C# の文法」「GUI」のどれがいいか、せめて選んでくれぬか?
736 :
デフォルトの名無しさん:04/12/10 18:54:36
737 :
736:04/12/10 18:57:12
741 :
デフォルトの名無しさん:04/12/10 19:43:13
C#でVNCみたいなソフトを作ろうとしているのですが、
windowsにマウスクリックイベントを送信する方法ってわかりませんか?
742 :
デフォルトの名無しさん:04/12/10 19:49:40
わかりません
あーーーーー癖でAPIを答えてしまったorz
吊ってきます・・・
745 :
726:04/12/10 19:56:21
・・・放置しないで・・・たのむ・●rz
dllたたくしか方法はないのでしょうか?
749 :
デフォルトの名無しさん:04/12/10 20:25:30
>>748
うん
レスどうもです。残念です。
751 :
726:04/12/10 20:43:12
>>741 P/Invokeでmouse_event。
#か♯どっちなんですか?
# が正解。
755 :
デフォルトの名無しさん:04/12/10 21:45:41
>>754 (゚Д゚)ハァ?
C# C# C♯ C丼 C井 C++++
↑
どうかんがえてもこれだろ
┌ ++
└ ++
757 :
726:04/12/10 22:01:36
>>747 THe Problem has been resolved.
外人が考えたんだからASCIIで表現できるに決まってる。
よって「C#」で決まり。
759 :
デフォルトの名無しさん:04/12/10 22:19:05
CωはASCIIじゃないですが・・・
ガラパゴス日本的には♯でいいよ
761 :
デフォルトの名無しさん:04/12/10 23:34:11
おれだけのC♭
762 :
デフォルトの名無しさん:04/12/10 23:36:37
ωって、英語のOSでも表示できる?
C# ではなくて Visual Studio の質問になってしまいます。
スレ違いであれば誘導お願いします。
あるプロジェクト ABC は EXE で、別の DLL XXX を呼びだそうとしています。
ソリューションで ABC のみ存在している状態で XXX のプロジェクトを追加して
参照の追加で、XXX プロジェクトを追加しようとすると
dll のみが追加できるといったメッセージが表示されて参照の追加ができません。
これとは別で同じように EXE から DLL を呼び出すプログラムでは
EXE ファイルのソリューションにその DLL のプロジェクトを追加して
参照の追加で問題なくプロジェクトを追加できています。
このように、参照の追加でプロジェクトを追加できる場合とできない場合
があって困っているのですが、何が原因で参照の追加にプロジェクトを指定
できないのかわかりません。その為に EXE から呼び出して使用したい
DLL のデバッグができずに困っています。
何かお気付きの点がある方は教えてくださいませんでしょうか?
よろしくお願いします。
実はXXXの出力がWindowsアプリケーション/コンソールアプリケーションになってるとか。
それは確認したのですが、クラスライブラリになっています。
どうしてもその XXX だけがプロジェクトを参照の追加で選択できないんです。
何がいけないのかわからない…。誰か助けてください....
766 :
デフォルトの名無しさん:04/12/11 00:08:24
>>762 ギリシャ文字だから表示できるにきまってるだろう
数学じゃπとか使うし
>766
>π
最近じゃラーメン吸ってるようにしか見えなくなってきたorz
ワロタ。そのあほな発想めちゃ好きや
769 :
デフォルトの名無しさん:04/12/11 00:41:10
>>726 currencyManager経由でとらないと正しい行番号は取れん
ソートされているのはDataviewでありDataTableではない
よってView上での実際の行の位置は変わるが
Datatableの位置は変わらん
その辺を管理してるのがCurrencyManager
MSDNでCurrencymanagerみてみ
マーシャリングとは一体何を行うことなのでしょうか?
スレッドに固有のインターフェイスポインタに対して処理を行うのはわかるのですが、
ヒープなんかはスレッドごとではなくプロセスで持っているので、
スレッドがどう関係するのかわかりません。
ポインタのオフセット値をどうにかしたりするんでしょうか
受け取り相手が分かる形にデータを整形する事。
COM相手でもWin32API相手でもマーシャリング。
さて貴方のマーシャリングのお相手は?
my wife
774 :
デフォルトの名無しさん:04/12/11 04:44:42
Visual Studio に関して質問です.
ユーザーコントロールや,自作コンポーネント(同ソリューション内の別のプロジェクトで作成)を
使用したフォームをエディタで表示するとき,
そのコントロール・コンポーネントが忽然と消えてしまうことがあります.
どんなときにこの現象が起きるかはよくわかっていません.
またコントロール・コンポーネントをフォームに追加しなおせばいいだけの話ですが,大変面倒です.
一部のコンポーネントをツールバー(マイ ユーザー コントロール)に自力で追加する際,
bin/debug 内にあった DLL を追加したのですが,これがまずかったのでしょうか…?
MSDN の記述に従ったつもりなのですが.
775 :
デフォルトの名無しさん:04/12/11 06:28:55
RichTextBoxのClearメソッドを呼び出すと、以後スクロールが機能しなくなるんだが、
どう対処したら良い?
>>763 [ファイル]→[プロジェクトの追加]でXXXを追加してから
777 :
デフォルトの名無しさん:04/12/11 10:00:41
WebRequestクラスとかで非同期処理するときって
IAsyncResultで非同期作るのと、スレッド立ててブロッキングで処理やらせて
終わったらコールバック受け取るのとどっちがいいのだ?
繰り返し処理すればIAsyncResultだったらスレッドプール使い果たしたり
しないのかな?
>>777 どっちでも好きな方、自分にとって扱いやすい方を。
IAsyncResultの利点はWaitHandle.WaitAllで簡単に一括待機できるなんてのもある。
> 繰り返し処理すればIAsyncResultだったらスレッドプール使い果たしたり
> しないのかな?
BeginGetResponseを使った場合20接続(だったはず)までに制限される。
>>775 再現しない。
取りあえず.NET FrameworkのSPでも当てる。
例えば何処かの掲示板で「こんなツール無いかな?」と言うのを見て、
出向先のPC、VS.NET2003Pro、C#でそのツールを作ってアップロードするとします。
このツールを見る人が見たら会社名や作成したソフトのVerなど
何かしら詳細がばれるのかな?
最悪、「会社に通報しました」何て事になるのかな?
AssemblyInfo.csに気をつけてれば大丈夫?
昼休みに暇つぶしに作ったことがあるけど、アップして良いものか分かりませんでした。
デバッグモードでコンパイルしたものをうpとかそんなアホなことをしなければ大丈夫w
>>780-781 やはり大丈夫でしたか。
同じような状況が今後あるか分かりませんが、
次からは気にせずアップすることにします。
レスありがとうございました。
このスレから、タイーホ者が出ないことを切に願う
784 :
デフォルトの名無しさん:04/12/11 19:01:59
20万以上通りの条件分岐って、if文とswitch文、どっちがいいんでしょうか orz
>>762 HTMLなら、ωでωが表示されるようになってる
ちなみにΩとするとΩになる。
フォントさえ(MSのUnicodeフォントとか)あればOSを問わず表示出来るはず。
788 :
デフォルトの名無しさん:04/12/11 19:45:00
XML Schemaによる検証を行いたいのですが、XmlValidatingReaderでは
エラーメッセージをこちらで決めることができないように見えます。
/Data/Item/Priceに文字列が入力されていたら、
「価格は数値で入力してください。」といった形のエラーメッセージにしたい。
エラーの発生箇所とエラーの種類が取得できればこちらで加工して
適切なエラーメッセージにできるのですが、良い方法はありますでしょうか?
>>788 メンバ一覧を見ただけだが、ValidationEventHandlerイベントは?
>>789 ValidationEventHandlerイベントの引数になっている
ValidationEventArgsがわりと情報をもっているのですが足りません。
ValidationEventArgsのExceptionオブジェクトが
エラーが発生した行番号と位置をもっています。
行番号と位置からどの要素でエラーになったのかを解析するのは面倒です。
C# で SQL Server と接続しようとしています。
C# というよりは ADO.NET の仕様になるかもしれないのですが、
データベースに接続/切断するタイミングをどうするべきか悩んでいます。
アプリケーションは Windows.Forms です。
今はトランザクション発行単位に接続/切断を行なっているのですが、
(コネクションプーリングに有効活用?)
アプリケーションの最初に接続し、接続しっぱなしにしたほうがよいのか、
それとも SQL 発行毎に接続/切断を行なったほうが効率がよいのか…。
アドバイス頂けないでしょうか?
また、このあたり説明が詳しい URL などあれば教えてください。
793 :
デフォルトの名無しさん:04/12/12 00:20:16
toolBarのAppearanceプロパティをFlatにすると、
他のウィンドウの後ろに現在のウィンドウを隠し、表示すると
他ウィンドウの画面が残ります。
(ツールバーの場所のみ)
こんな症状を解消する方法をご教授ください。。。
>>791 どのようなアプリケーションによるかなので、一概に言えん。
>>792 クライアントの数は、せいぜい 20台程度です。増えても 50台程度で使用する
アプリケーションです。
>>794 基本的には伝票入力的な1画面単位で入力/登録を行なうアプリケーションです。
1画面(1アプリケーション)で扱うテーブルの数はせいぜい 10 程度です。
(その中でも更新されるテーブルは多くて 3,4)
こんな感じでアドバイスを頂ける事があればうれしいです。
どうかよろしくお願いします。
797 :
デフォルトの名無しさん:04/12/12 13:57:47
親フォーム内に表示されている子フォームについてですが、
子フォームを親フォームの端(子フォームが見切れる位置)に移動させた時に、
親フォームにスクロールバーが表示されるのをやめさせるにはどうすればよいですか?
どうかアドバイスよろしくお願いします。
798 :
デフォルトの名無しさん:04/12/12 14:53:32
C# でレジストリに値を書き込もうとしているのだが、何故かすべて文字列として
書き込まれてしまふ。
DWORD では書き込めませんか?
799 :
デフォルトの名無しさん:04/12/12 14:57:51
↑すまんできた。勘違い。
設定している値が文字列になっていた。0x00000001 にすれば大丈夫。
あたりまえか。
>>791 帳票出しまくる(しょっちょうSQL発行しまくる )、処理が終わったらすぐPGを終了させる、
クライアントが少ない、とかなら常時接続でも良い。
PG立ち上げたまま放置されたり、時々DB見に行くだけのソフトならその都度接続した方が良いかもしれない。
タイマーで3分くらいでコネクション切ってもいいし。
CALの問題もあるかな。
とりあえず、コネクションは簡単にできるように関数化しておいて
その都度接続版と常時接続版と出来るだけ簡単に変えられるようにしておこう。
ま、こんなの当たり前なんだけど。
MS SQL Server 総合スレ2
http://pc5.2ch.net/test/read.cgi/db/1093012583/ の、186〜でも出てるけど、結局はケースバイケースなのよね。
801 :
デフォルトの名無しさん:04/12/12 20:16:08
プラグインが使用できるプログラムが作りたいです。
プラグインを作成する方法として、インターフェイスdllを作成しました。
プログラムホストのインターフェイスも作成し、プラグインからプログラムへも
操作ができる状態です。
プラグインとプログラム間において、メソッドの引数としてクラスを使用したい場合、
インターフェイスのdllにそのクラスを書いて、参照を使い、プログラムとプラグイン両方
で使用するか、
それともintやstringで代用できるならば、(記述が長くなるが)そちらを使うか、
どちらがベターなのでしょうか?
アドバイスよろしくお願いします。
>>801 安全生と利便性を計りにかけてケースバイケース
ま、どれだけメソッドを隠蔽しても C# では殆ど無意味だから、俺は前者の方を選ぶが
その方式のプラグインは、
引渡しとかそんなことよりプラグイン自体のアンロードが出来ないのが最大の問題。
お手軽なんだけどね。
>>803 リソース食うもの以外なら、自力でアンロードせんでもかまわんだろ
805 :
デフォルトの名無しさん:04/12/12 21:57:34
現在テキストボックス(複数行)に
a
b
c
と表示されているものをListBoxに同じように出すにはどうしたらいいですか?
データはStringでもっています。
>>805 TextBox.Lines プロパティから行単位で拾って、ListBox.Add で追加
もしくは string のデータを Split('\n') で行単位に分割して、同様に追加
>>805 listBox.Items.AddRange(textBox.Lines);
安全日ですから
フォームにDataSetを作成し入力項目とDataSetを関連付け、
入力チェックをXML Schemaで一括して行おうとするのが
間違いなのでしょうか?
一般的に、入力チェックはどのように実装しているのでしょうか?
多謝
foreach(String str in output.Split('\n'))
{
this.ListBox1.Items.Add(str);
}
this.ListBox1.DataBind();
でいってみたいと思います。ありがとうございました。
プログラム全体で共有できないのはめんどくさいですね。
プラグインなのでしかたないですが(;´д⊂
813 :
デフォルトの名無しさん:04/12/13 00:52:20
みなさんはSTAの中で作られたアンマネージドのスレッドの管理とかは
どのような主義で管理しているのでしょうか?作って動いてますだとすげー
不安なので100%動作を把握したいのですが、外部ツールとか使って監視
とかしてますか?私はSoftICEで監視してるのですが、まだ不慣れで
時間がかかってしまい何かもう少し簡便な方法ご存知ないでしょうか?
よーわからんが、スレッドの役目を限定するのがいいんじゃねえの?
あちこちのコンポーネントに触らないように境界設けるとか。
で、なぜSTAというキーワードが出てくるかね。
イニシャライズ時のスレッドID と動作時のID比較して違ったら例外はけば?
マネージドとアンマネージド、セーフとアンセーフの違いがよくわからないの
ですが教えてくださいませ。それぞれの違いはわかるつもりなのですが、
両方混ざると頭が混乱してしまいます。
アンマネージドでセーフってありえるのでしょうか?
何のセーフよ。
例えばスレッドセーフかどうかはスレッドの扱いによるもので、マネージド/アンマネージドとは別のレイヤの話になるし。
次の例のようにunsafeキーワードを使った場合のアンセーフです。
static unsafe void FastCopy ( byte[] src, byte[] dst, int count )
unsafeキーワードを使った場合のアセンブリってマネージドなのか
アンマネージドなのかっといったことに迷ってるんです。
820 :
デフォルトの名無しさん:04/12/13 11:54:12
>>819 unsafeを付けただけでネイティブコードになったりしたら大変だろう。
C#は検証可能なコードも不可能なコードも出力できるようになっている。
デフォルトでは検証可能。unsafeスイッチを付けてビルドした場合には検証不可能。
ちなみに、MC++のコードはすべて検証不可能、VB,NETは全て検証可能。
当たり前だが一応、これらは全てManagedコード。
ILで動いてるもの=マネージドって理解でいいんですね。
検証可能なマネージドコード、
検証不可能(アンセーフ)なマネージドコード、
アンマネージドコード(ネイティブコード)という分類でしょうか。
検証不可能な管理されたコードって変な感じだったので
ILでかつ検証可能なものだけをマネージドってよんでるのかと思ってしまってました。
初歩的な質問なんだが、C#はclassごとにファイルをわけられないのですか?
csファイルはコンパイルするとすべて実行ファイルになりますよね。
ためしにクラスで分けてみたのですが、newするclassがないとエラー起きます。
しかも、class名とファイル名が異なっていてもコンパイルできますね・・・orz
csc.exeに.csを一つしか渡してないとかいうオチじゃないだろうな。
そもそもVS.NET/VC#.NETを使ってるのかコマンドラインコンパイルなのかどっちだ。
> しかも、class名とファイル名が異なっていてもコンパイルできますね・・・orz
だから何?
delegeteの宣言一つに.csを一つ作れと言うの?
>>824 コマンドラインでコンパイルしています。
Javaはclass名前とファイル名がおなじでないと動かないじゃないですか。
そのへんはC#はどうなのかなと思ったのです。
勉強不足です。邪魔してすみませんでした。
排他(・A・)イクナイ!!
どうしてもjavaっぽいことをしたいなら、スタートアップクラス以外を /target:module で
コンパイルして、.netmoduleのクラスを使う場合は /addmodule:xxx.netmodule で
参照を設定する必要がある。この場合もクラス名とモジュール名は一致させる必要は
なく1:1の関係でもない。
まあ普通はこんな使い方はしないけどね。
そうなんですか…。クラス一つにファイル一つという考え方でいままで勉強してきたので、変なかんじです。
829 :
デフォルトの名無しさん:04/12/13 17:12:12
すいません、OracleとC#のやり取りに関して質問です。
以下のコードで、実行したのですが、うまくいかないのです…。
Provider=MSDAORA.1;
Data Source=サーバー
User ID=ユーザー
Password=パスワード
Persist Security Info=True
//コネクション作成
OleDbConnection myConn = new OleDbConnection(strConn);
//コネクション確立
myConn.Open();
string myInsertQuery = "insert into TESTDB(NO,NAME,MEMO) values(7,'AAA','ああああ');";
OleDbCommand myCommand = new OleDbCommand(myInsertQuery,myConn);
myCommand.ExecuteNonQuery();
myConn.Close();
↑↑↑のようにC#よりOracle接続を行い、Insert文を実行するプログラムを作ったのですが、
コネクション確立までは問題なく実行できるけど、Inset文が実行できません。
Executeのところで、システムエラーになってしまいます。何か間違っていますでしょうか?
C#より、Oracleのテーブルに登録・更新・削除処理を行うには、どうしたらよいのでしょうか?
830 :
フナ太郎:04/12/13 18:00:44
なんだかなー。
おまえら、C#関連の本もってんの?
一冊ぐらい買っといたほうがいいぞ。
じゃあ一つその本から得た知識からご高説を賜ろうか。
>>829 出てるエラーの内容をUPしてね、システムエラーじゃわからん。
833 :
デフォルトの名無しさん:04/12/13 18:29:43
>>832 'System.Data.OleDb.OleDbException' のハンドルされていない例外が system.data.dll で発生しました。
というエラーです。。。
じゃあ次はその例外をキャッチしてOleDbException.Errorsプロパティから詳細情報を取得。
>>829 そのエラーがOleDBプロバイダの出してるエラーならば、
values(7,'AAA','ああああ'); <- ここのコロンが怪しくないか。
836 :
デフォルトの名無しさん:04/12/13 18:36:51
>>834 現在のオブジェクトの情報が有効ではありません。というエラーです…。
>>822 C#の場合(というか.NETの場合)一回のコンパイルでできる.exeなり.dllなりを「アセンブリ」と呼ぶ。
アセンブリには、Javaの.classファイルとは違い、複数のクラスを含めることができる。複数のソースファイル
からひとつのアセンブリを作ることもできる。
その代わり、他のアセンブリに含まれるクラスを使うためには、コンパイラのオプションで明示的に指示して
やる必要があるわけ。
そうなっている理由は(推測だけど)、C#がIDEを前提にしているからだと思われ。
コンパイルオプションが煩雑になっても問題ないし、.classファイルを検索しなくてすむ分、コンパイルが速くできるから。
誰かツッコミきぼん。
839 :
デフォルトの名無しさん:04/12/13 23:39:19
スレッド関係いろいろ勉強してるのですが、
CThreadはMTAでもSTAでも好きなほうで動かせるのですか?
全然判らないというかMFCを使ったことがないです。
なぜそこでMFCが出てくる?
つーか誤爆だと思われ。
じゃなかったらどうしようもないチンカス
842 :
デフォルトの名無しさん:04/12/14 00:28:16
お尋ねいたします。
現在、シェアウェアソフトを公開する準備をしております。
1.不正利用防止のための技術が紹介されているサイトを
ご存知ないでしょうか。ございましたら、ご紹介願います。
2.不正利用防止のため、myAppliの起動時に起動元PCの
MACアドレスを自動で私のPCに送付させたいのですが、
この機能を持たせるためには何が必要でしょうか。
私の推測ですが、「私のPCに送付させたい」とありますが、
その利用元のメールサービスを経由することは到底不可能だと
思います。したがって、例えば迂回路のようなものが必要だと
考えています。
もちろん、MACアドレスが完全唯一であるものの
完全に不正利用を防止できるとは考えておりませんが・・。
以上、みなさまのお知恵を拝借したく。
お願い致します。 関
843 :
842:04/12/14 00:30:53
2の条件を見たらスパイウェアとしか思えない。
そんなそのほかに何送るか知れたものじゃないアプリなんて使う気がしない。
845 :
842:04/12/14 00:32:54
追記です。私のプログラム知識で以下のような経験があります。
imm.dll user32.dll office.dll visualbasic.dll
この程度です。
>>842 まともなファイアウォールを使っている人間ならば、勝手に情報を
送ろうとしたら遮断するし、その情報はすぐに広まってそんなシェア
ウェアは誰も使わなくなると思うのだが。そして激しくスレ違い。
848 :
842:04/12/14 00:41:09
>>844 当然、ご利用者様には了承を得ます。
シリアルが流れて、損害を被りたくないのです。
>>842 ・課金
・マシン固有のIDの創出
・その管理
をどうするの?
>>848 無理です。あなたにはシェアウェア開発は無理。
おとなしくフリーソフトにしときなさい。
そんな勝手に個人を特定できる情報を送信する危ないソフトなんて
今時誰も使わない。
851 :
842:04/12/14 01:03:33
>>846 GetAdaptersInfoですね、どうもありがとうございます。
さっそくやってみます。
>>849 まぁ、一種の警告ですね。
>>850 無理ではない。おとなしくフリーソフトにする根拠がない。
個人を特定できる情報を送信するソフトなんて誰も使わないのだったら、
WinXPはどうなるのでしょうか。重要なのは、そのソフトが
必要かどうか、ただそれだけだと思います。
不要だと判断され入金されなければ、それまでです。特にありません。
>>850 WinXPはアクチベーションの際にはプロダクトIDのチェックをする
だけで、個人情報は「一切送信されません。」
適当な事書くなハゲ。
853 :
842:04/12/14 01:12:02
>>852 え、「一切送信されません」ってみなさん、信じてるの?
うは、終わったな842
855 :
842:04/12/14 01:14:42
しょぼーん(´・ω・`)
フリーソフトで出直してきます・・。
英語のHP読めなくて、やる気うせました。
XPは他に選択肢がないから我慢するだろうが、842さんのソフトがそこまで価値あるなら同じように我慢するでしょ。
仮にも比較対象は世界一のPC用OSベンダ、MSなんだから積み上げてきた実績も信頼性も違いすぎる
#ここで信頼性に突っ込むような厨房丸出しな事はやめてくれよ
別にスパイウェアだとか言う噂が広まったって、
困るのは
>>842なんだから放っておけばいいと思うけど。
それよりそんなに売れるという自信が羨ましい。
859 :
842:04/12/14 01:21:19
>>858 少しくらいは売れますね。
少なくとも5年以内に利用対象ユーザが6万人に増えるのが確実で
且つマイナーな分野なので類似したソフトがない。
860 :
842:04/12/14 01:22:52
>>858 スパイウェアだと噂が広まる前に
説明書にスパイウェアの旨を明記しますってば。
今晩のお祭り会場はここですか?
どんな分野よ。
ここまで騒いだんだから差し障りない範囲で情報提供汁。
ここで話してまねされるぐらいようなモンでもないでしょ?
>>846あたりで解決して以降の内容はスレ違いじゃない?
適当にスルーしてよ。
>>860 マニュアルに何を記載しようが、
>え、「一切送信されません」ってみなさん、信じてるの?
という発言が致命的なまでに信用を毀損したと思う。
匿名とはいえ、.NETでマイナーな分野で潜在ユーザが近々6万人で
スパイウェアで類似したソフトがないとなると、さすがに特定されるだろ。
865 :
842:04/12/14 01:31:13
>>862 ネットワーク型出会い系ソフトです。
ただで参加されても困るので・・・。
そもそもWinXPとMACアドレスを同系列で論じるのがおかしい。
WinXPのプロダクトIDは、ソフトウェアと「セット」になっているものであり、
個人情報は一切含まれてないが、MACアドレスは、仮初めにも他人の
ハードウェア情報で、その気になれば個人を特定できるシロモノ。
人様の情報を盗み読みしておいて勝手に送信するなんて、スパイウェア
そのものでつね( ´,_ゝ`)プッ
>>865 出会い系?DQNかよ。このスレを荒らさないように、他にスレ立てて
そこでアイディアを募集してくれ。スレが汚染されていくのを黙って
見てられない。
868 :
842:04/12/14 01:34:41
>>866 え、個人を特定できなければ、意味なくないですか?
ですから、スパイウェアですってば!!
>>868 出会い系なら、鯖側でIDとパスワードで認証できるようにできんの?
それに違反したら不正アクセス防止法で引っ張れるんだし。
それとも鯖を使わないP2P型出会いソフトか?
870 :
842:04/12/14 01:38:47
871 :
デフォルトの名無しさん:04/12/14 01:40:17
あのぅ、初心者なんですけど、
HTTPでGetやPostをさせるには
C#ではどうしたらいいのでしょうか・・・お願いします。
2コンマイクに「ポストーーーーーーーーーーー!!!」と絶叫する
>>871 HttpWebRequestクラスを使う。
874 :
871:04/12/14 01:41:39
>>870 貧困で結構です。下手をすると犯罪の手引きをするようなソフトを
作ろうとしている君よりは遙かにマシだと思っている。
876 :
871:04/12/14 01:43:47
見通しがたったので、今宵はこれにて。
どうもありがとうございました。
自分のソフトが少しでも社会の役に立てればと思います。
今後ともよろしくお願いします。
貧乳ですよね
>>876 社会の糞の役にも立たないから。はいはい行った行った。
> 犯罪の手引きをするようなソフトを作ろうとしている
自己紹介乙。児童買春は犯罪じゃないのかぁ
881 :
842:04/12/14 01:47:10
>>871 スレの趣旨に沿った発言者の方が肩身狭そうでワラタ
>>871は
>>846 > ひとまずメール送付は諦めて鯖にHTTPでGETなりPOSTなりさせるようにするのが無難。
を受けての
>>842による自作自演と読んだが
>>880 おいおい、途中で勝手に人の文を切るな。意味が正反対になるだろ。
マ板は相変わらずシェアウェア厨には風当たりが強いでつねw
こちらはム板でございます
こんな時間に元気だなお前ら。
マ板とム板の区別もつかない厨がソフトウェアを作ろうなんておこがましい。
890 :
デフォルトの名無しさん:04/12/14 10:31:36
たまに他所様の巨大ソリューションを見せていただくと、
クラスライブラリだけじゃなく、そのクラスライブラリのインタフェースも別プロジェクト
になっていたりします。例えば、MSが公開している例外クラスも、
Microsoft.ApplicationBlocks.ExceptionManagementと、
Microsoft.ApplicationBlocks.ExceptionManagement.Interfacesのように別プロジェクトに。
なんか、ネームスペースを分けたいだけにしても、
本体のプロジェクトの下にInterfacesのディレクトリ作って、そこに入れたらよいような
気がしますが、こうするのには何か理由があるのでしょうか?
そんなの常識っていうようなオブジェクト指向的なお作法のようなものとか・・・
>>890 .netのネームスペースは単に名前空間を分割するだけのもので、
javaと違い.classやアセンブリの物理的な配置とは一致しません。
>本体のプロジェクトの下にInterfacesのディレクトリ作って
というのはまったく意味を持ちません。
単一のアセンブリ(dll)の中に異なるネームスペースを混在できます。
ただし特別の理由がない限り一致させますけどね。
さて、インタフェースと実装などでアセンブリを分ける理由ですが、バージョン
管理の問題だと思います。.netのアセンブリは厳密名を付けることが推奨されて
ます。実装部と同じアセンブリにインターフェイスが含まれている場合は
実装の変更のたびに厳密名が変わってしまい他のプログラムへの影響が大きい
わけです。
892 :
デフォルトの名無しさん:04/12/14 11:33:34
インターフェースが普遍ならば追加ありえる実装部分を別プロにするのはイタって普通
893 :
デフォルトの名無しさん:04/12/14 12:04:59
COM
894 :
890:04/12/14 12:06:34
なるほど、良く分かりました。
インターフェースの意義って、クラス定義を明確にして、
バグを減らすこと程度にしか考えてなかった私が厨房でした・・・
どうも有り難うございました。
895 :
デフォルトの名無しさん:04/12/14 12:16:27
C#で、グリニッジの時刻を取得する方法はないでしょうか。
福岡大(?)の時計でもいいです。
なるべく、インターネットへの接続環境の差異に依存しない
(少なくともインターネットに接続されているのが前提)
手法をご紹介いただけないでしょうか。
gmttime
897 :
デフォルトの名無しさん:04/12/14 12:21:59
1.ウィンドウズ上で時刻を手動再設定あるいは桜時計などで
+9GMTの時刻取得による自動再設定があった場合でも、
常に普遍な時刻の取得方法
2.バイオスの画面で再設定できる時計から独立した時計であって、
PC内に内在する時計
3.マザーボードのボタン電池を抜いても、動作を継続する時計
以上の3のいずれかに関してご存知でしたら、
助言いただきたく、お願いいたします。 桑原
NTPの使い方を聞いてるのか?
.NETにsntpのクラスはなかったと思うからソケットで直接書くことになると思う。
System.Net.Sockets.UdpClientあたりが使えるかも。
900 :
時刻厨房(895):04/12/14 12:30:24
902 :
時刻厨房(895):04/12/14 12:34:31
>>895 >なるべく、インターネットへの接続環境の差異に依存しない
↑これと、↓これが、矛盾したこと言ってるように思えるのは漏れだけ?
>(少なくともインターネットに接続されているのが前提)
904 :
時刻厨房(895):04/12/14 12:38:14
>>Private Sub Command1_Click()
>>
>> '' 時間を取得して表示する。
>> Label1.Caption = "時間 : " & Format(GetNtpTime(), "HH:MM:SS")
>>
>> '' 取得できるのは標準時間だけです。
>> '' 時差の補正、日付の取得はしていません。
>> '' 取得した時間には通信遅れによる誤差が含まれます。
>>
>>End Sub
●rz...日付気盆ヌ
905 :
デフォルトの名無しさん:04/12/14 12:39:43
お世話になります。
key=test
の、testだけ取り出したい場合、簡単な方法はないでしょうか。
今、=の位置を見て、その位置から文字の最後まで切り出して・・・みたいな
処理をしてるのですが
>>897 >バイオスの画面で再設定できる時計から独立した時計であって、
>PC内に内在する時計
これも何言ってるかワカンネ
907 :
時刻厨房(895):04/12/14 12:40:07
>>903 あまり詳しくないので、間違っていたらご指摘ください。
接続環境に依存しないとは、
プロクシやFW(?)を想定しており、
これらが存在していても問題なくGMTを
取得できるか、それとも個別に設定をmyAppli側で
しなければならないのか、ということをお尋ねしたかったのです。
908 :
時刻厨房(895):04/12/14 12:40:50
>>905 それもあり。
'='でSplitするとか。
正規表現で"[^=]*?(=.*)"とか。
911 :
時刻厨房(895):04/12/14 12:43:18
>>906 日時を取得する方法として、
1.PC内部の時計を参照する
2.NTPサービスを利用する
の2通りが考えられますが、
前者はPC利用者に”人為的に”変更可能であり、
後者はインターネットの接続環境により種々の設定が
アプリケーション側に要求されるので大量に頒布するような
アプリには不向きな恐れを危惧しているのです。
その2通りしかないよ。
難読化やってる?
915 :
時刻厨房(895):04/12/14 12:50:04
>>912 ピックかよ。基盤はZip圧縮できねーし。
少なくともシリアルをUSBにしないと、今の時代・・・。
電源もUSBからウマー
>>911 >前者はPC利用者に”人為的に”変更可能であり、
>後者はインターネットの接続環境により種々の設定が
>アプリケーション側に要求されるので大量に頒布するような
>アプリには不向きな恐れを危惧しているのです。
これも前者と後者で矛盾した要求をしてるんだよなー。
釣りかも試練。
917 :
時刻厨房(895):04/12/14 12:54:21
>>916 人為的な変更が聞かない日時の取得方法を知りたいのが目的です。
前者は人為的な変更が可能(もしかしたら、人為的な変更が
できない時計がPC内にあるかも知れないという希望の裏返し)
後者は当然人為的な変更は不可だが、ネットへ接続する
必要があるので、種々の問題がからむ。
ということを申し上げたかったのです。
またおかしいのが湧いてきたな。
919 :
時刻厨房(895):04/12/14 13:03:04
842のことか?
またではないな。
>>842 >2.不正利用防止のため、myAppliの起動時に起動元PCの
>>907 >取得できるか、それとも個別に設定をmyAppli側で
なるほど
922 :
時刻厨房(895):04/12/14 13:08:06
>>920 それはあくまでGMT管理組織のことであって、
日本国内の端末利用者は変更することが無理だと思う。
こういう、論理的な思考ができない香具師はプログラムを組むのを
やめた方がいいね。それもシェアウェアにするなんて、あつかましいにも
程がある。
有料のソフトウェアを作るのに、情報だけは2ch他で只で得ようってか。
なんて調子のいい香具師なんだろう。
927 :
時刻厨房(895):04/12/14 13:21:29
そんなにきついことゆうなよ。
あなたたちだって、ソフト作ってがっぽり
設けてるんでしょ!!
以降は放置で。
929 :
デフォルトの名無しさん:04/12/14 13:23:45
NPTサービスを識別してるわけではないのだから、同じURLでLAN内の別のネットワークにつなげるように偽装することは十分叶ですが。
930 :
元842:04/12/14 13:25:29
>>929 サンクスコ!
なんか難しそうだから、やっぱフリーソフトにしておきます。
靭性、いつも挫折の連続だな。
GMTだかNTPだかよーわからへんし。
誤字の使い方からして自演まる分かりなのに
(´-`).。oO(シェアウェアとか不正使用を防止とかいうキーワードを入れずに質問すればいいのに・・・)
933 :
デフォルトの名無しさん:04/12/14 13:32:37
C#で関数を作成するときに、VBのOptionalのような機能ってありますでしょうか?
関数名(引数1,Optional 引数2 = 1000)
↑↑↑引数2は省略可能。省略した場合は、1000が代入される。
>>933 ない。
「それがやりたい場合は、引数構成の異なる同名の関数を作れ」という設計思想らしい。
あるよ
936 :
デフォルトの名無しさん:04/12/14 13:45:35
enum test
{
key1 = 0
key2 = 1
}
のtype.key1を、int型で関数に渡す場合
(int)type.key1 と書くのが一般的でしょうか
取りあえず代案を示してみたまえ。
enumのbase-typeになんでstringを指定してーよ
939 :
936:04/12/14 14:17:28
940 :
デフォルトの名無しさん:04/12/14 14:26:33
上のほうでNTPがどうこうという話が出てたので便乗なのですが
NTPパケットをbyte配列で受信したのを32ビットとか16ビットワードとか
切り分けて読み出すスマートな方法ってないでしょうか?
c/c++だと構造体にキャストして一発なのだが、c#じゃどうやるのが一般的
なんでしょう。
c/c++でもエンディアンの問題で一発ってわけでもないですね
一般ユーザ向け商用アプリ(パッケージまたはシェアウェア)でC#ってどうよ
リバースエンジニアリング問題とかどうしてる?
>>914 俺は今作ってるフリーソフトが完成したら難読化して公開するつもり。
>>944 フリーソフトの公開ぐらいだったらVS.NET2003に付いてるDotfuscator CEでいいんじゃないかと思ってます。
徹底的にやりたいのであればPEですが、高い・・・。
前回と言い、微妙にスレ立てが早いな。
950で次スレを立てる国の人なんだろう
遅くなりましたが、ありがとうございました。
結局
>>745を買ったんですがほとんど文法ばっかりでした…
みなさんのアドバイスを聞かなかったのを反省しています。
それで、もうひとつ本を買うとしたらどれがいいですか?
あまり高くなくてGUI中心のをお願いします。
わがままばかりですが、よろしくお願いします。
ちょっとしたオブジェクトの永続化作ろうと思ってるんですが、知恵貸してください。
大量のオブジェクト使う必要あって、メモリに入りきらないので永続化してファイルに落とそうと思っています。
これはプロセス終了後の永続かもかねます。
動作時に最近使用したオブジェクトをリストの上に上げて下方にあるオブジェクトをファイルに落とすという形をとろうとしてますが、このリストの管理とマルチスレッドに関してどうするか考えてます。
generics<class T> ObjProxi{
T m_t=NULL;
bool m_isObjectValid;
}
interface Permanentable{
void ToBinary();
void FromBinary();
}
class ConcreateObject:Permanentable{
こんな感じでConcreateに対してのアクセスはProxi 通して行いますが、そこでメモリ上になければファイルからの復帰をするつもりです。
Proxiに対してアクセスした際にオブジェクトの有効順位を上げるつもりなんですが、そこでの効率(・∀・)イイ!!やり方考え中です。マルチスレッドアクセスも考慮するつもりです。
(・∀・)イイ!!知恵あればご教授ください。
>>949 C#は文法がわからないとGUIもわからない。
っていうか変な人がいるから危機感のため行動したと思われ
954 :
斉藤 ◆kvYxWFRquQ :04/12/15 18:57:50
>>953 ちょっと飲み過ぎた。風に当たってくるよ。
C#でOracle9iのデータベースでプログラムしてます。
OracleDataReader使用してSQLでデータ取得するんですが、
DBの文字コードがUTF8でVARCHAR2の値を取得する場合に
GetOracleString+ToStringで取得します。
この時に"〜"(波ダッシュ)をリッチテキストボックスに表示するんですが文字化けします。
調べたら、書き込み時と読み込み時でコードが変わってしまってます。
大丈夫な部品もありました。
これは自分でコード変換する必要があるんでしょうか?
Forms.DataGridのセル内の文字列を選択不可にしたいのですが、
DataGridTextBoxColumn l_DataGridTextBoxColumn = new DataGridTextBoxColumn();
l_DataGridTextBoxColumn.TextBox.Enable = false;
l_DataGridTableStyle.GridColumnStyles.Add(l_DataGridTextBoxColumn);
などとしても変化がありません。
リストボックスやリストビューのサブ項目のように表示のみで選択も編集もさせないように
することはできないのでしょうか?
よろしくお願いします。
958 :
デフォルトの名無しさん:04/12/16 20:58:47
, 8.7663E+00, 1.3733E+00,
, 8.7663E+00, 1.3733E+00,
, 8.7663E+00, 1.3733E+00,
, 8.7663E+00, 1.3733E+00,
な感じのデータ続くCSVにデータを書き加えて
, 8.7663E+00, 1.3733E+00,追加内容1
, 8.7663E+00, 1.3733E+00,追加内容2
, 8.7663E+00, 1.3733E+00,追加内容3
, 8.7663E+00, 1.3733E+00,追加内容4
ってするにはどうしたらいいですか?
やっぱり既存ファイルから読み込みながら新しいファイルに1行ずつ
元の内容+追加内容を書いていくのが一番スマートなんでしょうか?
まあ、そうだろうね。
メモリの圧迫も最小限で済むし。
csvからdatasetに読み込んであるのでさくっと追加できないかなー
っと淡い期待を胸に書き込んだんですが、素直に新規ファイルに一行ずつちまちま書きます。
ありがとでした。
961 :
デフォルトの名無しさん:04/12/17 14:38:06
マルチスレッドで困ってるのですが、あるフォームを作成したスレッドが現在のスレッドかどうか調べる方法はないでしょうか?
取りあえずInvokeなげとくってわけにはいかんか。
Thread.CurrentThread.Nameでユニークな名前を付けるとか。
どう困ってるのか書けば意外な解決が見つかるかも知れない。
非同期処理としてスレッド推奨なのに、肝心要のフォームがスレッド非対応というのはきついよな、
まだWin32時代の再入の方がスッキリしているというか・・・
InvokeRequiredをトレースしまくれ
>>961 delegate 作って InvokeRequired とかで出来ると思うけど、Invokeが必要かどうかを
実行時に判断しなくてはならないような状況で Invoke 使うときははデッドロックしない
ように気をつけてね。
FormA.a() in ThreadA が FormB.b() in ThreadB を invoke して、FormB.b() 呼び出し
実行中に ThreadA に属する何かの delegate を Invoke しようとするとデッドロックするから。
>>961 GetWindowThreadProcessId()呼び出してウィンドウのスレッドIDと現在のスレッドIDを比較するとかは?
Win32APIから呼び出し可能なDLLをC#で作りたいのですが
そのあたりの資料ってどこにありますか?
COMか?
リファレンスでCOMの資料嫁
どうせ徒労におわるだろうけど。
public static int add(int a, int b);
をexportできればそれで十分なんですが
とりあえずCOM周りを調べてみます。
ありがとうございます。
ATLだろ
>>965 少なくともwindowsではGUI作成するスレッドが複数というのは間違ってると思うが
>>971 さすがネイティブ開発陣の言うことは違うな
Java だとスレッド関係ないから('A`)