くだすれ.NET(超初心者向け)
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001デフォルトの名無しさん
2006/10/07(土) 17:28:33どんなに「くだ」らない.NETプログラミングに関する質問でも
誰かが優しくレスをしてくれる「すれ」っどです。
質問者自身何がなんだか分からない質問でも勇気をもって書き込んで
ください。お礼は.NETアプリケーションの普及と初心者の救済を
お願いします。
0933デフォルトの名無しさん
2009/01/23(金) 22:42:53pin_ptr<int> p = &rNextLine;
return プロパティ->Get(*p);
ただ、pinしないそっちのほうが性能では優れていそうな気がする。
0935デフォルトの名無しさん
2009/02/01(日) 15:21:56.NETってMSのサイトからDLして別途インストールさせないといけませんよね?
これ、自分で勝手にファイル配れるようになってればまだマシだったのに、
いろいろなバージョンをDL、インストールしないといけない現状はいかがなものかと思います。
.NETって騒ぎ始めたあともMS謹製のOfficeは.NETじゃなかったと思うんですが、
やはりうざすぎて嫌われるのを予知していたのでしょうか
0936デフォルトの名無しさん
2009/02/01(日) 15:25:430937デフォルトの名無しさん
2009/02/01(日) 16:19:52ありませんか?
あるいは他のひとに違うバージョンとかパッチをインストールされても動作が変わったり
する恐れはありませんか?
0938デフォルトの名無しさん
2009/02/01(日) 16:23:53勝手に適当に選んでくれる
0939デフォルトの名無しさん
2009/02/01(日) 16:45:002.0以降は大丈夫だが。
1.0-1.1以降
1.1-2.0以降
は動作は保障されない。
0940デフォルトの名無しさん
2009/02/01(日) 16:47:20どうせ書くなら「まともな」日本語で頼む。
0941デフォルトの名無しさん
2009/02/01(日) 16:49:190942デフォルトの名無しさん
2009/02/01(日) 16:56:13最新版をインストールしても古いのが使われるよ
0943デフォルトの名無しさん
2009/02/01(日) 22:14:36古いのをアンインストするか、
構成ファイルでバージョン指定
<configuration><startup>
<supportedRuntime version="v2.0.50727"/>
<supportedRuntime version="v1.1.4322"/>
0944デフォルトの名無しさん
2009/02/06(金) 09:04:47http://msdn.microsoft.com/ja-jp/netframework/cc807036.aspx
0945デフォルトの名無しさん
2009/02/23(月) 16:37:18C++/CLIでプラグインを作るのってどうするんですか?
C++の知識はそこそこありますが、C++/CLIとC#の知識が殆どなく
何からはじめたらいいのか分かりません。
0946デフォルトの名無しさん
2009/02/23(月) 21:32:47プラグイン用に用意されたdllを参照してその中のクラスを継承するパターンが多い
プラグインだからと言って特別なことは何もない
0947デフォルトの名無しさん
2009/02/24(火) 22:48:520948デフォルトの名無しさん
2009/02/25(水) 05:54:29C:\Program Files\Microsoft SDKs\Windows\{Version}\Lib あたりにあるとおも
0949デフォルトの名無しさん
2009/02/27(金) 23:58:50タブが表現できず困っています。
"\n"はちゃんと反映されて改行されるのですが、"\t"としても、sprintfのようにタブが表示されません。
どのようにすればタブが反映されるのでしょうか?
0950デフォルトの名無しさん
2009/02/28(土) 05:13:19その文字列をMessageBox.Showで表示したらタブが処理されているのが分かる。
0952デフォルトの名無しさん
2009/03/01(日) 13:36:16pictureBoxコンポーネントをフォームに配置し、プログラム上で以下のような記述で描画しています。
// pictureBoxコンポーネントからBitmapを抽出する
Bitmap bmp = pictureBox->Image;
// 描画
bmp.SetPixel( 10, 10, Color::FromArgb( 255, 255, 255 ) );
// BitamapをpictureBoxコンポーネントにセットする
pictureBox->Image = Image::FromHbitmap( bmp.GetHbitmap() );
この処理をタイマーで定期的に行うのですが、処理を行う度に抽出したビットマップ分の
メモリが増加していき、しまいにはメモリが足りないと言われてプログラムが落ちます。
bmp.Dispose()はプライベート関数なので呼べず、Deleteも効きませんでした。
そもそも、自動変数的に宣言しているので、スコープ(タイマー処理関数内)を抜けたら
自動的に解放されるのでは、とも思います。
どのように対処すればよいでしょうか?
0953デフォルトの名無しさん
2009/03/01(日) 13:40:43pictureBox->Image = bmp;じゃダメなのか
0954デフォルトの名無しさん
2009/03/01(日) 17:48:38とりあえずコードに関する事だと、
pictureBox->Image を直接編集するように変更すればいい
次に忠告、
C++/CLIはC++と.NETの両方に精通した者が使う言語
というか、そうじゃないとまともに使えん(取り扱い注意)
>>953
bmp が Bitmap^ じゃないからそれじゃダメだ
そもそも、Bitmap^ なら再代入いらないんだが
0955954
2009/03/01(日) 17:50:20・bmpはスコープ抜けるときにDisposeされる
・GetHbitmap()で作ったHBITMAPは解放されない(これが直接の原因。DeleteObject() せよ)
・元のpictureBox->Imageも直ぐにはDisposeされない (delete すべし)
それ以前に自分がやってることの珍妙さを理解してるのか疑問
1. pictureBox->Image の中身を bmp にコピー
2. bmp から HBITMAP (GDI) を作成 (コピーされる)
3. 2で作成した HBITMAP (GDI) から Image (CLI) を作成 (コピーされる)
0956デフォルトの名無しさん
2009/03/01(日) 18:04:39PictureBoxから直接Bitampを取り出すのってできたっけ?
まあBitmapにしないで、Graphics.FromImageを使えばいいはずだけど。
0957デフォルトの名無しさん
2009/03/01(日) 18:26:37Bitmap であることを保証するのはプログラマの仕事
(プロパティには自分で代入してるはずでしょ?)
0958デフォルトの名無しさん
2009/03/01(日) 21:06:55それをそのまま使えばいいだけじゃないのかと
あと勘違いしてるみたいだけど,C++/CLIではBitmap^とBitmapはどちらもハンドル型だよ
0959デフォルトの名無しさん
2009/03/01(日) 21:38:18いやいやいや、名前通りImage^型だよ。
あと、^なしのBitmapだとスコープを抜けるときにDisposeが呼ばれるから、
単純に同じと言いきったらまずいだろ。
0960952
2009/03/02(月) 00:10:30ちゃんと勉強してから組まないといけませんね(汗)
ありがとうございました。
0961デフォルトの名無しさん
2009/03/02(月) 02:03:18とりあえず、.NET使いたい/勉強したいだけならC#に行くといい
一番重要なのは、コンパイルが早いことと、インテリセンス、スニペット使い放題なこと
0962945
2009/03/04(水) 22:14:29しかしメソッドの宣言で挫折しました
ttp://uproda.2ch-library.com/lib110688.zip.shtml
ProcessingImageとかアクセッサの書き方が分かりません・・
System.Drawingが参照追加したはず?なのに使えません。
0963デフォルトの名無しさん
2009/03/04(水) 23:33:33あとそれPASSが設定されているわけだが
0964デフォルトの名無しさん
2009/03/09(月) 18:14:13panel1.AutoScroll = true;としたのですが
スクロールバーの表示が何か変です。
初期状態ではpanel1.HorizontalScroll.Maximumや
panel1.VerticalScroll.Maximumの値が100で、
pictureBox1の位置とサイズをpanel1より大きくすると
Maximumの値がpictureBox1に合わせて広がりますが
その後pictureBox1の位置とサイズを小さくしても
Maximumの値が広がったままになっています。
その後panel1の中にpictureBox1が収まると
スクロールバーは縦横とも表示されないのですが、
横は収まってるけど縦に収まらない状況になると
本来なら縦スクバーだけ表示されるはずなのに
必要ない横スクバーまで表示されてしまいます。
panel1.HorizontalScroll.Visibleを確認するとfalseでした。
スクロールバーの稼動範囲はMaximumの値を基準に
しているようですが実際には反応しません。
Maximumの値は取得できても変更することはできなくて
ガバガバに広がっていく一方なのでスクロールバーを
締めなおすこともできません。どうしたもんでしょうか?
panel1.HorizontalScroll.LargeChangeとかは変更できるのに…
0965デフォルトの名無しさん
2009/03/09(月) 19:58:12一生懸命書いてるつもりかもしれんが文章が「日本語で書きください」過ぎる。
ただ、HScrollProperties.Maximumってどういう値かわかって操作してるのか?
Valueプロパティに関心がない限り、普通は触る必要がないはずの値だと思うんだが。。
0966デフォルトの名無しさん
2009/03/10(火) 18:51:51ScrollProperties.Maximumが大きいままなので
それが機能しないスクロールバーが表示される原因と
何か関係があるのではと思いました。
ScrollProperties.Maximumでスクロール可能な範囲の上限を
取得または設定しますとあるので適切な値を設定すれば
スクロールバーがバグって表示されることもないかと
panel1.HorizontalScroll.Maximum=100とかやってみても
Maximumの値は100になってくれません。
Maximumの値を自分で変更するにはどうすれば、もしくは
不要なスクロールバーを表示させないようにするには
どうすればいいのかで困っております。
0967デフォルトの名無しさん
2009/03/10(火) 23:05:04またtrueにすれば表示されなくなりました。
中途半端ですがとりあえず自己解決です。
0968デフォルトの名無しさん
2009/03/13(金) 06:51:25文字列に独自の文字コードを埋め込もうと思ってて
char first[3] = {0xef, 0x27, 0x00};
char second[10] = "・てすと";
char last[3] = {0xef, 0x28, 0x00};
char buforg[100];
ZeroMemory(buforg, sizeof(buforg));
strcat(buforg, first);
strcat(buforg, second);
strcat(buforg, last);
System::String^ strTest = gcnew String(buforg);
こんな感じでやって strTestには 0xef27・てすと0xef28 と入るのが理想なんですが
0x30fb・てすと0x30fb になってしまい 「・」が0x30fbなので区別がつかない状態になってしまいます。
Stringはおろかwchar_tなどのUnicode全般でこのような現象になってる気がするのですが、
この勝手に変換されちゃう現象どうにかする方法はないでしょうか?
WindowsXP SP3 VisualStudio2008Pro C++/CLI
0969デフォルトの名無しさん
2009/03/13(金) 09:54:02second[0]=0x30, second[1]=0xfb; ではダメか?
ちなみに、ソースファイルの文字コードは何ですか?
(UTF-16(Unicode):UTF-8:S-JIS)
0970デフォルトの名無しさん
2009/03/13(金) 18:10:000x30fb 0x30 0xfa1b 0xff84 'す' 'と' 0x30fb って感じになりました。
ソースコードは日本語(S-JIS) コードページ: 932です。
Unicode(UTF-8シグネチャつき)コードページ:65001
Unicode コードページ1200
Unicode(Big Endian) コードページ1201
で試してみましたが効果ありませんでした。
0971デフォルトの名無しさん
2009/03/14(土) 01:19:54独自コード梅たいなら徹頭徹尾BYTE[]で扱わないとダメなんでないの
0972デフォルトの名無しさん
2009/03/14(土) 10:17:37うまくいくぽいです。
なので一時的に 0xef27を外字領域の文字コードに置き換えるなどして対処してみます
ありがとうございました。
0973デフォルトの名無しさん
2009/03/14(土) 18:13:02初めからwchar_t使えばいいじゃない。
wchar_t first[] = {0xef27, 0x00};
wchar_t second[] = L"・てすと";
wchar_t last[] = {0xef28, 0x00};
wchar_t buforg[100];
ZeroMemory(buforg, sizeof(buforg));
wcscat(buforg, first);
wcscat(buforg, second);
wcscat(buforg, last);
System::String^ strTest = gcnew String(buforg);
"・てすと"をwchar_tにするのがいや?
だったら、first、second、lastみんなSystem::Stringにしてから連結するのが楽だよ。
>>969-970
ソースコード自体の文字コードは、プログラムには基本的に影響しないよ。
0974969
2009/03/14(土) 18:46:03:
0x30fb --> "・" だから、Unicode-BE でソース書かないと。ただし、Visual Studio IDEで開くと文字化けする。
char型に 0xfe が代入出来てるのも気になった。
:
テスト方法:
IO::StreamWriter^ sw = gcnew IO::StreamWriter("testCLI.txt", false, Text::Encoding::BigEndianUnicode );
sw->Write(strTest);
sw->Close();
0975デフォルトの名無しさん
2009/03/14(土) 19:57:55いや、ソースコードがいかなる文字コードだろうと、
char mbs[] = "・";はchar mbs[] = {0x81, 0x45, 0x00};と同じだし(日本語環境なら)、
wchar_t wcs[] = L"・";はchar mbs[] = {0x30fb 0x0000};と同じ。
そのテスト方法のコードで確かめてみれば分かる。
charの初期化で0xfeを指定している部分は警告レベルを上げると指摘される。
'\xfe'と書けばいい。
0976974
2009/03/14(土) 22:16:46> char second[10] = "・てすと";
> 「・てすと」になってしまい、「・」が0x30fbなので
初期化の時点では「・」は0x30fbでない。
0977デフォルトの名無しさん
2009/03/15(日) 00:04:420978969
2009/03/15(日) 00:07:10UCHAR first[3] = {0xef, 0x27, 0x00};
UCHAR second[10] = "・てすと";
UCHAR last[3] = {0xef, 0x28, 0x00};
TCHAR buforg[100];
などのように、変更する。
System::String((TCHAR*)buforg); に変えるだけでも同じ結果になる。
> strTestには 0xef27・てすと0xef28 と入るのが理想なんですが
0979969
2009/03/15(日) 00:47:00TCHAR second[5] = L"・てすと";
> もしかして、"・てすと"の「・」ってその外字だったり独自のコードだったりするの?
違う、と思う。
0980デフォルトの名無しさん
2009/03/15(日) 01:32:43TCHARってだけ書かれてもUNICODEのときの話かそうでないのか分からない。
0981969
2009/03/15(日) 02:07:02> char first[3] = {0xef, 0x27, 0x00};
> char last[3] = {0xef, 0x28, 0x00};
それと、このあたりのバイトオーダーも気になるから
UCHAR first[3] = {0x27, 0xef, 0x00};
UCHAR last[3] = {0x28, 0xef, 0x00};
> strTestには 0xef27・てすと0xef28 と入るのが理想なんですが
0982973
2009/03/15(日) 17:50:52マルチバイトの0xef27と「・」(0x8145)が Stringにしたときに同じ文字コードだよってのを確認するための「・」です。
最終的にStringインスタンス生成するときにUnicodeで渡せばエンコード入らないので
独自文字コードが変化しないって感じですか。
今回は出力する直前までbyte[]で保持し続けておいて出力する段階で外字領域に一時的に変換するって形で対応しちゃったんですが
とても勉強になりました。ありがとうございました。
0983デフォルトの名無しさん
2009/03/15(日) 19:30:59レス数が950を超えています。1000を超えると書き込みができなくなります。