アイコン画像の抽出について

投稿者:KNIGHT 投稿日:2024/05/24(Fri) 09:34:15 No.2375

お世話になります。
https://produ.irelang.jp/docs/pgraphics/iconimage.htm
このページにあるサンプルプログラム
「shell32.dll」の45番目からアイコン画像を抽出する

は実行するとエラーが出ますが、バグでしょうか?
よろしくお願いいたします。

HTTP要求で文字化けする

投稿者:近藤 投稿日:2024/05/21(Tue) 11:54:03 No.2374

いつもお世話になっております。

HTTP要求にて文字化けする場合があります。詳しい条件はわからない(文字数が多いと発生するような気がします。)のですが、下記のコードを実行すると文字化けする場合と文字化けしない場合があります。
(htmlファイルはこちらで別途サーバーに挙げているファイルになります。文字コードは「UTF-8」で保存しています。)

文字コード関連の不具合のかと思われるのですが、不具合でしょうか?
よろしくお願いいたします。


--------以下プログラム-----

  HTTP要求を作って要求内容とする
  要求内容の文字コードは 「UTF-8」
  要求内容のContentTypeは 「text/html」
  要求内容にて「http://late-obi-9111.lovepop.jp/henshin.html」をHTTPで要求して応答内容とする
  応答内容の文字コードを報告
  応答内容の本文を報告

解決しました。

投稿者:onichan 投稿日:2024/04/26(Fri) 09:04:01 No.2373

お世話になっております。

内容について承知いたしました。
(キャスト構文ないと思ってたので個人的に嬉しいです)

ご確認いただきありがとうございます。
今後ともよろしくお願いいたします。

Re: C#のオーバーロードが正しくない事がある

投稿者:ゆうと 投稿日:2024/04/26(Fri) 03:12:00 No.2372

こんにちは、お世話になっております。

動作等を再現させて検討しましたが
string型とobject[]型のオーバロードの手順決定できない挙動については
仕様とさせてください。
(エラーとならずにどちらかが実行されてしまう挙動はバグです)

理由としては、
整数の配列を、C#の引数に渡す際に、string型でもobject[]型でも、値変換が必要となります。
このケースのように、助詞が一致する場合には、どちらの引数も値変換が必要な点は同じですので、どちら一方に決めることができません。

同じ配列ならobject[]型が選択されることを期待しますが、要素の型を整数からobject型に変換する必要があるため「変換が必要な手順呼び出し」と判断されます。

対策としてはC#側でint[]の値に対するオーバロードを定義するか、次のように「←」によるキャストを指定してください。この場合は正しく手順が決まります。

----
【A:整数の配列】={1,2,3,4,5,6}
(A←配列)の種類名を表示
----

参考にしてください。

C#のオーバーロードが正しくない事がある

投稿者:onichan 投稿日:2024/04/21(Sun) 22:52:48 No.2371

いつもお世話になっております。

object[]またはdynamic[]を引数に取るメソッドに、プロデルで型固定された配列を入れようとすると、期待通りのオーバーロードが選択されない事があるようです。

```プログラム例(cs)
using System.Linq;
using Produire;

namespace ClassLibrary1
{
public class Class1 : IProduireGlobalClass
{
[自分で]public object[] スライス([を] object[] 内容) => 内容.Take(5).ToArray(); //要素型を問わず配列はこちらのメソッドで受け付けたい
[自分で]public string スライス([を] string 内容) => 内容.Substring(0, 5);
}
}
```

```プログラム例(rdr)
「(省略)\ClassLibrary1.dll」を利用
{1,2,3,4,5,6}をスライスして表示 //{1,2,3,4,5}
「123456」をスライスして表示 //12345

【A:整数の配列】={1,2,3,4,5,6}
Aをスライスしたものの種類名を表示 //object[]側のメソッドが呼ばれてほしいがstring側が呼ばれる
```

状況:Pythonのスライサーを再現するメソッドを作っている際に発覚しました。

プロデルバージョン:1.9.1209〜1.9.1239
C#7.3 .NET Framework 4.8.9232.0 コンパイラ4.9.0-3.24121.1(a98c90d5)

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

結果に関しては変わることがあります

投稿者:ゆうと <yutopia あっとまーくutopiat.net> 投稿日:2024/04/14(Sun) 13:31:42 No.2370

こんにちは

「元実体」設定項目に関しては、プログラムを確認しておきます。
ただ、「元実体」設定項目の結果に関しては、おまけ機能という位置づけですので、バージョンアップ等で今後もかなり変える可能性があります。この結果に依存したプログラムの作成はできるだけ避けてください。
(限られた開発時間の中で、このような点に対応しているとメインの開発が進まなくなりますので)

そもそも「元実体」設定項目でどのようなことをしているのかも含めて教えてください。
場合によっては標準で対応したり、代替となる機能を用意したいと思います。

一部の項目にしかアクセスできませんでした

投稿者:Milkeyyy 投稿日:2024/04/13(Sat) 08:21:06 No.2369

こんにちは。
いつもお世話になっております。

修正を確認できたと返信してしまったのですが、完全には修正されていないことに気づいたので再度報告させていただきます。

「元実体」設定項目にアクセスすることはできるようになったのですが、元実体に含まれる設定項目が以前とは異なり、一部の項目にしかアクセスできなくなっていました。
バージョン 2.0.1216 までは、通常の設定項目には存在しない項目にもアクセスできていました。

検証用のプログラムも添付させていただきます。
よろしくお願い致します。

◆動作環境情報◆
プロデル 2.0.1235
Windows 11 Pro 64ビット
メモリ:31.9 GB

ーー検証用プログラム
メイン画面を表示する
待機する

メイン画面とは
  ウィンドウを継承する
  はじめの手順
    初期化する
    ーー貼り付けた部品に対する操作をここに書きます
  終わり
  初期化する手順
    ーー自動生成された手順です。ここに書き加えたプログラムは消える可能性があります
    初期化開始する
    この実質大きさを{284,339}に変える
    この内容を「メイン画面」に変える
    この文字色を「標準の文字」に変える
    チェックボックス1というチェックボックスを作る
      その位置と大きさを{13,287,104,24}に変える
      その内容を「チェックボックス1」に変える
      その移動順を6に変える
      その文字色を「標準の文字」に変える
    オプション1というオプションを作る
      その位置と大きさを{13,256,104,24}に変える
      その内容を「オプション1」に変える
      その移動順を5に変える
      そのフォーカス移動可能を○に変える
      その文字色を「標準の文字」に変える
    ラベル1というラベルを作る
      その位置と大きさを{13,98,100,23}に変える
      その内容を「ラベル1」に変える
      その移動順を4に変える
      その文字色を「標準の文字」に変える
    テキスト領域1というテキスト領域を作る
      その位置と大きさを{13,149,100,100}に変える
      その移動順を3に変える
    テキスト1というテキストを作る
      その位置と大きさを{13,124,100,19}に変える
      その移動順を1に変える
    ボタン1というボタンを作る
      その位置と大きさを{13,13,223,79}に変える
      その内容を「ボタン1」に変える
      その移動順を2に変える
      そのドラッグドロップを○に変える
      その文字色を「標準の文字」に変える
    初期化終了する
  終わり
  
  開いた時の手順
    自分の内容=プロデルのバージョン
    自分の子部品一覧を【子部品】へそれぞれ繰り返す
      子部品の種類名&「: 」&(子部品の元実体が無でない)を報告する
      「- [[子部品の元実体]から型情報を取得したものから設定項目一覧を取得したものすべての名前]」を報告する
    繰り返し終わり
  終わり
終わり

Re: 修正しました

投稿者:Milkeyyy 投稿日:2024/04/13(Sat) 07:52:38 No.2368

こんにちは。
2.0.1235 で修正確認できました。

迅速な対応ありがとうございました。

修正しました

投稿者:ゆうと <yutopia あっとまーくutopiat.net> 投稿日:2024/04/13(Sat) 00:50:53 No.2367

こんにちは、ゆうとです。
いつもお世話になっております。

> 「ラベル」や「ボタン」などの部品では「元実体」プロパティにアクセスできるのですが、
> 「テキスト」と「テキスト領域」の「元実体」プロパティにアクセスすると「無」となり、アクセスできません。

検証用プログラムとても助かります。
状況を再現でき、内部仕様の変更が原因と判明しました。
最新版2.0.1235/1.9.1235で修正済みですのでご確認ください。

ご指摘ありがとうございます。

テキスト部品の元実体にアクセスできない

投稿者:Milkeyyy 投稿日:2024/04/06(Sat) 10:30:21 No.2365

お世話になっております。

「ラベル」や「ボタン」などの部品では「元実体」プロパティにアクセスできるのですが、
「テキスト」と「テキスト領域」の「元実体」プロパティにアクセスすると「無」となり、アクセスできません。

バージョン 2.0.1216 までは問題なくアクセスできたのですが、バージョン 2.0.1218 からこの現象が発生するようになったようです。

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

◆動作環境情報◆
プロデル 2.0.1234
Windows 11 Pro 64ビット
メモリ:31.9 GB


ーーサンプルプログラム

メイン画面を表示する
待機する

メイン画面とは
  ウィンドウを継承する
  はじめの手順
    初期化する
    ーー貼り付けた部品に対する操作をここに書きます
  終わり
  初期化する手順
    ーー自動生成された手順です。ここに書き加えたプログラムは消える可能性があります
    初期化開始する
    この実質大きさを{284,339}に変える
    この内容を「メイン画面」に変える
    この文字色を「標準の文字」に変える
    チェックボックス1というチェックボックスを作る
      その位置と大きさを{13,287,104,24}に変える
      その内容を「チェックボックス1」に変える
      その移動順を6に変える
      その文字色を「標準の文字」に変える
    オプション1というオプションを作る
      その位置と大きさを{13,256,104,24}に変える
      その内容を「オプション1」に変える
      その移動順を5に変える
      そのフォーカス移動可能を○に変える
      その文字色を「標準の文字」に変える
    ラベル1というラベルを作る
      その位置と大きさを{13,98,100,23}に変える
      その内容を「ラベル1」に変える
      その移動順を4に変える
      その文字色を「標準の文字」に変える
    テキスト領域1というテキスト領域を作る
      その位置と大きさを{13,149,100,100}に変える
      その移動順を3に変える
    テキスト1というテキストを作る
      その位置と大きさを{13,124,100,19}に変える
      その移動順を1に変える
    ボタン1というボタンを作る
      その位置と大きさを{13,13,223,79}に変える
      その内容を「ボタン1」に変える
      その移動順を2に変える
      そのドラッグドロップを○に変える
      その文字色を「標準の文字」に変える
    初期化終了する
  終わり
  
  開いた時の手順
    自分の内容=プロデルのバージョン
    自分の子部品一覧を【子部品】へそれぞれ繰り返す
      子部品の種類名&「: 」&(子部品の元実体が無でない)を報告する
    繰り返し終わり
  終わり
終わり

▲ページの先頭へ

- WebForum -