redfox63 の回答履歴
- ポインタのアドレスについて
こんばんわ。 以下のようなchar型の配列を直接Fooにキャストして利用したいのですが、 Foo構造体のdataにはint型の配列として利用したいのですが可能でしょうか? char型の配列を直接Fooにキャストした後にdataの部分を操作すれば 可能かと思っていたのですがうまくいきません。 foo->data=new int*[2]; としてしまうとbytData[8]が破壊されてしまいます。 このような方法は無理でしょうか? struct Foo { int tenmp ; int count ; int** data ; } ; char bytData[ 4 + 4 + 8 ] = { 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, } ; int _tmain(int argc, _TCHAR* argv[]) { Foo* foo ; foo = reinterpret_cast< Foo* >( bytData ) ; foo->data = (int**)&bytData[ 8 ] ; // ここがダメ。 printf( "%d\n", *foo->data[ 0 ] ) ; // 3 printf( "%d\n", *foo->data[ 1 ] ) ; // 4 return 0 ; }
- ベストアンサー
- C・C++・C#
- TeijigoTeatime
- 回答数4
- EXCEL VBA UserForm のご質問
よろしくお願いします ユーザーフォームに決定ボタンで、テキストボックスを任意の数追加しました。 追加されたテキストボックスにD1.D2.D3.D4・・・と名前をつけ、それぞれに 1.2.3と数値を記入し、 登録ボタンをクリックした後ワークシートkeyplanの 指定したセルD30~G30へ代入させようとしたところ、 「変数が定義されていません」となってしまいます。 Nameの付け方が悪いのでしょうか。転機の仕方が悪いのでしょうか。 マクロを勉強し始めて日が浅いので、対処の方法がわかりません。 ご回答よろしくお願いします。 Option Explicit Private Sub UserForm_Initialize() worksheets("keyplan").Select End Sub Private Sub 決定_Click() Dim txt As Variant Dim i As Integer 'テキストボックスを配置 i = nyuryokubox() For i = 1 To i Set txt = Me.Controls.Add("Forms.Textbox.1", , True) With txt .Width = 20 .Height = 18 .Top = 300 .Left = 1 + (.Width + 80) * (i + 1) .BorderColor = &H666666 .BorderStyle = fmBorderStyleSingle .Font.Size = 15 .Name = "D" & i End With Next End Sub Private Sub 登録_Click() With worksheets("keyplan").Select .Range("D30").Value = D1.text .Range("E30").Value = D2.text .Range("F30").Value = D3.text .Range("G30").Value = D4.text End With End Sub 変数 i にはテキストボックス(nyuryokubox)に直接数値を入れるようにしています
- ベストアンサー
- Visual Basic
- wind14
- 回答数2
- PreviewKeyDownについて
Form1にButton1とTextBox1、TextBox2、TextBox3を配置します。 TextBox2はMultiLineにします。 プログラムを実行し、1度目は4などを入れ「Enterキー」を押し、間違えます。 TextBox3には「不正解」と表示されます。 次に、textbox2に正解の3を入れ「Enterキー」を押しても「正解」とは表示されません。 私の頭では「正解」と表示されると思うのですが、どこがおかしいのでしょうか。 もう一つ、TextBox2はEnterキーを押したときの「ピン」という警告音が出ないようにMultiLineにしていますが、MultiLineにせず、警告音を消す方法はありますか。宜しくお願いいたします。 以下はコードです。 Dim Problem As String Dim RightAnswer As String Dim Answer As String Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load problem = "1+2=" RightAnswer = "3" End Sub Private Sub TextBox2_PreviewKeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.PreviewKeyDownEventArgs) Handles TextBox2.PreviewKeyDown If e.KeyCode = Keys.Enter Then Answer = Me.TextBox2.Text If Answer = RightAnswer Then Me.TextBox3.Text = "正解" Else Me.TextBox2.Text = "" Me.TextBox3.Text = "不正解" Me.TextBox2.Focus() End If End If End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Me.TextBox1.Text = Problem Me.TextBox2.Focus() End Sub
- ベストアンサー
- Visual Basic
- nebokken
- 回答数1
- ExcelのToggleButtonを排他的に。。
師も走りまわる12月。。皆様(師)も走りまわっていることでしょう。 私は。。。走りません、はい。 本題です。 ExcelのVBAでToggleButtonを排他的に使いたいのです。 調べるとオプションボタンになさいと書かれてはいるのですが・・・。 ワークシート上にToggleButton1~3があります。 1を押す(凹)と“処理A”,もう一度押す(凸)と“処理Z” 2 同上 “処理B”, 同上 3 同上 “処理C”, 同上 以下のコードでなんとなく動くのですが,排他的動作の際には,TrueなToggleButton#の動作をおこなってしまいます。 Excel2007,Windows7です。 師の皆様の良い御提案が御座いましたら御教示下さい。 ----ボタンがあるシートモジュールに記載---------------------------------------- Option Explicit Dim strCode As Variant Private Sub ToggleButton1_Click() If ToggleButton1.Value = False Then strCode = "処理中Z" ' Debug.Print "AからZに戻します。" Else strCode = "処理中A" ' Debug.Print "Aを押しました。" ToggleButton2.Value = False ToggleButton3.Value = False End If 'Debug.Print "Aでの処理をします。" Call 処理(strCode) 'Debug.Print "Aから処理をしました。" End Sub Private Sub ToggleButton2_Click() If ToggleButton2.Value = False Then strCode = "処理中Z" ' Debug.Print "BからZに戻します。" Else strCode = "処理中B" ' Debug.Print "Bを押しました。" ToggleButton1.Value = False ToggleButton3.Value = False End If 'Debug.Print "Bでの処理をします。" Call 処理(strCode) 'Debug.Print "Bから処理をしました。" End Sub Private Sub ToggleButton3_Click() If ToggleButton3.Value = False Then strCode = "処理中Z" Else strCode = "処理中C" ToggleButton1.Value = False ToggleButton2.Value = False End If Call 処理(strCode) End Sub Sub 処理(strCode) Dim i As Long Dim Start As Single Dim Finish As Single Start = timer i = 0 'Application.ScreenUpdating = False Application.Calculation = xlCalculationManual For i = 1 To 1000 i = i + 1 Cells(2, 1).Value = strCode & i Next i Application.Calculation = xlCalculationAutomatic 'Application.ScreenUpdating = True Cells(1, 1).Value = strCode Finish = timer Cells(3, 1).Value = Format$(Int((Finish - Start) * 10 ^ 4 + 0.5) / 10 ^ 4) End Sub --------------------------------------------------------------------------- おまけ: 上記サンプルを作ってみましたが,ToggleButton1だけ相対的に処理速度が速いです・・・。 なぜなんでしょう??
- ベストアンサー
- Visual Basic
- mayu1992
- 回答数4
- VS treeviewをIndex指定で展開
お世話になります VS2010 C++/CLIで開発しております treeviewの+-展開閉をプログラム側で制御したいのですが、教えていただけないでしょうか。 自分でググって。ノード名で指定する方法は判ったのですが、 今回教えていただきたいのはIndexで指定して開閉する方法となります。 機能としては、複数の親ノードに対して、初期値として、初めから展開して居る物と、 閉じている物を起動時&リセット時に設定して、その状態で表示する。
- treeview展開イベント(VS2010C++)
お世話になります VS2010 C++/CLIで開発しております treeviewの+-表示部での展開閉時に発生するイベントを教えていただけないでしょうか。 以下のイベントを確認したのですが、テキスト部を選択時にはイベントが発生するのですが、 +-の±部のみで開閉を行うとイベントが受け取れませんでした。 AfterCheck AfterCollapse AfterExpand BeforeCheck BeforeCollapse BeforeExpand BeforeSelect Click ContextMenuChanged ContextMenuStripChanged NodeMouseClick TreeNodeCollapsed TreeNodeExpanded
- treeview展開イベント(VS2010C++)
お世話になります VS2010 C++/CLIで開発しております treeviewの+-表示部での展開閉時に発生するイベントを教えていただけないでしょうか。 以下のイベントを確認したのですが、テキスト部を選択時にはイベントが発生するのですが、 +-の±部のみで開閉を行うとイベントが受け取れませんでした。 AfterCheck AfterCollapse AfterExpand BeforeCheck BeforeCollapse BeforeExpand BeforeSelect Click ContextMenuChanged ContextMenuStripChanged NodeMouseClick TreeNodeCollapsed TreeNodeExpanded
- InvalidateRgn()について
ボールが右下に動いていくだけのプログラムです。 はじめはInvalidateRect(hWnd,NULL,.TRUE)を使っていたのですが画面がちらつくので InvalidateRgnを使ってみました。そこで円の部分をリージョンで指定して背面消去したら 図1のようになってしまったので、 ペンの太さを考慮してなかったのが問題だと思って円の周辺に余裕を持ってリージョンを 設定して以下のようなプログラムになったのですが(スレッドの中身です) 図2のように進行方向の部分が欠けてしまいます。 その後余白の3の部分を7以上にしたら元の円のまま動きました。 ペンの太さは3なので十分だと思ったのですが6以下でなぜ欠けてしまうんでしょうか? while(1){ hRgn = CreateEllipticRgn(x - hankei - 3, y - hankei - 3, x + hankei + 3, y + hankei + 3); x = x + 4; y = y + 2; InvalidateRgn(hWnd,hRgn,TRUE); Sleep(100); }
- InvalidateRgn()について
ボールが右下に動いていくだけのプログラムです。 はじめはInvalidateRect(hWnd,NULL,.TRUE)を使っていたのですが画面がちらつくので InvalidateRgnを使ってみました。そこで円の部分をリージョンで指定して背面消去したら 図1のようになってしまったので、 ペンの太さを考慮してなかったのが問題だと思って円の周辺に余裕を持ってリージョンを 設定して以下のようなプログラムになったのですが(スレッドの中身です) 図2のように進行方向の部分が欠けてしまいます。 その後余白の3の部分を7以上にしたら元の円のまま動きました。 ペンの太さは3なので十分だと思ったのですが6以下でなぜ欠けてしまうんでしょうか? while(1){ hRgn = CreateEllipticRgn(x - hankei - 3, y - hankei - 3, x + hankei + 3, y + hankei + 3); x = x + 4; y = y + 2; InvalidateRgn(hWnd,hRgn,TRUE); Sleep(100); }
- PictureBoxのImageを前面に
関数のグラフを描くプログラムを作りましたが、グラフが背面にあり、座標平面の格子に消されています。前面に出す方法はありませんか。 FormにPictureBoxを載せ、格子はe.Graphics.DrawLineで描き、グラフはビットマップに描き、PictureBoxのImageで置きました。宜しくお願いします。
- ベストアンサー
- Visual Basic
- nebokken
- 回答数1
- C#で、テキストボックスの入力について。
テキストボックスに数値しか入力させないようにし、さらにそれを3桁のコンマ区切りで表示しています。 以下の文でやっています。 private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if ((e.KeyChar < '0' || '9' < e.KeyChar) && e.KeyChar != '\b' ) { e.Handled = true; } } private void textBox1_Leave(object sender, EventArgs e) { this.textBox1.Text = string.Format("{0:#,0}", ulong.Parse(this.textBox1.Text)); } 上の方では数値のみの入力制限、下の方では桁区切りを実行しています。 これでうまくいくのですが、エラーが一つ出ます。 一度数字を入力し、リーブしたらもう桁区切りがなされます。 しかしそれを書き換える、例えば全部消してから書き換えるのでなく、桁数が一文字多かったので消そうというときに、一つ消してリーブすると、コンマが入っているためにエラーになります。 これを防ぐにはどうすればいいでしょうか? また、ただそれだけでは、桁区切りがおかしくなるはずです。 できれば書き換えた後に、新たに桁区切りがなされるようにしたいのですがやはり難しいでしょうか?
- ベストアンサー
- C・C++・C#
- inmotion107
- 回答数4
- C#で、テキストボックスの入力について。
テキストボックスに数値しか入力させないようにし、さらにそれを3桁のコンマ区切りで表示しています。 以下の文でやっています。 private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { if ((e.KeyChar < '0' || '9' < e.KeyChar) && e.KeyChar != '\b' ) { e.Handled = true; } } private void textBox1_Leave(object sender, EventArgs e) { this.textBox1.Text = string.Format("{0:#,0}", ulong.Parse(this.textBox1.Text)); } 上の方では数値のみの入力制限、下の方では桁区切りを実行しています。 これでうまくいくのですが、エラーが一つ出ます。 一度数字を入力し、リーブしたらもう桁区切りがなされます。 しかしそれを書き換える、例えば全部消してから書き換えるのでなく、桁数が一文字多かったので消そうというときに、一つ消してリーブすると、コンマが入っているためにエラーになります。 これを防ぐにはどうすればいいでしょうか? また、ただそれだけでは、桁区切りがおかしくなるはずです。 できれば書き換えた後に、新たに桁区切りがなされるようにしたいのですがやはり難しいでしょうか?
- ベストアンサー
- C・C++・C#
- inmotion107
- 回答数4
- アクティブウィンドウ(ドキュメントファイル)のパス
VB初心者です。 VB等でアクティブウィンドウのパスを取得する方法を探しています。 タイトルであればGetWindowTextで取得で可能ですし、 アプリケーションのパスであれば、 http://sumishiro.blogspot.jp/2009/09/blog-post_30.htmlが参考になりました。 しかしドキュメントファイルのパスを取得する方法がどうしてもわかりません。 例えば、ワードでtest.docxを開いているとき、そのウィンドウハンドルからwinword.exeのフルパスでなく、test.docxのフルパスを取得する方法です。(ワード、エクセル等だけでなく画像ビューアーが画像ファイルを開いているとき、その画像ファイルのフルパスの取得) どうぞよろしくお願いいたします。
- ベストアンサー
- Visual Basic
- gezuok1726
- 回答数1
- 1をA、2をB・・・に変換したい
VB6で1をA、2をB、3をC・・・・に変換したいのですが、 そのような関数はありますでしょうか? 小文字から大文字に変換するUCase関数みたいなのがあると 嬉しいのですが。 逆のAを1、Bを2、Cを3・・・でも良いです。
- 締切済み
- Visual Basic
- miya2004
- 回答数3
- ACCESS(VBA)の検索結果判定について
ACCESS(VBA)の検索処理にて 以下のVBAを実行すると、かならず「★データあり処理」 に流れてしまいます。 確実に検索結果がヒットしない状態(データ全削除)にしても 同じです。 何故なのでしょうか。。 ====================== Private Sub xx_Click() Dim sSql As String sSql = "SELECT 年月 FROM 材料明細トランザクション " _ & "WHERE 年月 = " & Me.年月.Value & " " _ & "AND 材料顧客コード = " & Me.材料顧客コード.Value & " " _ & "AND 現場コード = " & Me.現場コード.Value Set db = CurrentDb Set oRs = db.OpenRecordset(sSql) If oRs.NoMatch = False Then '★データあり処理 Else 'データなし処理 End If End Sub ====================== ※初心者ですので、わかりやすく回答していただけると助かります。
- 締切済み
- Visual Basic
- reeeeeeeeeeeeee
- 回答数6
- C# MP4のタグ情報のサブタイトルを拾いたい
お世話になります。 表題の通り、MP4ファイルに含まれるタグ情報の 『サブタイトル』に当たる部分の取得の方法を教えてください。 http://www.atmarkit.co.jp/fdotnet/dotnettips/591mp3tags/mp3tags.html このサイトを見て、同じやり方でMP4からタイトルまでは取得できましたが、 サブタイトルまではどうすれば良いのか解りません。 ちなみに、必須ではないですが、コメント情報も教えていただければ幸いです。 よろしくお願いいたします。
- ベストアンサー
- C・C++・C#
- tatapatank
- 回答数1
- C#で配列の戻り値について
プログラミング初心者で、ただいまC#の勉強中です。 bool型(trueまたはfalse)とstring型(関数内で取得した文字列)の値を 配列で関数の戻り値として返したいのですが、どうすれば良いのかわかりません。 true/falseもstringとして呼び出し側で判別するしか方法はないのでしょうか。 アドバイスをお願いいたします。
- vb.net 画像の透過について
背面画像Aと前面画像Bがあります。 画像Bは画像A上をファイルから読み込んだ X,YのLocationを任意に移動します。 Bの画像の白色の部分を透過にして、背面の画像Bが見えるように 表示したいのですが、うまくいきません。 PictureBoxコントロールのimageプロパティに 画像Bを設定して、backColorにTransparentを指定しても 親コントロール(画像Bを表示しているPictureBox)の BackColorで表示されるだけでした。 vb6だとimageコントロールを使用すればできました。 vb.netで何か良い方法はないでしょうか?
- ベストアンサー
- Visual Basic
- it200189
- 回答数1
- C# 画像ファイルの更新
C#を始めて2ヶ月余りの者です。 環境はW.7 C#.NET 2013です。 現在、以前C-Builderで作成したプログラムをC#に変換して居ます。 画像マスターを変更する所で、コンパイル出来なく成り、困って居ます。 やりたい事は、画像マスターがあり、これを表示して、マスターを変更したければカメラから読み込んだ画像を画像マスターに書き込むと言うものです。 C-Builderの時はBMPの読み書きは自分で作成しましたが、C#では関数があるので今回はこれを利用しました。 内容を簡略的に下に記述しました。AAAが画像マスターでBBBがカメラからの画像の代わりです。 ここで bmpSource1.Save(sCurDir + "\\BBB.bmp"); を実行すると、「別のプロセスで使用されているため、プロセスは ファイル~にアクセスできません。」とのエラーが表示されます。 良く考えてみれば、Readでオープンしている所に書き込もうとして居るのでエラーに成って当たり前ですので、bmpSource1 = new Bitmap(sCurDir + "\\AAA.bmp");の後に画像を別の場所に保存し、bmpSource1.Dispose();としてみた所、上手く行きませんでした。これもDisposeするのはバッファーであり、ファイルでは無いから当たり前かも知れません。 ネットで色々探して居る時に、何かのパラメーターでReadWriteモードの所を見つけましたが、bmpSource1 = new Bitmap(sCurDir + "\\AAA.bmp");には指定するパラメーターが見当たりませんでした。 何方か、画像ファイルの更新方法がお分かりに成る方、ご教授下さい。 よろしくお願い致します。 String sCurDir = System.IO.Directory.GetCurrentDirectory(); Bitmap bmpSource1; Bitmap bmpSource2; public Form1() { InitializeComponent(); pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage; bmpSource1 = new Bitmap(sCurDir + "\\AAA.bmp"); bmpSource2 = new Bitmap(sCurDir + "\\BBB.bmp"); pictureBox1.Image = bmpSource1; bmpSource2.Save(sCurDir + "\\AAA.bmp"); <-ここで実行時エラー }
- VC++ ラジオボタンの初期値について
VC++ 2010でソフトを作成しています。 そこでラジオボタンを使用して、項目を選択するように作成しているのですが、 最初にソフトを開いた時に、どこかがすでに選択されているようにする方法がわかりません。 教えて下さい。 現在はアプリをたちあげるとラジオボタンにどれも選択されていません。