Re^2: プロデルでバーコードを扱いたいのですが・

投稿者:KNIGHT 投稿日:2024/02/29(Thu) 07:41:19 No.2965

おはようございます。ゆうとさま

> ブログの記事を少し加筆しました。
> https://produ.irelang.jp/blog/2018/12/717/

ありがとうございます。

> 完全なプログラムをもれなく載せているのですが、、、
> 少し考えれば、動くプログラムになると思うのですが、以前のフィードバックを見ても、それが難しいみたいですね...
そう思って、前後に配置にしてみたり・・・、いろいろとやってみたのですがうまく行かないので、お尋ねした次第です。
・・・で、ご指示の通りに、やってみるのですが、以下のようなエラーが出ます。

プロデル 2.0.1226
クラスが登録されていません (HRESULT からの例外:0x80040154 (REGDB_E_CLASSNOTREG))
場所 System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance(Guid& clsid, Object punkOuter, Int32 context, Guid& iid)
場所 System.Windows.Forms.AxHost.CreateWithLicense(String license, Guid clsid)
場所 System.Windows.Forms.AxHost.CreateInstanceCore(Guid clsid)
場所 System.Windows.Forms.AxHost.CreateInstance()
場所 System.Windows.Forms.AxHost.GetOcxCreate()
場所 System.Windows.Forms.AxHost.TransitionUpTo(Int32 state)
場所 System.Windows.Forms.AxHost.CreateHandle()
場所 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
場所 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
場所 System.Windows.Forms.Control.CreateControl()
場所 System.Windows.Forms.Control.WmShowWindow(Message& m)
場所 System.Windows.Forms.Control.WndProc(Message& m)
場所 System.Windows.Forms.Form.WmShowWindow(Message& m)
場所 Produire.WinControl.ウィンドウ.WndProc(Message& m)
場所 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

実行したプログラム
〜〜〜〜
メイン画面を表示する
待機する

メイン画面とは
  ウィンドウを継承する
  はじめの手順
    初期化する
    ーー貼り付けた部品に対する操作をここに書きます
    バーコードというバーコード部品を作る
      その大きさを{100,100}に変える
  終わり
  初期化する手順
    ーー自動生成された手順です。ここにプログラムを書き加えても消える場合があります
    この設計スケール比率を{144,144}に変える
    この内容を「メイン画面」に変える
    初期化開始する
    初期化終了する
  終わり

開いた時の手順
  バーコードのスタイルは、2
  バーコードの内容は、4902777232577
終わり
終わり

バーコード部品とは
  ActiveX部品を継承する
  はじめ()の手順=(「BARCODE.BarCodeCtrl.1」)
  終わり

スタイルという属性
  取得する手順
    本体のStyleを返す
  終わり
  設定する手順
    本体のStyleは、設定値
  終わり
終わり

内容という属性
  取得する手順
    本体のValueを返す
  終わり
  設定する手順
    本体のValueは、設定値
  終わり
終わり

終わり
〜〜〜〜

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

Re: 配列に入れた改行を含む文字列の復元は?

投稿者:ゆうと <yutopia あっとまーくutopiat.net> 投稿日:2024/02/28(Wed) 20:44:27 No.2964

こんにちは

> 以前のプロデルでは、テキスト領域に保存された改行を含む文字列は、一旦、配列に入れても、「改行」コードはそのままで取り出せたと思うのですが、現在のプロデルでは、「改行を含む文字列」を配列に入れてしまうと、「改行コード」が「CRLF」から「CR(&H13)」のみに変更されてしまうのですね!?

現在も以前のプロデルも、プログラム上で改行コードを変更することはありません。

ただし、プロデルデザイナで使用しているリッチテキストボックスの仕様で、
意図せず勝手に改行文字が変更される挙動が起きるようで、プロデルデザイナがそのための対処を行っています。特に文字列定数で、一時的に改行コードが変わってしまうかもしれません。

基本的には、プロデルデザイナの右下の「CrLf」となっている箇所で改行コードを選択できますので「Lf」などとなっている場合は、「CrLf」に変更することで改行コードは統一されます。

Re: プロデルでバーコードを扱いたいのですが・

投稿者:ゆうと <yutopia あっとまーくutopiat.net> 投稿日:2024/02/28(Wed) 20:38:44 No.2963

こんにちは

ブログの記事を少し加筆しました。
https://produ.irelang.jp/blog/2018/12/717/

> 「バーコード部品とは」で始まるスクリプトと、「メイン画面を表示する」で始まるスクリプトとは、どういった形で、列挙記述することができるのかが分かりません。

「〜とは」〜「終わり」は、手順よりも大きな括りとなります。
https://produ.irelang.jp/docs/syntax/construct.html

「バーコード部品とは」〜「終わり」までは、プログラムの末尾に書いてください。

> もう少し具体的なサンプルプログラムをお示しいただけると幸いです。
完全なプログラムをもれなく載せているのですが、、、

当時の記事は、プログラムの一部を載せて、すべて貼り付けて組み合わせれば、完成するような章立てになっています。少し考えれば、動くプログラムになると思うのですが、以前のフィードバックを見ても、それが難しいみたいですね...

プロデルでバーコードを扱いたいのですが・

投稿者:KNIGHT 投稿日:2024/02/28(Wed) 16:16:38 No.2962

たびたび、お世話になります。

TTSneoで作ったプログラムでは MiBarcd というプログラムをコマンドラインで使用して、バーコードを生成していたのですが、MiBarcd の挙動が今一つ良くないので、ゆうとさまが解説しておられる Microsoft Accessに含まれていう Microsoft Barcode Control を利用してみようと思い、プロデルブログの、https://produ.irelang.jp/blog/2018/12/717/ を参考にするですが、どうプログラムすればよいのか分かりません。

「バーコード部品とは」で始まるスクリプトと、「メイン画面を表示する」で始まるスクリプトとは、どういった形で、列挙記述することができるのかが分かりません。もう少し具体的なサンプルプログラムをお示しいただけると幸いです。

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

Re: 修正を確認いたしました。

投稿者:KNIGHT 投稿日:2024/02/28(Wed) 10:47:38 No.2961

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

ラベルに「」を使用しても問題ないようになったことが確認できました。
早速の対応を、ありがとうございました。

今後ともよろしくお願いいたします。

配列に入れた改行を含む文字列の復元は?

投稿者:KNIGHT 投稿日:2024/02/25(Sun) 17:22:43 No.2960

御世話になります。

以前のプロデルでは、テキスト領域に保存された改行を含む文字列は、一旦、配列に入れても、「改行」コードはそのままで取り出せたと思うのですが、現在のプロデルでは、「改行を含む文字列」を配列に入れてしまうと、「改行コード」が「CRLF」から「CR(&H13)」のみに変更されてしまうのですね!?

「表示する」とか「報告する」という命令では、ちゃんと「改行」が再現されているように見えるのですが、テキスト領域に、テキスト領域の内容を記憶させた配列を、元のテキスト領域に戻してやると、改行がなくなってしまいます(「0D」だけになっているようです)。

現状では、姑息的に
〜〜〜
 テキスト領域1の内容は、保存配列(5)から13のキャラクタを、[エンター]へ置き換えたもの
〜〜〜
といった変換をして、もとの CRLFに戻していますが、もっとスマートな復元の仕方があれば、ご教授願えませんでしょうか?

あるいは、単に、「0D0A」となるべきところが、なぜか「0A」が抜け落ちて、「OD」だけになってしまっているのでしょうか?

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

修正をよろしくお願いいたします。

投稿者:KNIGHT 投稿日:2024/02/25(Sun) 16:49:56 No.2959

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

> ラベルの内容に"「 」"を含む文字列を設定することを想定していませんでした。
ウィンドウ内にデフォルト文字として記述できるのはラベルしかないので、ここで"「 」"を含む文字列も使用できるとありがたいです。
具体的にはアンケートで、
「上記の質問に「はい」を選択された方は以下にその詳細を記してください。」
などというメッセージの下に、テキスト入力欄を設けたい場合です。

> なお「初期化する」手順の内容は、デザイナを通じて修正してください。
> このプログラムは自動生成されるため、自動的にプログラムが消えたり書き換わったりします。
> (これは意図した動作です)
そうでした、本来は・・・・。

>修正します

どうか、よろしくお願いします。

Re: カイゼン掲示板にお願いします

投稿者:KNIGHT 投稿日:2024/02/25(Sun) 16:41:07 No.2958

こんにちは。ゆうとさま。
修正確認いたしました。早速の修正をいただきありがとうございました。
10年来のハードルが一つなくなりました。
ありがとございます。

> 情報を整理するために「フリーズする」といった現象や「例外がスローされました。」類のエラーについては
> バグの可能性が高いので、今後はカイゼン掲示板への投稿をお願いします。
分かりました。今後はそうさせていただきます。

バグ修正しました

投稿者:ゆうと <yutopia あっとまーくutopiat.net> 投稿日:2024/02/25(Sun) 16:31:14 No.2957

お世話になっています。

タブフレームのエラーの件、再現できました。
最新版では正常に動作するように修正しました。

> かなり以前(10年くらい前?)にプロデルに挑戦して、TTSneoではできるのに、プロデルではエラーが出て出来ないので、プロデルへのプログラムの移植をあきらめたのも、これが原因だったように記憶しています。

まったく気が付きませんでした。
フィードバックありがとうございます。
また何か気が付いた事があれば、お願いします。

修正します

投稿者:ゆうと <yutopia あっとまーくutopiat.net> 投稿日:2024/02/25(Sun) 16:19:58 No.2956

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

> 基本的に、ラベルには「」を含む文字列は設定してはいけないのでしょうか?
> それとも、プロデルの自動修正自体が予想外の動作なのでしょうか?

ラベルの内容に"「 」"を含む文字列を設定することを想定していませんでした。
デザイナの「ウィンドウの設計」上での
この挙動はバグですので、今後のバージョンで修正します。

なお「初期化する」手順の内容は、デザイナを通じて修正してください。
このプログラムは自動生成されるため、自動的にプログラムが消えたり書き換わったりします。
(これは意図した動作です)

よろしくお願いします。

▲ページの先頭へ

- WebForum -