2ちゃんねる★スマホ版★■掲示板に戻る■全部1-最新50

ふらっと C#,C♯,C#(初心者用) Part127 [無断転載禁止]©2ch.net

1 :
2017/03/14(火) 22:27:22.78 ID:MclzPbbI0
「どんなにくだらないC#プログラミングやVisual C#の使い方に関する質問でも誰かが優しくレスをしてくれるスレッド」です。

他のスレッドでは書き込めないような低レベルな質問、
質問者自身なんだか意味がよく分からない質問、
ググろうにもキーワードが分からないなど、勇気をもって書き込んでください。

内容に応じて他スレ・他板へ行くことを勧められることがあります。ご了承下さい。

なお、テンプレが読めない回答者は邪魔なので後述のC#相談室に移動して下さい。
C#に関係の無い話題や荒らしの相手や罵倒レスはやめてください

>>980を踏んだ人は新スレを建てて下さい。
>>980が無理な場合、話し合って新スレを建てる人を決めて下さい。

■前スレ
ふらっと C#,C♯,C#(初心者用) Part126
http://echo.2ch.net/test/read.cgi/tech/1482772061/

■関連スレ
C#, C♯, C#相談室 Part91
http://echo.2ch.net/test/read.cgi/tech/1467211515/

■コードを貼る場合は↓を使いましょう。
http://ideone.com/
https://dotnetfiddle.net/

■情報源
https://msdn.microsoft.com/en-us/library/gg145045.aspx
http://referencesource.microsoft.com/
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
2 :
2017/03/14(火) 22:37:13.96 ID:MclzPbbI0
C#でテトリスを作っているのですが、参考になるコードってないですか?
まだ初心者でバグを大量に出しながら作っているんですが、なかなか捗らないです
今はまだ未完全で汚いけどこんな感じです
https://ideone.com/c4TEhV
3 :
2017/03/15(水) 02:30:28.85 ID:wkiqnTd/a
未完全って言葉初めて聞いたw
しょーもない突っ込みで申し訳ない
4 :
2017/03/15(水) 08:42:32.55 ID:yzsCJmkM0
ビット演算だよな、テトリスって
5 :
2017/03/15(水) 08:54:49.69 ID:lA4FQmjV0
テトリス ソースコード
でググれば、幾らでも参考コード転がってるだろ
6 :
2017/03/15(水) 18:13:54.32 ID:5s+i++Yx0
>>3
未完成でしたねwすいません

>>4
ビット演算ってどういうことですか?どこにそんな要素が・・・
7 :
2017/03/15(水) 18:16:53.39 ID:yzsCJmkM0
CodeProjectにVBのとかあんね
8 :
2017/03/15(水) 18:26:00.87 ID:yzsCJmkM0
>>6
10x10の場合

0000000000
0000000000
0000011000
0000011001
0000000011
1111110111
1111110111
1111110111
1111110111
1111110111
9 :
2017/03/15(水) 19:11:49.17 ID:5s+i++Yx0
>>8
なるほどそういうことですね
自分の場合、ブロックが動いているか動いてないかわからないので画面上を10x20の配列で空白、浮遊ブロック、固定ブロックは0,1,2で表しています
10 :
2017/03/15(水) 20:36:46.48 ID:RZSDKHzod
>>9
絵の部分と判定部を分けるといいよ。
あたり判定もビット演算でイケるし
11 :
2017/03/15(水) 23:21:08.12 ID:5s+i++Yx0
当たり判定や固定判定(置き判定?)ってどのような感じでするのでしょうか?
自分の場合当たり判定はまだ未完成で、置き判定は最深部の19にたどりつくか、下に固定済みブロックがある場合固定するようにしています
あと左右の移動も実際動けるかという判断もまだ未完成です
12 :
2017/03/15(水) 23:41:32.28 ID:jlffhypza
移動回転後のブロックの位置に物体がすでにあるかないかで判定するんじゃない?
セガテトリスの有名な回転技もこういう判定をしてるから起こる現象なんだろうねたぶん

テトリスはそうでもないと思うけど、ゲーム作ったことないけどゲームって大変そうだよなほんと。
もう30年以上も前のバブルボブルの泡の処理なんていったいどうやってるのか
全然わかんないわ。
13 :
2017/03/15(水) 23:58:13.40 ID:jtyKWGP00
>>12
ゲームなんて今の時代簡単に作れるぞ
ゲームエンジンっていうのがあって、当たり判定やら物理的な計算はあるていどエンジン側がやってくれる
PCからゲーム機、スマホまでコードはほぼ同じでビルドだけ変えればいい
今はプログラムよりはるかにゲーム素材(テクスチャ、シェーダー、ポリゴンメッシュ)を作る手間のほうが大変だわ
14 :
2017/03/16(木) 00:04:11.50 ID:ivxQ9gfkM
ショボいハードと開発環境でよくやったもんだ
レトロゲープログラムは黒魔術の宝庫
15 :
2017/03/16(木) 00:25:55.47 ID:yR1cNv8pr
20年ゲーム開発やってきて飽きた
16 :
デフォルトの名無しさん (ワッチョイ efe5-v8EU)
2017/03/17(金) 17:08:46.67 ID:4N1HwP8Z0
vs2015 framework 4.6系
C#でinterbase XE7にado.net プロバイダをDbProviderFactory使って接続している人いませんか?
エンバカデロで調べても2011年くらいのドライバしかなくいろいろと不安でして。
とりあえず接続できるみたいですが。
17 :
2017/03/17(金) 17:24:08.08 ID:4N1HwP8Z0
sage忘れ失礼しました。
18 :
2017/03/17(金) 17:47:36.61 ID:94dikxGb0
すいません、テトリスについて聞いていたものです

>>12
自分はテトリスでもかなり難しいと感じています
移動先・回転後に物体がないかという判断なんてどう実装すればいいのか想像もつかないです
C#でシンプルなテトリスのソースがあれば教えてください、C言語だとどうしてもC#でもCっぽくなっていまいます
19 :
2017/03/17(金) 18:44:18.43 ID:ct5skH120
>>18
飲み屋から、まずあたり判定で

_はスペース。
俺はおまえ。
姉はアレ。

____俺___ → 0b00001000 → 0x08 → Byte ore = 0x08;
姉姉__姉_姉姉 → 0b11001011 → 0xCB → Byte ane = 0xCB;

とすれば、AND演算で

if (0 != (ore & ane))
{
// 姉と
}
else
{
// セーフ
}

移動先なら、俺の左右にもう1ビットつけ0x1Cでする。

あとは他の人たのm
20 :
2017/03/17(金) 19:10:46.46 ID:0wlX6r36M
>>19
こういう無意味な最適化はやめてコードが汚くなる
21 :
2017/03/17(金) 19:19:25.65 ID:dNn3pXEJ0
>>18
ここで聞かなくても参考になるソース腐るほど出てきそうなんだけど
すぐ思いつくのは移動先の状態の配列を用意しておいて該当位置に当てはめてみて一致点があれば回せないとか
なんか一度で完璧なもの作ろうとしていないか?やり方もいろいろあると思うけどできるところから作っていったら
ネットに転がっているソースを見て仕様と合わせて考えた方がここで聞くより勉強になるよ
22 :
2017/03/17(金) 19:24:13.85 ID:yk+dMPCw0
横だけど、試しに置いてみて一致点があれば回せないとするのは
手法の中では一番わかりやすく簡単に思えるけれど。
そうでない方法を考えようとすると結構めんどくさい話になると思う。
23 :
2017/03/17(金) 19:26:54.13 ID:amXHzhnUd
>>20
すまんの
24 :
2017/03/17(金) 19:28:22.24 ID:gU2hWCcs0
回そうとして一致点があったら、全体的に1マス上にずらすもんじゃないの
25 :
2017/03/17(金) 19:34:07.95 ID:amXHzhnUd
ふと、モノクロビットマップで判定するって思ったけど、どうなんだろ?
26 :
2017/03/17(金) 19:35:34.19 ID:yk+dMPCw0
>>19 はオプティマイズうんぬんの前に例が何言ってるか分からんねw
マスク処理にビットマスクを使うのは定石だから、コードが汚いと忌諱するのも変だとも思う。
27 :
2017/03/17(金) 19:35:36.27 ID:94dikxGb0
>>19
なんとなくですがわかります
AND演算して0が帰ってきたら置けるわけですね
でもそこまでコード組み立てるのがきついですね

>>21
ロジックが全くわからない場合、解説ページなんか見ながらただソースを打つだけでも勉強になりますかね?
28 :
2017/03/17(金) 19:40:09.92 ID:yk+dMPCw0
>>27
テトリスの画面はサイズがちっちゃいから
boolの二次元配列を作ってやればいいと思うよ
クローン作っても知れてるし、全マスチェックでもたいしたコストにはならない。
29 :
2017/03/17(金) 20:19:39.38 ID:94dikxGb0
>>28
bool型は考えたんですが、浮遊ブロック固定ブロックの判定に困ってしまい結局int型にしたんです

あとテトリスは関係ないんですが、Form1クラス上でチェックボックスやラジオボタンでAnotherクラスの挙動を変更できるようにしているんですが
今は2番でやっているんですが、Form1クラスがイベントだらけになって困ってしまいます

1、Form1クラス内にpublicなメンバとしてそれぞれチェックボックス、ラジオボタンの状態を返すプロパティを定義し、Anotherクラスではオプション項目が実行されるたびにForm1のpublicなメンバを参照
2、Form1クラスでチェックボックスやラジオボタンのCheckChangedイベント等を使いForm1上で変更されるたびに通知

どう実装するのがいいんでしょうか?他にもっと良い方法があったら教えてください
30 :
2017/03/17(金) 20:24:33.12 ID:dNn3pXEJ0
>>29
引数が同じものを通知用にまとめれば用意するメソッドは減らせる
そこのなかでsenderごとの分岐処理が必要になるかもしれないが
31 :
2017/03/17(金) 20:28:32.90 ID:To9AyLhLa
ビット演算なんて使わない方がいいと思うよ個人的にはw
かえってコードが複雑になるだけ。

(1) Tetriminoオブジェクトはそれを構成するすべてのブロックの位置(原点からのオフセット)
のリストを、テトリミノの種類と現在の回転状態に合わせて返すメソッドを持つ。

(2) Fieldオブジェクトは指定位置にブロックが存在するかどうかを返すメソッドを持つ

この2つを使って普通にヒットテストする方が簡単で分かりやすい。
何が悲しくてわざわざ問題を複雑にする必要があるのか
32 :
2017/03/17(金) 20:40:56.58 ID:0wlX6r36M
8bit時代のセピア色の思い出があるんだろう
33 :
2017/03/17(金) 21:05:34.31 ID:amXHzhnUd
>>31
モノクロ画像でヒットテストだったら
同じようにしかみえない。
34 :
2017/03/17(金) 21:48:09.11 ID:yk+dMPCw0
>>31
この手の本格的な処理をするときには必ず必要になってくるもの
テトリスは問題が小さいから、bool配列でも十分なだけ。
勉強として面倒といわずビット処理はやっておくべきだろう
やらない理由は、たくさんの事を一度にしようとすると心が折れるからという事以上の話ではないよ。
35 :
2017/03/17(金) 21:51:58.37 ID:yk+dMPCw0
>>29
まぁ、気の向くままやればいいとは思うけれど
固定ブロック用と移動してくるブロック用で、二つ配列を準備してやれば問題が綺麗に分かれるよ。
あとはfor文なりで同一マスに重なってないか調べればいい。
36 :
2017/03/17(金) 21:53:34.95 ID:NMA0GcjeH
>>34
逆やろ
テトリスは問題が小さいからビット演算でもどうにかなるだけ
37 :
2017/03/17(金) 21:59:27.21 ID:0wlX6r36M
ビット演算を使うとおかしくなるのか
38 :
2017/03/17(金) 22:26:52.64 ID:To9AyLhLa
ビット演算なんて中学生でも分かるってw
大上段に構えて「勉強する」程のことでもない。
そんなことより可読的なコードを書くことの方が何倍も重要でしょ

フィールド上のブロックが存在する行全体をビットイメージで
読みだす(int[]?)にしろ、ブロックが存在する矩形部分だけを
CRTの走査線状にスキャンして読みだす(int?)にしろ、
そんなコードが理解しやすいものになるはずがない
39 :
2017/03/17(金) 22:29:29.04 ID:To9AyLhLa
ごめんブロックじゃなくてテトリミノって言うんだったなあれ
40 :
2017/03/17(金) 22:43:56.60 ID:zPEoLLc90
>>38
可読的?
41 :
2017/03/17(金) 23:12:36.99 ID:e8roEC6e0
>>38
?
42 :
2017/03/17(金) 23:46:31.08 ID:0wlX6r36M
>>38
ネタはいいから真面目にやって
43 :
2017/03/17(金) 23:51:42.18 ID:gTyXrRTf0
渾身のネタにこのようなリアクション
44 :
2017/03/17(金) 23:54:37.08 ID:yk+dMPCw0
>>36
bool(1byte)で一つづつ比較するのと long で64個まとめて比較するのでは64倍速くなるから
テトリスのマスの数が1000x1000といった大きなサイズになると、boolでは実用性が無くなるが
ビット比較なら特に問題なく動作するという事はあるんだよ。
45 :
2017/03/18(土) 01:16:46.09 ID:Ao4ZP8MA0
たかが64倍とも言える
計算量のオーダーが変わるわけじゃない
初心者スレ的には、小手先の最適化よりまずはアルゴリズムを学んだ方がいいよ
46 :
2017/03/18(土) 01:19:13.16 ID:SJyQVDEK0
1000x1000とかデケーなテトリス
47 :
2017/03/18(土) 01:33:01.76 ID:x0Zb34p90
結局、可読的なアルゴリズムのあたり判定のアルゴリズムってどうなん?
48 :
2017/03/18(土) 01:33:46.66 ID:x0Zb34p90
って何書いてるんだ自分
49 :
2017/03/18(土) 01:34:05.18 ID:rXXwyjPPa
これは確実に言えるけど、>>38に書いたような該当箇所のビットイメージを作成する
処理はかなり重いよw

素直に>>31のようにやった方が恐らく早い
しかもわかりにくいコードになるからいいところなしだ。
50 :
2017/03/18(土) 01:41:26.56 ID:IPNYUeBX0
たかだかビット演算で分かり難いとか言っちゃうのは、単にコードを読む能力が不足し過ぎてるだけでは……
51 :
2017/03/18(土) 01:44:14.09 ID:rXXwyjPPa
>>50
どういう読解力だよ

ビット演算なんて中学生でもわかる簡単な話だが、
必要なビットイメージを作成する処理は可読的なものにならないと言ってるんだけど。
52 :
2017/03/18(土) 05:22:08.56 ID:5tfkFlUW0
フォーム上のbutton1,button2...と続くものをループ処理したいのですが、旨くできません。ご教示ください。
53 :
2017/03/18(土) 05:39:51.24 ID:riSljxtq0
>>52
Buttonの配列作って処理したらいいのでは?
54 :
2017/03/18(土) 06:06:11.56 ID:x0Zb34p90
>>50
>必要なビットイメージを作成する処理は
>可読的なものにならないと言ってるんだけど。

ここ詳しく
55 :
2017/03/18(土) 09:39:29.54 ID:Ao4ZP8MA0
>>52
(Button)Controls[“button” + i]
毛嫌いする人もいるけど今時は設定より規約よ
56 :
2017/03/18(土) 09:48:29.45 ID:nb8peadM0
>>52
連番だけなら>>55だし
あとフォーム上のすべてのボタンだと例えば
foreach (Control c in this.Controls) if (c.GetType() == typeof(Button)) ((Button)c).PerformClick();
保守考えると>>53の方が多分扱いやすい
57 :
2017/03/18(土) 10:03:46.58 ID:Gq5DbfzeM
void DoSomething() {
foreach(var button in GetButtonNs()) {
DoSomething(button);
}
}

IEnumerable<Button> GetButtonNs() {
var reg = new Regex("^button\d+$", RegexOptions.Compiled);
return GetControls().OfType<Button>().Where(b => reg.IsMatch(b.Name));
}

static IEnumerable<Control> GetControls(Control parent) {
if (parent != null) {
yield return parent;
foreach (var child in parent.Controls) {
foreach (var descendant in GetControls(child)) {
yield return descendant;
}
}
}
}
58 :
2017/03/18(土) 12:21:39.92 ID:5tfkFlUW0
>>55
>>56
>>57
>>53
せっかく教えて頂いたところ、
InitializeComponent();のあとに
foreach (Control c in this.Controls) をまわしてみたところ、要素がみつかりません。もしかして、panelの上に配置してるのがまずいのでしょうか?
59 :
2017/03/18(土) 12:28:02.71 ID:Dyy1P5+Ld
>>58
じゃあパネルのControlsプロパティを調べなさい
60 :
デフォルトの名無しさん (アウアウウー Sa37-ocw+)
2017/03/18(土) 12:49:25.28 ID:MAxv0qJ7a
私も初心者です。便乗ですがコントロールを配列にするのは
enumにするのが一番ですか?
一般的な普通の配列やlistにするのはやっぱりマズイですか?
61 :
2017/03/18(土) 13:17:13.10 ID:JkN6BgGG0
いつもlistにしてる
62 :
2017/03/18(土) 13:19:14.78 ID:5tfkFlUW0
>>59
パネルのプロパティから取得できました!

皆さんありがとうございます!
63 :
デフォルトの名無しさん (ワッチョイ 3f4c-SJUV)
2017/03/18(土) 17:30:41.83 ID:Bz2opibN0
昨日までのテトリスの話つぼったww
あれだけレス返すのにソースがこれっぽっちもないwwww
64 :
2017/03/18(土) 17:45:26.12 ID:sZRSqPbMM
https://github.com/DQNEO/CppTetris
読んで、C#で作ってみなされ
65 :
2017/03/18(土) 18:16:41.91 ID:Bz2opibN0
>>31
この内容興味あるな。
ヒット判定した後のクリア処理とかどうすんだろうか?
クリア分オフセットを縦にずらすのかな?
66 :
2017/03/18(土) 18:43:13.06 ID:xCo3fT46a
>>63
別にお前さんがソース提示したっていいんだよ。
できるならな。

いくらテトリスがゲームとしては比較的単純だと言っても
話題になってるような判定処理の部分だけを全体の設計から切り離して
書けるほど単純じゃねえだろ。

そのぐらい分かれよ。
67 :
2017/03/18(土) 20:14:20.71 ID:STVlMw5Y0
テトリスは回転もあるし、素人には絶対ムリ

素人向きなのは、Unreal Engine で、ブロック崩しとか
68 :
2017/03/18(土) 20:25:14.76 ID:K13sbRYt0
昔ニコ動かどっかに1時間くらいで環境構築からテトリス作成する動画あったな
もちろん動画はカット編集とか無しのガチで1時間
クリーンインストールしたPCで開始して画像製作もその時間で仕上げるんだから結構すごいなって思った
69 :
2017/03/18(土) 20:30:53.03 ID:1jN6Nl4i0
それを参考にして C#+WPF で作成
http://takachan.hatenablog.com/entry/2015/03/25/233341
70 :
2017/03/18(土) 21:19:50.38 ID:Gq5DbfzeM
クリーンインストールしたPCにアップデートと開発環境入れるだけで1時間以上かかるだろ
71 :
2017/03/18(土) 21:29:21.96 ID:K13sbRYt0
>>70
そんなガッツリしたもんじゃないよ
エディタはメモ帳だったと思うし
便利なツールはいっぱいあるけどそういうのは全部取っ払ってプログラムってのはこういうもんだよっていうレクチャーには良い動画だった
72 :
2017/03/18(土) 21:31:20.66 ID:IPNYUeBX0
Borland C++ Compiler とかだろうか
あれなら導入早い
73 :
デフォルトの名無しさん (ワッチョイ 837b-ns4E)
2017/03/18(土) 22:32:07.60 ID:IUCfFveo0
電話番号の正規表現のパターンで、ハイフンありとハイフンなし両方マッチ出来るパターンを教えてください。
ハイフンありとなし用それぞれ個別に定義してるんですが、一括にしたいです。
74 :
2017/03/18(土) 22:33:47.90 ID:IUCfFveo0
すみませんとりあえず[-?\\d]+で動きました・・・・
75 :
2017/03/18(土) 22:35:45.31 ID:SJyQVDEK0
ハイフンなんか捨てちゃえばいいじゃん
76 :
2017/03/18(土) 22:57:20.73 ID:Ao4ZP8MA0
>>74
それ ――――――――――8―――――― でも通るぞ
77 :
デフォルトの名無しさん (ワッチョイ ef86-ocw+)
2017/03/19(日) 00:16:27.53 ID:DWsQT7k40
電話番号って人というか地方によっては
最初の3桁で切ったり2桁だったり4桁だったりいろいろ。
数字さえあってればハイフンなんかどこにあってもいいから
---08011112222って入力してもいいわけだし。
ならチェックする時はハイフン取って
チェックすべきじゃね?
78 :
2017/03/19(日) 00:47:58.32 ID:kR5w9vh20
単一テーブルで済む10,000件程度のデータだったらなにつかう?SQLite?XML?compact edition?
アプリ起動時に全件取得してグリッドに展開するんだけど一番はやいのどれ?
79 :
2017/03/19(日) 00:51:21.35 ID:xqSElSFg0
>>78
起動時に全件取得するだけならDBなんぞ要らん
CSVかJSON Linesで十分
80 :
2017/03/19(日) 00:51:43.66 ID:PWrmpV5o0
ここで聞かずに自分で試せ
81 :
2017/03/19(日) 02:44:05.24 ID:er1A5tjj0
一番早いのは自殺することだよ死ね
82 :
2017/03/19(日) 05:24:18.87 ID:sPSEYXuE0
>>78
csvで一瞬
83 :
2017/03/19(日) 10:30:33.06 ID:IinMJCLx0
>>77
入力時のチェックとかなんでしょ
俺なら ^\d+(?:-\d+)*$ にするかな
84 :
2017/03/19(日) 10:53:48.13 ID:jTJMP1Ep0
全角数字も許してるのは意図的だよな?
85 :
デフォルトの名無しさん (アウアウウー Sa37-ocw+)
2017/03/19(日) 11:08:17.40 ID:XP3QTKYFa
>>83
ハイフン入力が許可されている上に
電話番号とはどこにハイフンがあるのか決まってないのに
最初だけはハイフン入力を禁止するメリットが
感じられないよ。
86 :
2017/03/19(日) 11:12:19.43 ID:XP3QTKYFa
チェックする対象をそのまま再表示させるときに
顧客が「最初にハイフンで始まるのはみっともないから
禁止にしてくれ」
という要件があるときなら別だが
87 :
2017/03/19(日) 11:25:49.14 ID:/s/PFzqm0
電話番号の場合、番号自体にハイフンは含まれず、番号同士の区切りとして使用されている。
なら最初にハイフンが来るってのは入力誤りとしてみていい、という考え方も出来るな。
むしろその「区切り」がハイフンに限定されてないってことの方が面倒くさい予感がする。

まあどちらにしろお客さんに確認して決めてもらえばいいだけの話だけど。
88 :
2017/03/19(日) 11:30:39.00 ID:KOfw/Vvp0
UIコントロール側で、数字以外が入力されても無効化される様にしとくとかな
89 :
2017/03/19(日) 11:40:02.83 ID:IinMJCLx0
>>85
最初だけ?
0--1 とかも弾いてる
って言うかそっちがメインなんだけどね
まあ俺ならこうするって話だからお前は好きなようにすればいいよ
90 :
2017/03/19(日) 11:49:33.07 ID:ZBd9Ow6v0
電話番号は数字入力限定にしてハイフンはこちら側で表示するのが楽だったな
91 :
デフォルトの名無しさん (ワッチョイ ef86-ocw+)
2017/03/19(日) 11:53:40.38 ID:DWsQT7k40
>>89
>0--1 とかも弾いてる
そんなちぇっする位なら
>>77でよくね?まさかリプレイス知らんの?
92 :
デフォルトの名無しさん (ワッチョイ ef86-ocw+)
2017/03/19(日) 11:54:40.88 ID:DWsQT7k40
×そんなちぇっ
○そんなチェック
93 :
2017/03/19(日) 12:05:39.93 ID:NLwuZbNb0
>>73
>ハイフンありとなし用それぞれ個別に定義してるんですが、一括にしたいです。
今の別個定義を明記し正規表現スレいけば
94 :
2017/03/19(日) 12:23:30.39 ID:IinMJCLx0
>>91
だから自分の好きなようにすればいいだろ
入力された内容をそのまま格納したいって言う用途はそこそこあるから常にリプレイスでいいわけじゃないし
95 :
2017/03/19(日) 12:24:34.80 ID:yhAiVzME0
>>78
SQL Server Compactは無いな。
VSですらSQLiteに移行した。
96 :
2017/03/19(日) 12:31:28.97 ID:/s/PFzqm0
まあ実際、利用する側としてみたらハイフンないと分かりづらいものね。
作る側の都合を優先するわけにもいかないのが辛いよね。
97 :
デフォルトの名無しさん (ワッチョイ ef86-ocw+)
2017/03/19(日) 13:04:38.64 ID:DWsQT7k40
>>96
入力

変数a

(ハイフン削ぎ落とし)→変数b

チェック結果←チェック処理(変数b)

trueなら変数a出力


これで良くね?って意味
98 :
2017/03/19(日) 13:35:32.03 ID:T+JU6hX20
>>97
こんな簡単なことを説明せなわからんのか?バカ!
って思うけどおそらくbindingとかいうクソ機能に載せてるからそれもできないと予想

だっせーwwwwwwww
99 :
2017/03/19(日) 13:56:05.97 ID:/s/PFzqm0
求めてるチェックの内容が違うんだろうな。
好きにすればいいと思う。に同意。
100 :
2017/03/19(日) 14:04:18.02 ID:IinMJCLx0
なんでそんな面倒なことするんだろう...
101 :
2017/03/19(日) 14:53:20.01 ID:58yonE+50
73が74で動いたって言ってんだから要件はそれでいいんだろ
どこの第三者だよ勝手に反対しているのは
102 :
デフォルトの名無しさん (ワッチョイ 33a7-SJUV)
2017/03/19(日) 19:29:04.86 ID:zv3HVI5W0
この前のテトリスの話もだが絶対厨がいるんだよ。
103 :
2017/03/19(日) 20:17:58.70 ID:18xjVn6j0
WebBrowserにCookieを設定するのって以下でできないんでしょうか?
デバッグ見ていてNavigateメソッドが呼ばれないんですけど・・・


webBrowser1.Document.Cookie = "name=value;name=value";
webBrowser1.Navigate("http://hogehoge.com");
104 :
2017/03/19(日) 22:43:38.15 ID:IgdfS+kN0
>>103
それはサーバーから返ってきたCookieが入るとこでしょ
Navigate(string,string,byte,string)
の第4引数に入れてみては
105 :
2017/03/19(日) 23:04:28.91 ID:18xjVn6j0
webBrowser1.Navigate("https://hoge.com", null, null, "Cookie:name=value;name=value;");
このように試してみましたがダメでした
106 :
2017/03/19(日) 23:42:23.02 ID:T+JU6hX20
ところでちょっと前からwebャuラウザ関連の封キきまくってる瑞lは明らかに
実力以上のものを背負い込んでしまって辛そうだな
何か突っかかるたびにここで聞いてないか?
107 :
デフォルトの名無しさん (ワッチョイ ef86-ocw+)
2017/03/20(月) 00:30:13.13 ID:pi/vFj6F0
>>106
は?
108 :
2017/03/20(月) 01:25:03.58 ID:6EO7QiL70
は?じゃねえよ
ストレートに言って欲しいのか
お前の能力値じゃ100年早いんだよ死ね
109 :
2017/03/20(月) 01:32:55.77 ID:Sn5smZ/60
へ?
110 :
2017/03/20(月) 05:54:36.13 ID:bOz7i6030
恐縮なのですがMSDNライブラリ見る限りWebBrowser.Document.CookieクラスでCookieを取得、設定するって書いてあるんですが違うんですか?
111 :
デフォルトの名無しさん (ワッチョイ ef86-ocw+)
2017/03/20(月) 07:21:07.99 ID:pi/vFj6F0
>>106翻訳できる奴いんの?
112 :
2017/03/20(月) 08:55:26.82 ID:o5mEr8dwr
100年後もC#あるのかね?
113 :
2017/03/20(月) 09:57:20.29 ID:Sn5smZ/60
アホの戯言だから気にするな
114 :
2017/03/20(月) 11:00:55.93 ID:AjFDkqu30
webbrowser c# cookie 設定

でググったらそれっぽいの出てきたよ
115 :
2017/03/20(月) 13:14:10.30 ID:bOz7i6030
InternetSetCookieですか?あれだとIEまでCookieが設定されませんか?
116 :
2017/03/20(月) 13:26:56.33 ID:LvUuGVTWM
>>115
じゃあ問題はcookieの設定や取得ができないことじゃないんだね?
117 :
デフォルトの名無しさん (ワッチョイ 5341-3xgA)
2017/03/20(月) 14:50:51.45 ID:W87CYmkA0
>>112
まず人類が・・・

その頃は専門プログラマは
1社に数人とかになってるんじゃないかな?

C#よりも平易な記述って想像しにくいけど
より良い言語が出てきてんじゃね?
118 :
2017/03/20(月) 14:59:57.38 ID:o5mEr8dwr
100年って進化はかなりのもんだよな
119 :
2017/03/20(月) 17:16:18.02 ID:bOz7i6030
>>116
なんか誘導尋問みたいになっていますが・・・
Document.Cookieで設定できないので記述がおかしいのかなと思い質問させてもらったんです
120 :
2017/03/20(月) 19:15:44.24 ID:vFTbbfj20
>>119
IEの事が問題なの?君は何に困っているんだい?
121 :
2017/03/20(月) 19:17:15.82 ID:AjFDkqu30
そもそもどこのcookieを取得して、どこのcookieに保存したいのか?
122 :
2017/03/20(月) 19:27:20.14 ID:bOz7i6030
>>120
上のほうにも書いてあるとおりDocument.Cookieプロパティを使ってCookieが設定できなくて困っているんです

>>121
Cookie取得したいわけではないです
ただwebBroserに事前に取得したCookieを設定したいだけなんです
123 :
2017/03/20(月) 21:52:08.39 ID:AjFDkqu30
>>122
ググるとそいつで設定すると同じ名前で複数できるって記述がある
まともな方法じゃねーんじゃね?
124 :
2017/03/20(月) 21:52:40.28 ID:1C/wTzjH0
>>105の方法で4番めのheaders引数の尻に改行つければいいんでないの
ググったらそんなコードあったけど
125 :
デフォルトの名無しさん (ワッチョイ ef86-ocw+)
2017/03/20(月) 22:02:46.62 ID:pi/vFj6F0
>>122
最初のアクセス時はdocumentがnullだから設定できないよ。
(try〜catchで見てるよね?)

一端全部処理が終わってブラウザに表示されてから
再度同じURLでアクセスすればできるよ。
でもそんな動き変だから
他にやり方があるんじゃね?
初心者じゃない方で聞いてみれば?
因みに
navigatメソッド

処理終了してブラウザ開く
一端ここで終わり。ブラウザを開いたまま同じことをする

navigatメソッド

document.クッキーにクッキーを設定

ブラウザ開く
この時なら設定されてるよ。

因みにURL先にない項目は設定されない。
126 :
2017/03/22(水) 13:24:53.95 ID:lIDSj6CK0
ブラウザ関連の質問続いているみたいなので便乗して質問させてください

WebBrowser wb = new WebBrowser();
wb.Navigate("http://www.yahoo.co.jp/");
ブラウザの読み込みが終わったら処理Aをする。
これをやりたい場合ってDocumentCompletedイベントを使うしかないのでしょうか?

wb.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(Completed);
private void Completed(object sender,WebBrowserDocumentCompletedEventArgs e)
{
  if(e.Url ==new Uri("http://jp.leagueoflegends.com/")){
 処理A
}
}

読み込んだアドレスごとに分岐などをすればいいのでしょうが、
処理A のあと、GoogleのTOPを表示して処理B、Gooのページを表示して処理Bとすると
コードが複雑になりますし、同じページで違う処理をしたい場合などには各処理にイベントを分ける必要がありますよね?

ページA読み込み
ページA読み込み終了
処理A
ページB読み込み
ページB読み込み終了
処理B
ページA読み込み
ページA読み込み終了
処理C

上記のように見やすく端的に処理を進めたい場合ってどのようにすればいいのでしょうか?
127 :
2017/03/22(水) 13:29:06.04 ID:7zaDxJTNr
一つのページを読み込んでもDocumentCompletedイベントは複数回呼ばれることがあるからそれではダメ
なぜ複数回呼ばれるかは、iframeがあったらその分イベント呼ぶ仕様になってる
あとajaxの後読みも考えるとそんな単純にはいかない
ここはみんな苦労してる
128 :
2017/03/22(水) 13:30:35.06 ID:j7n5bdMUp
ajaxの通信が終わったのを外部から検知できる方法あるの?
129 :
2017/03/22(水) 14:19:10.58 ID:7zaDxJTNr
単純に読み込みが終わったかはフリーズさせないようにループ処理の中で前回取得したhtmlの長さと今回取得したhtmlの長さを比較して同じ長さになったら読み込み完了ってすればいい。

ただし回線細かったり重いサーバーの場合は長さ比較だけじゃダメだからBusy状態かも確認しながらやる
それとレスポンスコードもみたり

ほんと面倒

海外のサイトとかみたりしながらいろいろやってはみている
130 :
2017/03/23(木) 18:35:48.68 ID:rtOuucY00
>>125
返信送れてすいません

webBrowser1.Navigate("https://hoge.org");
webBrowser1.Stop();
webBrowser1.Navigate("https://hoge.org");
webBrowser1.Document.Cookie = "name=value";
webBrowser1.Document.Cookie = "name=value";
としましたがダメでした
131 :
2017/03/23(木) 18:53:40.84 ID:HuteCzcG0
>>130
ちゃんと125の手順通りやってみるが吉
コードで1発で解決できたらそれに越したことないけど現状できないんだから
まず問題の切り分けに使える情報を探すべきっしょ
132 :
2017/03/23(木) 19:12:45.62 ID:rtOuucY00
>>131
最初のnavigateメソッドを呼んでから「処理終了して〜ブラウザを開いたまま同じことをする」てのがわからないです
ブラウザを開いたままってどういうことですか?
133 :
2017/03/24(金) 00:15:56.39 ID:nHskNCkL0
やっぱりページのロード完了の見極めは皆さん苦労してらっしゃるんですね。
工夫してなんとかやってみます、ありがとうございました。
134 :
デフォルトの名無しさん (ワッチョイ 2686-itQV)
2017/03/24(金) 06:50:20.88 ID:OFGxPp1+0
>>130
最初のNavigatメソッドを実行したらブラウザ開くだろ。
それ以下のコードは不要。
その代わりdocumentがnullかどうかの判定が必要。
nullなら何もしない
nullじゃなければクッキー設定できる。
documentがnullだから設定できないんだよ。
で自分はボタンクリックイベントにそれを書いたからボタン2回押しただけだが
お前はどうやってそれを呼んでるのかは知らね。

で、この処理(2回イベント発生させる処理)だと不自然だから
初心者じゃない方できけば?
52KB

新着レスの表示

★スマホ版★■掲示板に戻る■全部前100次100最新50

名前:E-mail: