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

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

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

全過去ログを検索

<< 0 >>
■50431  Re[2]: 日付をランダムに取得したい
□投稿者/ みきぬ -(2010/06/07(Mon) 10:47:51)
    ・1年前の日付を含むのか(当日はおそらく含むんだろうけど)
    ・そもそも1年前とはどういう定義なのか(例えば、今日が2008/2/29の場合)
    ・↑にも関連するけど閏年の考慮

    とまあ、考えることはいろいろあると思うけど頑張ってください。
記事No.50429 のレス /過去ログ85より / 関連記事表示
削除チェック/

■64899  Re[1]: 【WindowsServer2008】IIS7.5 サイトバ
□投稿者/ たまちゃん -(2013/01/21(Mon) 16:19:39)
    > そこで、「Default Web Site」ではなく、当該アプリケーション固有のWebサイトを
    > [Webサイトの追加]より作成した場合、アプリケーションポートは「80」以外の値を指定する必要があり、
    > 「8080」を指定しました。

    一つ質問なのですが、ポートに80以外を指定する必要があるとありますが、
    これはAnte さんが構築しようとするWebサイトの都合で、80以外のポートを指定する(つまり80のポートを禁止する)必要があるということですか?
    それともIISの設定で80以外しか設定できないということですか?
記事No.64898 のレス /過去ログ109より / 関連記事表示
削除チェック/

■87527  Re[1]: Icon について
□投稿者/ 魔界の仮面弁士 -(2018/05/31(Thu) 10:47:13)
記事No.87523 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87529  Re[3]: Icon について
□投稿者/ 魔界の仮面弁士 -(2018/06/01(Fri) 12:04:22)
    No87528 (夜叉丸 さん) に返信
    > データの後半部分のデータが消えています。
    > データサイズが正常な953バイトに対して682バイトしかなかったです。

    連続実行させて検証していないので、思いつきになりますが、
    > Icon icon = System.Drawing.Icon.FromHandle((new Bitmap(ms)).GetHicon());
    HICON からの読み取り中に、Bitmap が Dispose されてしまったとか?
    うーん。すぐには思い当たらないです。


    >  byte[] ret = ms.GetBuffer();
    GetBuffer には、未使用バイト領域が含まれる可能性がありえます。

    今回は問題無いとしても、念のため ToArray を使った方が良いと思いますよ。
    あるいは TryGetBuffer メソッドでも良いですけど。
    http://8thway.blogspot.com/2015/12/memorystream.html


    ちなみに、
      MemoryStream ms = new MemoryStream();
      ms.Write(Enumerable.Repeat(byte.MaxValue, 1024).ToArray(), 0, 1024);
      ms.WriteByte(byte.MaxValue);
      int i1 = ms.Capacity;
      int i2 = (int)ms.Length;
      byte[] b1 = ms.GetBuffer();
      byte[] b2 = ms.ToArray();
      ArraySegment<byte> b3; ms.TryGetBuffer(out b3);
      ms.Close();
    というコードの場合、
      i1 は 2048 (バッファ長)
      i2 は 1025 (実データ長)
      b1.Length は 2048 (バッファ長)
      b2.Length は 1025 (実データ長)
      b3 は .Offset = 0, .Count = 1025, .Array.Length = 2048
    という結果になりますね。



    > private byte[] GetBytearrayFromIcon(Icon icon)
    >  Bitmap bmp = icon.ToBitmap();

    > private Icon GetIconFromByteArray(byte[] bytes)
    >  bmp.Save(ms, ImageFormat.Png);

    .ico フォーマットではなく .png フォーマットで永続化しているのは、
    意図的なものでしょうか。


    もしも Ico 形式のまま無加工で永続化するなら、こんな感じで書けそうです。

    // 利用方法:
    //  byte[] binary = srcIcon.ToBinary();
    //  Icon dstIcon = bin.ToIcon();
    public static class IconExtensions
    {
     public static byte[] ToBinary(this Icon ico)
     {
      using (var ms = new MemoryStream())
      {
       ico.Save(ms);
       ms.Flush();
       return ms.ToArray();
      }
     }

     public static Icon FromBinary(this byte[] binary)
     {
      using (var ms = new MemoryStream(binary))
      {
       try { return new Icon(ms); } catch { return null; }
      }
     }
    }



    なお、画像の先頭 4 バイト見ることで、.ico / .png の判定ができます。

    byte[] bin4 = BinaryOfYourIcon.Take(4).ToArray();
    bool isIco = bin4.SequenceEqual(new byte[] { 0x00, 0x00, 0x01, 0x00 });
    bool isPng = bin4.SequenceEqual(new byte[] { 0x89, (byte)'P', (byte)'N', (byte)'G' });


    .ico 形式の場合、ファイル先頭の 0x00, 0x00, 0x01, 0x00 の後に続く 2 バイトが、
    格納されているアイコンの数を表します。

    System.Drawing.Icon の場合、それぞれのアイコンを個別に取り出す機能がありませんので、
    正確な画像データを得たい場合には No87527 で紹介した IconLib 等を利用してみてください。
記事No.87523 のレス /過去ログ150より / 関連記事表示
削除チェック/

■87530  Re[4]: Icon について
□投稿者/ 夜叉丸 -(2018/06/01(Fri) 14:20:53)
    No87529 (魔界の仮面弁士 さん) に返信

    > 連続実行させて検証していないので、思いつきになりますが、
    >>Icon icon = System.Drawing.Icon.FromHandle((new Bitmap(ms)).GetHicon());
    > HICON からの読み取り中に、Bitmap が Dispose されてしまったとか?
    > うーん。すぐには思い当たらないです。
    >
    すみません。アイコンから取得したデータは正常でした。
    データを保存するところに問題がありました。

    >
    > GetBuffer には、未使用バイト領域が含まれる可能性がありえます。
    >
    > 今回は問題無いとしても、念のため ToArray を使った方が良いと思いますよ。
    > あるいは TryGetBuffer メソッドでも良いですけど。
    > http://8thway.blogspot.com/2015/12/memorystream.html
    >
    ms.GetBuffer() → ms.ToArray()
    に変更しました。
    (VisualStudio2017 C# .Net) ですが、ms.TryGetBuffer()は存在しなかったです。

    >
    > .ico フォーマットではなく .png フォーマットで永続化しているのは、
    > 意図的なものでしょうか。
    >
    意図しているものではなくて
    サンプルで引っ張ってきたもの(http://4423lab.wpblog.jp/archives/170)を使用しました。


    >
    > もしも Ico 形式のまま無加工で永続化するなら、こんな感じで書けそうです。
    >
    > // 利用方法:
    > //  byte[] binary = srcIcon.ToBinary();
    > //  Icon dstIcon = bin.ToIcon();

    bin は byte[] = binary だと思うのですが
    (VisualStudio2017 C# .Net) ですが、bin.ToIcon() は使えませんでした。


    > System.Drawing.Icon の場合、それぞれのアイコンを個別に取り出す機能がありませんので、
    > 正確な画像データを得たい場合には No87527 で紹介した IconLib 等を利用してみてください。

    現状では複数存在したとしてもどれを選べばよいかの
    条件判断ができないので、デフォルトで入ってくるアイコンでとりあえずは充分です。

    試しにIconLibを使ってアイコンを取得する方法も試してみます。
記事No.87523 のレス /過去ログ150より / 関連記事表示
削除チェック/

■94582  Re[1]: For文の書き方について
□投稿者/ 魔界の仮面弁士 -(2020/04/22(Wed) 12:44:53)
    No94578 (元コボラー さん) に返信
    > @ For i = 0 To 9
    > A For i As Integer = 0 To 9

    手元に環境が無いので、うろ覚えの記憶ですが:

    VB.NET 2002 の場合はどちらでもなく、
     Dim i As Integer
     For i = 0 To 9
    と書く必要があったと思います。
    (このバージョンでは For ループの局所変数がサポートされていない)

    VB.NET 2003 や VB2005 の場合は、2002 当時と同じ書き方もできますが、通常はAで書いてください。
    2003 や 2005 で@の構文を使うとコンパイルエラーになります。
    ただし@であっても、Option Explicit Off モードでコンパイルすれば実行できてしまいますが、その場合、
     For i As Object = 0 To 9
    の意味で処理されてしまうことになります。

    そして VB2008 以降の場合は、上記いずれのスタイルも使えますが、一般的には @で書きます。
    この省略表記を、「ローカル型の推論」と呼びます。
    i = 0 という操作は、右辺が Integer 型であるため、宣言時の変数 i の型も As Integer としてコンパイルされるというものです。
    また、VB2008 以降においても、Option Infer Off モードでコンパイルすれば、2005 と同じ状態となります。
記事No.94578 のレス /過去ログ164より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -