C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 >>
■69524  Re[3]: VB.NETについて
□投稿者/ 魔界の仮面弁士 -(2014/01/06(Mon) 14:33:08)
    No69517 (シーマ さん) に返信
    >>どうしても VB.NET でなければならないという理由がなければ、C# をお勧
    >>めします。
    > 自分もCを習得したいのですが、時間がかかりそうなので

    C# は、C より習得しやすいと思いますよ。


    >>> 更に自分の場合、変数の宣言はプロシージャの先頭部分に纏めて記述していたのですが、

    .NET 以前において先頭にまとめることが多かったのは、暗黙変数利用時(Option Explicit 無し)
    それも DefInt 等が使われていた時代の名残です。このモードでは、特別扱いしたい変数
    (配列にしたい場合など)は、明示的に変数宣言を行う必要があり、そのデータ型を
    早期に(暗黙定義されるより前に)決定しておくために、先頭に記載することが多かったようです。


    このほか、先頭でしか変数宣言できない他言語(C99 以前の ANSI C など)との互換性や、
    変数リソースに制限のある時代のBASICで、資源管理をやりやすくする目的などの説もありますが、
    理由はどうあれ、実際、かつての VB2 のヘルプ(Dim ステートメント)には、
    |
    | ヒント プロシージャ内に Dim ステートメントを記述するときは、
    | プロシージャの先頭に記述するのが、プログラム作法上、望ましいことです。
    |
    との説明があり、VB6 のヘルプにも
    |
    | メモ プロシージャ内で Dim ステートメントを使用する場合は、
    | 通常、Dim ステートメントをプロシージャの最初で記述します。
    |
    とありました。なので、旧VBにおいて、そのようなコーディングが多いのは事実です。


    しかし VB.NET では、コード ブロック内の変数スコープが導入されたこともあり
    >>> 実際に変数を使用する箇所に記述するコードをよく見ます
    のような書き方が増えています。私も直前派です。

    「コード ブロック内の変数スコープ」については、下記などを参照してみてください。
    http://support.microsoft.com/kb/311331/ja

    変数の「宣言」と「実際に使われ始める位置」が離れてしまうと、その変数が
    どこで使われる物なのかあとで分かりにくくなるため、直前で宣言する
    (できれば、変数の初期値も同時に与えておく)ことが望ましいという考え方です。

    とはいえ、プロシージャの先頭から最後まで長い間使われる重要な変数は、
    先頭に纏めることもありますし、そもそも長すぎるプロシージャは、それ自体が
    見直すべき対象ですので、どちらのコーディングでも間違いと言うわけではありません。

    # ちなみに VBScript だと、変数利用箇所の後に Dim があっても構わないというカオス仕様…。



    >>> Dim strFN As string = "ABCDE"
    >>> また、VB6.0時代も普通の事だったのでしょうか?

    いいえ、VB6 時代にはなかった記述方法です。


    > とりあえず、個人の好み位しかない感じでしょうか?

    できれば両方の使い方を学んでおいてください。

    後で代入する記述方法は、その変数のデータ型が明確な場合に限られます。
    匿名型や Linq 構文などの場合、そもそも「As 句」を記載することができないため、
    その場合には一行で無ければ書けないことになります。

     Dim postItem = New With {Key .No = 69505, .Title = "VB.NETについて", .Poster = "シーマ"}


    ちなみに、VB2008 以降では、
     Dim a As Integer = 10
     Dim b As String = "abc"
    といった宣言に対して、As 句を省略して
     Dim a = 10
     Dim b = "abc"
    と書けるようになりました。

    これは「ローカル型の推論」と呼ばれており、変数宣言時の初期値によって
    適切なデータ型がコンパイル時に決定される機能です。この機能を利用する場合は
    変数宣言時に初期値を割り当てておく必要があります。

    この型推論の機能により、For 文のループ変数の記述方法にも変化が生じています。
    http://www.gizcollabo.jp/vbtomo/boards/vbchoshoqa.php?do=leaf&num=8372



    >>> コンパイル=ビルド
    >>> と思って間違いないでしょうか?
    コンパイルやリンクを行う一連の作業を指して、ビルドと呼びます。
    強いて言えば『コンパイル≦ビルド』のような感じでしょうか。

    VB6.EXE でビルドする際には、VB6 と同じフォルダ内に配置された
    VBコンパイラ(C2.EXE)と VBリンカ(LINK.EXE)が内部的に呼ばれています。
    (ただし VB6 時代は、この一連の作業をコンパイルと呼んでいました)

    VB.NET でビルドする際には、Visual Studio あるいは MSBuild.EXE から
    VBコンパイラ(VBC.EXE) が呼ばれています。また、中間言語にコンパイルされた
    VB アプリは、実行時に JITコンパイラ によってネイティブコードへ変換されます。



    > 現在、自分が使用している環境はWindows7 32bit + VB.Net 2008 Express Editionですが、
    > この環境で作ったプログラムは64bit環境で動作させるためには、コンパイルの仕方が
    > 違うのでしょうか?それとも64bit環境では動作させる事は無理なのでしょうか?

    よく使われるのは、以下の 3 種類ですが、2008 Express で作られたアプリは、
    既定で AnyCPU ビルドとなります。

    ・32bit専用(x86ビルド) … 常に32bit動作(64bit環境では、"WOW64"による32bit環境として動作)
    ・64bit専用(X64ビルド) … 常に64bit動作(32bit環境では動作しない)
    ・両対応(AnyCPUビルド) … 64bit環境では64bit動作、32bit環境やWOW64環境では32bit動作。

    Express よりも上位のエディションであれば、開発環境から変更できますが、
    Express の場合は、既にご存知のように、.vbproj 内の <Platform Target> タグで
    指定することになります。

    ※注※ 実際のタグ名には空白が含まれません。ここの掲示板では、アール・エム・ティーという
     文字列を含んでいると投稿できないため、意図的に空白を加えて投稿しています。
記事No.69505 のレス /過去ログ118より / 関連記事表示
削除チェック/

■69549  Re[4]: VB.NETについて
□投稿者/ シーマ -(2014/01/07(Tue) 21:36:22)
    魔界の仮面弁士 さん、非常に詳しく説明いただきありがとうございます

    勉強になります

    >といった宣言に対して、As 句を省略して
    > Dim a = 10
    > Dim b = "abc"
    >と書けるようになりました。

    ↑は知りませんでした



    自分も、質問に対して答えられるようになりたいものです
    その日が来るかどうかは・・・?ですが

    ありがとうございました

記事No.69505 のレス / END /過去ログ118より / 関連記事表示
削除チェック/

■69541  日付のinsert
□投稿者/ todo -(2014/01/07(Tue) 14:32:18)

    分類:[C#] 

    はじめまして。質問お願いいたします。
    visialstudio2008、mysql、C#を使いWeb上で勤怠システムを作成しようとしています。

    画面上にテキストボックスを2つ置き期間を1/1〜1/31というような形で入力してもらい
    それをinsertする際に日付列に1/1、1/2、1/3...1/31と31日分全てが入ってくるように
    したいのですが方法がわからず困っています。
    テーブルアダプターのクエリを使っているのですがどうすれば実現できるのでしょうか?

    初心者なのでわかりにくい説明になっていたら申し訳ありません。
    よろしくお願いいたします。
親記事 /過去ログ118より / 関連記事表示
削除チェック/

■69542  Re[1]: 日付のinsert
□投稿者/ 魔界の仮面弁士 -(2014/01/07(Tue) 14:48:13)
    No69541 (todo さん) に返信
    > それをinsertする際に日付列に1/1、1/2、1/3...1/31と31日分全てが入ってくるように
    > したいのですが方法がわからず困っています。

    年は無く、月と日だけなのでしょうか?
    それだと閏年の処理が困るような。

    データベース側のテーブル定義がどうなっているか分からないので
    具体的なコードを書くことは控えますが、考え方としては、
    入力されたそれぞれの値を日付型(DateTime)の変数に受けて、
    その日数分のループ(for とか while とか)で、INSERT を
    繰り返すようにしては如何でしょう。
記事No.69541 のレス /過去ログ118より / 関連記事表示
削除チェック/

■69543  Re[2]: 日付のinsert
□投稿者/ todo -(2014/01/07(Tue) 15:09:57)
    No69542 (魔界の仮面弁士 さん) に返信

    ご回答有難うございます。

    > 年は無く、月と日だけなのでしょうか?
    > それだと閏年の処理が困るような。

    すみません。年も一緒に入ってくるように想定しています。
    列定義はDATE型でPrimaryKeyを設定しています。

    > データベース側のテーブル定義がどうなっているか分からないので
    > 具体的なコードを書くことは控えますが、考え方としては、
    > 入力されたそれぞれの値を日付型(DateTime)の変数に受けて、
    > その日数分のループ(for とか while とか)で、INSERT を
    > 繰り返すようにしては如何でしょう。

    テーブルアダプターのクエリを使用しているのですがループさせることは可能なんでしょうか?
    あまりわかってなくてすみません;;
記事No.69541 のレス /過去ログ118より / 関連記事表示
削除チェック/

■69545  Re[3]: 日付のinsert
□投稿者/ 魔界の仮面弁士 -(2014/01/07(Tue) 15:14:07)
    No69543 (todo さん) に返信
    > テーブルアダプターのクエリを使用しているのですがループさせることは可能なんでしょうか?

    for(…) {
     adp.Insert(…);
    }

    と言う感じで。
記事No.69541 のレス /過去ログ118より / 関連記事表示
削除チェック/

■69546  Re[4]: 日付のinsert
□投稿者/ todo -(2014/01/07(Tue) 15:33:42)
    No69545 (魔界の仮面弁士 さん) に返信

    ループもできるんですね。
    早速やってみようと思います。

    初歩的な質問にお付き合いいただきありがとうございました。
記事No.69541 のレス / END /過去ログ118より / 関連記事表示
削除チェック/

■69547  Re[5]: 日付のinsert
□投稿者/ shu -(2014/01/07(Tue) 16:14:40)
    No69546 (todo さん) に返信
    > ■No69545 (魔界の仮面弁士 さん) に返信
    > 
    > ループもできるんですね。
    > 早速やってみようと思います。
    > 
    > 初歩的な質問にお付き合いいただきありがとうございました。
    
    解決済みのようですが一応
    日付ループの例
    
    			DateTime Sdate = DateTime.Parse(textBox1.Text);
    			DateTime Edate = DateTime.Parse(textBox2.Text);
    
    			DateTime d = Sdate;
    			while (d<Edate)
    			{
    			        〜
    				d = d.AddDays(1);
    			}
    
記事No.69541 のレス / END /過去ログ118より / 関連記事表示
削除チェック/

■69552  Re[6]: 日付のinsert
□投稿者/ todo -(2014/01/08(Wed) 18:39:27)
    No69547 (shu さん) に返信

    例まで提示していただきありがとうございます。
    想定する形でinsertすることができました。

    丁寧に教えてくださった皆様有難うございました。

記事No.69541 のレス /過去ログ118より / 関連記事表示
削除チェック/

■69550  サーバーをまたいで画像をコピーする
□投稿者/ amerikan -(2014/01/08(Wed) 17:47:36)

    分類:[C#] 

    Microsoft Visual C# 2013 & Windows7

    サーバーAにある画像ファイルを、サーバーBにコピーする際に
    一度の処理で行う方法はありますでしょうか。

    サーバーからローカルにダウンロードする関数と、
    ローカルからサーバーにアップロードする関数は比較的すぐに見つかるため、
    現在はこちらで処理を行っていますが、処理速度に不安が残ります。

    ご存知の方いましたら、ご教示よろしくお願いいたします。
親記事 /過去ログ118より / 関連記事表示
削除チェック/

■69551  Re[1]: サーバーをまたいで画像をコピーする
□投稿者/ 魔界の仮面弁士 -(2014/01/08(Wed) 18:02:20)
    No69550 (amerikan さん) に返信
    > サーバーAにある画像ファイルを、サーバーBにコピーする際に
    > 一度の処理で行う方法はありますでしょうか。

    前提条件が不足しすぎていて、判断に困ります。(^^;

    A が B にコピーするのか、B が A からコピーするのか、C が A のファイルを B に置くのか。
    そもそも、両者のネットワークは、どのように接続されているのか…。

    とりあえず、共有フォルダが使えるなら、単純なファイルコピー。System.IO.File.Copy で。
    B が FTP サーバーなら、A が B にアップロード。System.Net.FtpWebRequest で。
    A が FTP サーバーなら、B が A からダウンロード。System.Net.FtpWebRequest で。
    B が Webサーバーで WebDAV 使えるなら、HttpWebRequest 使うか、ドライブマッピングして File.Copy で。
    B 側に受信用の aspx 置けるなら、A からバイナリを HTTP POST して、B 側で BinaryRead するとか。
記事No.69550 のレス /過去ログ118より / 関連記事表示
削除チェック/

■69553  Re[2]: サーバーをまたいで画像をコピーする
□投稿者/ amerikan -(2014/01/08(Wed) 18:40:14)
    ご回答ありがとうございます、
    すみません、サーバーの状態をまったく書いていませんでした。

    サーバーは両方ともWebサーバーですが、

    Aサーバー:
    こちらが何の権限も持たないWebサーバーのため、こちらから操作することはできない。
    httpによるファイルの閲覧は可能。

    Bサーバー:
    FTPにより画像アップロードが可能。ただしレンタルサーバーのため、root権限はない。

    となります。
    おそらくは、BからAの画像ファイルを取得する形式になります。

    宜しくお願い致します。
記事No.69550 のレス /過去ログ118より / 関連記事表示
削除チェック/

■69555  Re[3]: サーバーをまたいで画像をコピーする
□投稿者/ 魔界の仮面弁士 -(2014/01/08(Wed) 19:02:54)
    2014/01/08(Wed) 19:05:13 編集(投稿者)

    No69553 (amerikan さん) に返信
    > おそらくは、BからAの画像ファイルを取得する形式になります。

    その条件であれば、現状通り、A からダウンロードしたものを
    B にアップロードする体制となるでしょう。


    FTP には、第三者間ファイル転送(サーバ間の直接ファイル転送)を行う
    仕組みがありますが、今回は A 側に対する権限が無いわけですし。
    http://www.atmarkit.co.jp/ait/articles/0108/03/news001.html#r10zu05.gif
記事No.69550 のレス /過去ログ118より / 関連記事表示
削除チェック/

■69554  Re[3]: サーバーをまたいで画像をコピーする
□投稿者/ amerikan -(2014/01/08(Wed) 18:42:26)
    >>修正

    × BからAの画像ファイルを取得する形式になります。

    ○ BからAの画像ファイルを取得する形式、もしくはCがAからBにコピーする形式になります。
記事No.69550 のレス /過去ログ118より / 関連記事表示
削除チェック/

■69556  Re[4]: サーバーをまたいで画像をコピーする
□投稿者/ amerikan -(2014/01/08(Wed) 19:56:32)
    ご回答ありがとうございます。

    現在の状況では、やはり一旦ローカルに落としてから
    アップロードするしかなさそうですね。

    ご教示ありがとうございました。
記事No.69550 のレス / END /過去ログ118より / 関連記事表示
削除チェック/

■69557  Re[5]: サーバーをまたいで画像をコピーする
□投稿者/ amerikan -(2014/01/08(Wed) 19:56:58)
    >>訂正

    解決済みの付加
記事No.69550 のレス / END /過去ログ118より / 関連記事表示
削除チェック/

■69568  registry last write time
□投稿者/ C#初心者 -(2014/01/09(Thu) 14:33:53)

    分類:[.NET 全般] 

    C#言語でレジストリキーの最終書き込み時刻を取得したい。
    レジストリのタイムスタンプは、RegEnumKeyEx を使用すれば取得できるという情報にたどりつき、定義は発見したもののサンプルコードがなく(あってもコピペしても動かず)、使い方がわかりません。
    よろしくお願いします。

    定義
    [DllImport("advapi32.dll", EntryPoint = "RegEnumKeyEx")]
    extern private static int RegEnumKeyEx(UIntPtr hkey,
    uint index,
    StringBuilder lpName,
    ref uint lpcbName,
    IntPtr reserved,
    IntPtr lpClass,
    IntPtr lpcbClass,
    out long lpftLastWriteTime);
親記事 /過去ログ118より / 関連記事表示
削除チェック/

■69563  WPFのStoryBoardでプロパティについて
□投稿者/ meme -(2014/01/09(Thu) 13:37:13)

    分類:[.NET 全般] 

    WPFのStoryBoardでオブジェクトのプロパティを変更した後にソースでプロパティの値を変更したいのですが、
    一度でもStoryBoardで変更をしたプロパティを変更することができません。

    StoryBoardでもコードでも、プロパティの値を変更する方法を探しています。


    例えば、あるボタンを押すとStoryBoardを使ってラベルのWidthを50に変えます。
    その後、別のボタンを押してラベルのWidthに直接値を指定しても、それが反映されません。
    ※コードは下記に示します。
     StoryBoardはソースで宣言して使っていますが、XAMLに書き込んだStoryBoardでも同じ現象が発生しました。



    StoryBoardでプロパティを変更する前であれば、そのオブジェクトのプロパティの値を
    直接指定することができるのですが、一度でもStoryBoardが操作したプロパティには値を
    指定しても反映されません。

    StoryBoardで値を変更すると、そのプロパティを解放せずにずっと保持しているのかな??



    StoryBoardでプロパティを変更した後でもプロパティの値を直接指定して変更する方法をおわかりの方は
    いらっしゃいますでしょうか。

    よろしくお願いいたします。





    Private Sub Button_Click_2(sender As Object, e As RoutedEventArgs)
      Dim myDoubleAnimation As DoubleAnimation = New DoubleAnimation()

      myDoubleAnimation.To = 50
      myStoryboard = New Storyboard()
      myStoryboard.Children.Add(myDoubleAnimation)
      myDoubleAnimation.Duration = New Duration(TimeSpan.FromSeconds(0.6))
      Storyboard.SetTargetName(myDoubleAnimation, TestLabel.Name)
      Storyboard.SetTargetProperty(myDoubleAnimation, New PropertyPath(Canvas.WidthProperty))
      myStoryboard.Begin(Me)
    End Sub


    Private Sub Button_Click_3(sender As Object, e As RoutedEventArgs)
      TestLabel.Width = 200
    End Sub
親記事 /過去ログ118より / 関連記事表示
削除チェック/

■69564  Re[1]: WPFのStoryBoardでプロパティについて
□投稿者/ Hongliang -(2014/01/09(Thu) 13:51:03)
記事No.69563 のレス /過去ログ118より / 関連記事表示
削除チェック/

■69572  Re[2]: WPFのStoryBoardでプロパティについて
□投稿者/ meme -(2014/01/09(Thu) 16:16:15)
    2014/01/09(Thu) 16:17:05 編集(投稿者)

    HongLiangさん

    返信ありがとうございましす。

    無事解決することができました。
    今後ともよろしくお願いいたします。
記事No.69563 のレス / END /過去ログ118より / 関連記事表示
削除チェック/

<前の20件 | 次の20件>

<< 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 >>

ヒット件数が多いので過去ログ1〜119 までの検索結果 / 過去ログ120からさらに検索→

パスワード/

- Child Tree -