(さらに続きです)

投稿者:KNIGHT 投稿日:2024/02/29(Thu) 13:31:39 No.2968

その後、今度は、コマンドプロンプトを管理者権限で起動して、
regsvr32 "C:\Program Files (x86)\Microsoft Office\Office16\MSBCODE9.OCX"
を実行したところ、うまく登録できたようなメッセージが出ました(画像)。

にもかかわらず、相変わらず「クラスが登録されていません・・・」の同じエラーが出ます。

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

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

投稿者:KNIGHT 投稿日:2024/02/29(Thu) 08:55:46 No.2967

こんにちは、お世話になります。
> 現在も以前のプロデルも、プログラム上で改行コードを変更することはありません。
そうですか・・・

以下のようなプログラムで、以前は、きちんと[改行]が復活していたのですが、
プロデルを新しいものにしたタイミングで、[改行]が復活しなくなったので、バイナリーエディタで確認したところ、[改行]に相当する部分で、[&H0D]のみになっていたのです。
それで、配列内での[改行]コードの取り扱いが変わったのかなと思いました。

〜〜〜〜
メイン画面を表示する
待機する
メイン画面とは
  ウィンドウを継承する
  はじめの手順
    初期化する
    ーー貼り付けた部品に対する操作をここに書きます
  終わり
  初期化する手順
    ーー自動生成された手順です。ここに書き加えたプログラムは消える可能性があります
    初期化開始する
    この内容を「メイン画面」に変える
    この文字色を「標準の文字」に変える
    ボタン2というボタンを作る
      その位置と大きさを{159,199,86,33}に変える
      その内容を「配列から復元」に変える
      その移動順を2に変える
      その文字色を「標準の文字」に変える
    ボタン1というボタンを作る
      その位置と大きさを{22,198,103,34}に変える
      その内容を「配列に保存」に変える
      その移動順を1に変える
      その文字色を「標準の文字」に変える
    テキスト領域2というテキスト領域を作る
      その位置と大きさを{35,127,193,47}に変える
      その内容を「ここにも文章を
改行を入れて
入力します。」に変える
      その移動順を4に変える
    テキスト領域1というテキスト領域を作る
      その位置と大きさを{36,39,193,65}に変える
      その内容を「改行を含む
文字列を
テキスト領域に入力します。」に変える
      その移動順を3に変える
    初期化終了する
  終わり
  ボタン1がクリックされた時の手順
    文章配列は、{[テキスト領域1の内容]、[テキスト領域2の内容]}
    文章配列を、「テスト.txt」へ保存
  終わり
  ボタン2がクリックされた時の手順
    文章配列は、「テスト.txt」から読み込んだものを配列化
    テキスト領域1の内容は、文章配列(1)  
    テキスト領域2の内容は、文章配列(2)  
  終わり
終わり
〜〜〜

39行目を以下のように
    文章配列(1)は、テキスト領域1の内容
    文章配列(2)は、テキスト領域2の内容
と変更しても最初と同様に、読みだした文章の「改行」は、「&H0D」のみになってしまいます。
また、39行目を

  文章配列は、{[テキスト領域1の内容]、[テキスト領域2の内容]}を配列化

のように変更すると、以下のようなエラーメッセージが出てどうすればよいの分かりません。

〜〜〜[エラーメッセージ]〜〜〜〜
「配列化」という手順が複数あり、どの手順を実行するか決められません。
引数の助詞や型が合うように指定してください。

手順の候補:
[文字列]を配列化
[画像]を配列化

[エラー番号117] [メイン画面.ボタン1がクリックされた時:39行目]
プロデル 2.0.1226 (64)
〜〜〜[以上、エラーメッセージ]〜〜〜〜

どうも、44行目の
    文章配列は、「テスト.txt」から読み込んだものを配列化
の「配列化」した時点で、[改行]⇒[&H0Dのみ]となっているようです。

以下のプログラムを実行してみたところ、[エンター]⇒[&H0Dのみ]となっていました。
〜〜〜〜
データは「{AA[エンター]A,BBB,CCC}」を配列化
データ(1)を表示する
データ(2)を表示する
データ(3)を表示する
データを「テスト3.txt」へ保存する
〜〜〜〜

ちなみに、「テスト3.txt」をメモ帳で開くと、自動的に[0D]⇒[0D0A]に変換されてしまって、問題ないかのように見えてしまいます。・・・が、テキスト領域に読み込むと、問題があることが露呈します。

テキスト領域を含む複数の部品の内容を、配列化して、ファイル保存し、またファイルを読みだして、テキスト領域を含む複数の部品の内容を復元するにはどうすればよいのでしょうか?
よろしくお願いいたします。

(続きです)

投稿者:KNIGHT 投稿日:2024/02/29(Thu) 08:04:43 No.2966

MSBARCODEが登録されていないのかなと思い、MSBCODE9.OCXの所在を確認して、その所在パスに変更して、以下を実行したのですが、

//32ビット版Officeの場合
「regsvr32 "C:\Program Files (x86)\Microsoft Office\root\Office16\MSBCODE9.OCX"」を起動する

画像のようなエラーメッセージが出ました。
このメッセージに対する対処は、エラーが発生した状況やタイミングによってさまざまあるようで、いろいろと調べてみたのですが、どうすればよいのか分かりません。ご教授いただければ幸いです。

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

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

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

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

>修正します

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

▲ページの先頭へ

- WebForum -