(現在 過去ログ71 を表示中)

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

[ 最新記事及び返信フォームをトピックトップへ ]

■10767 / inTopicNo.1)  桐10移行計画(その3)
  
□投稿者/ 悲しげ -(2017/11/16(Thu) 22:04:48)
    そろそろ「桐10s」が出る頃になって、ようやく桐9→桐10への本格移行に着手です。(^^;)
    で、桐10コンバータKiCnv.exeで変換して(それだけで)概ね動いていたのですが、
    流石にそれだけでは幾つか引っかかりました。
    例えば「ファイル削除」コマンドとか「#ファイルサイズ」関数とか・・・
    そこで慌てて桐移行ガイド(旧バージョンからの移行に関して)を読み直しました。
    https://www.kthree.co.jp/kiri/ct_product/kiri10/migration.html

    その辺りについては、kevの記述を個々に修正しようとは思いましたが、
    桐8以来のものが沢山ありすぎて、いささか手がすくみます。
    それに「環境設定で拡張子の読み替えについて設定できる」とあるが、
    自分で使ってないマシンのこともあるので、ちょっと不安。
    で、いっそのことkev内部の記述において拡張子を(.tbl→.tbx,.wfm→.wfx…に)
    一括変換させてみようと思い立ちまして。
    そんな訳で、やってみたらまあまあ成功したように見えるので、ここでご開帳
    させて戴きます。(kex-tbx-kex置換処理.cmx)
    記述に不具合や要改良点があればご指摘お願いします。

    それと、過去ログをつぶさに当たっていないので、もしかしたらこの辺りは
    既出かもしれませんが(であればご指摘下さい、参考にしたいし)・・・

    ※その1はNo9684(起動パラ関連)
     その2はNo10642(ZIPコマンドライン)です。


1510837488.zip
/6KB
引用返信 [メール受信/OFF] 削除キー/
■10768 / inTopicNo.2)  Re[1]: 桐10移行計画(その3)
□投稿者/ 悲しげ -(2017/11/16(Thu) 22:12:44)
    cmxの記述は簡素なものなのでTXTとして以下に再掲しておきます。
    ----------------------------
    変数宣言 文字列{&FILE名,&KEX名,&TBX名,&BAK名}
    ファイル削除 "dir-kex.bat", 終了状態=&実行リターン
    ファイル削除 "dir-kex.txt", 終了状態=&実行リターン
    印字開始 "dir-kex.bat",SJIS出力=する,終了状態=&実行リターン
     印字 "dir *.kex /b > dir-kex.txt"
    印字終了
    シェル実行 "dir-kex.bat",&秒
    *----「cmd」ファイル内の記述は今回置換の対象としていない
    表 "kexリスト.tbx",表番号=1
    cond( .not #空ファイル) 行削除 *,圧縮,終了状態=&実行リターン
    読み込み テキスト,"dir-kex.txt",終了状態=&実行リターン,*
    *表形式編集
    編集表 1
    &件数=1,&最大値=#総件数
    繰り返し
     &FILE名=[FILE名],&KEX名=&FILE名+".kex",&TBX名="$$$"+&FILE名+".tbx"  /* kexと同名のtbxがあると困るので */
     ファイル名変更 &KEX名,&TBX名,終了状態=&実行リターン
     cond(&実行リターン<>0) 確認 "「"+&FILE名+"」表変換でエラー → メモせよ!" /*印字の方がいいかも*/
     表 &TBX名,表番号=2
     *----↓ 但し「.tbl」や「.TBL」等は想定しているが、「.Tbl」とかの大文字・小文字混在は想定していない。
     *----↓ それと、入れ子は最小限として、置換を愚直に繰り返した(記述が見にくくなるので)。
     置換 終了状態=&実行リターン,[処理]=#s(#s([],".tbl",".tbx"),".TBL",".tbx")
     置換 終了状態=&実行リターン,[処理]=#s(#s([],".viw",".vix"),".VIW",".vix")
     置換 終了状態=&実行リターン,[処理]=#s(#s([],".xvw",".xvx"),".XVW",".xvx")
     置換 終了状態=&実行リターン,[処理]=#s(#s([],".wfm",".wfx"),".WFM",".wfx")
     置換 終了状態=&実行リターン,[処理]=#s(#s([],".rpt",".rpx"),".RPT",".rpx")
     置換 終了状態=&実行リターン,[処理]=#s(#s([],".cmd",".cmx"),".CMD",".cmx")
     置換 終了状態=&実行リターン,[処理]=#s(#s([],".kev",".kex"),".KEV",".kex")
     置換 終了状態=&実行リターン,[処理]=#s(#s([],".var",".vax"),".VAR",".vax")
     置換 終了状態=&実行リターン,[処理]=#s(#s([],".k3",".k3x"),".K3",".k3x")
     置換 終了状態=&実行リターン,[処理]=#s([],".k3xx",".k3x") /*←苦肉(^^;)*/
     終了 表 2
     ファイル名変更 &TBX名,&KEX名,終了状態=&実行リターン
     cond(&実行リターン<>0) 確認 "「"+&FILE名+"」戻し時にエラー → メモせよ!" /*印字の方がいいかも*/
     &BAK名=&TBX名+".BAK"
     ファイル削除 &BAK名,終了状態=&実行リターン    /*変更あった際に$$$*.tbx.BAKが残るので*/
     確認 "("+#str(&件数)+"/"+#str(&最大値)+") 「"+&FILE名+"」 処理終了"
     編集表 1
     ジャンプ 行番号=次行
     &件数=&件数+1
     cond(#eof) 繰り返し中止
    繰り返し終了

引用返信 [メール受信/OFF] 削除キー/
■10776 / inTopicNo.3)  (削除)
□投稿者/ -(2017/11/19(Sun) 11:22:31)
    この記事は(投稿者)削除されました
引用返信 [メール受信/OFF] 削除キー/
■10777 / inTopicNo.4)  Re[3]: 桐10移行計画(その3)
□投稿者/ 悲しげ -(2017/11/19(Sun) 12:20:20)
    No10776に返信(Vision Makerさんの記事)
    すいません、全く説明無しで挙げてしまいました。
    考え方は超簡単なのですが、後日説明します。
    というのは我がメインのマシンが、昨夜Win10のupdate→再起動をさせたところ、
    今朝に至っても画面が黒地で白丸クルクル状態のまま起動せず・・・・orz
引用返信 [メール受信/OFF] 削除キー/
■10778 / inTopicNo.5)  Re[4]: 桐10移行計画(その3)
□投稿者/ 悲しげ -(2017/11/19(Sun) 15:28:56)
    kex=kevもcmx=cmdもtbx=tblと全く同じ構造となっています。
    (項目が唯一[処理]のみの表)
    これは経験的に断定できます(変換しても印刷定義等も相互にそのまま残るはず)。
    で、kex=kevやcmx=cmdのままでは、置換や検索等を行うことができないので、
    いったん表(tbx=tbl)にコピーorリネームして必要な処理を行い、
    作業終了後に再度、kex=kevやcmx=cmdにコピーorリネームして戻します。
    (以前「桐でGrep」なるものを作りまして、それも同じ考え方なのですが、
    そういえばそっちも桐10対応に書き換えないと・・・)

    やり方は、このcmxファイルと別途用意するtbxファイルを当該フォルダに置いて
    cmxを実行するだけです。
    --------------------------
      印字 "dir *.kex /b > dir-kex.txt"
    を使ったのは「#ファイル検索」コマンドだと結果が不定になりうるから。
    もちろん dir *.cmx でも可。
    これら2つなりを、dirで一筆で「or的記述」ができるのかは調べてないが
      印字 "dir *.kex /b > dir-kex-cmx.txt"
      印字 "dir *.cmx /b >> dir-kex-cmx.txt"
    でtxtに追記すればよいかも。(未検証)

    さらに言えば私の癖として、一式の処理はあまりサブディレクトリに分けずに、
    ひとつのディレクトリ内で済ませているので、これら処理は各ディレクトリごとに
    独立して実行させることを前提としています。
    が、サブディレクトリ含めて実行させたければ
      印字 "dir *.kex /b /s > dir-kex.txt"
    のようにやればいいのではないかと。(未検証)
    --------------------------
    上記でできた一連の当該ファイル名を表に読み込んで、
    1行目〜最終行まで順に各ファイル名を取り出して処理していきます。

     &FILE名=[FILE名],&KEX名=&FILE名+".kex",&TBX名="$$$"+&FILE名+".tbx"
      /* kexと同名のtbxがあると困るので */
     ファイル名変更 &KEX名,&TBX名,終了状態=&実行リターン
     cond(&実行リターン<>0) 確認 "「"+&FILE名+"」表変換でエラー → メモせよ!"
      /*印字の方がいいかも*/

    「abcd.kex」を「abcd.tbx」にリネームして、
    表データの方で「#文字置換」関数のみで「.tbl」→「.tbx」等に置換しています。
    終了後は再度「abcd.tbx」を「abcd.kex」にリネーム戻し。
    --------------------------
    例示では単一ディレクトリゆえ、「ファイル名」単独で処理していますが、
    サブディレクトリ含めて扱うなら「フルパス名+ファイル名」のままを
    対象にするとよいと思う。(未検証)
    但しディレクリ名込みだと記述が少々ややこしくなるので

     &DIR-FILE名=[DIR-FILE名]
      /*DIR+ファイル名+拡張子(kex等)のまま*/
     &TBX名=#データパス名+"$$$変換作業.tbx"
      /*表ファイル名を固定してしまおう*/
     ファイル複写 &DIR-FILE名,&TBX名,終了状態=&実行リターン
      /*こうすると同名ファイルエラーも出ないであろう、強制上書きだから*/
     〜〜〜 中略 〜〜〜
     ファイル複写 &TBX名,&DIR-FILE名,終了状態=&実行リターン
      /*そっくりそのまま戻しだから大丈夫なはず、強制上書き*/

    ・・・と、挙動未確認ながら、(^^;)
    --------------------------
    おまけ
    処理経過が判らないと動いているのか、どこまで行ったのか不安なので
    手抜きながら「確認」コマンドで
      (16/20)「wxyz」処理終了
    のように表示させています。もっと麗しい方法もあるでしょうけど。(^^;)

    ===============================================================
    ps.
    我がメインマシンは、強制電源断をおっかなびっくり数回繰り返して
    ようやく起動しました。10数時間かかった。(;_;)
    何か動かなくなってるのは無いかな? 印刷とmp3は確認したが・・・
引用返信 [メール受信/OFF] 削除キー/
■10782 / inTopicNo.6)  Re[5]: 桐10移行計画(その3)
□投稿者/ Vision Maker -(2017/11/19(Sun) 18:12:40)
    悲しげさん

    こんにちは。

    > やり方は、このcmxファイルと別途用意するtbxファイルを当該フォルダに置いて
    > cmxを実行するだけです。
    > --------------------------

    みごと作動しました。今回つくられたのは.kexまたは.KEX用だったのですね。

    .cmx用のはヒントを参考に作ってみようと思います。

    ありがとうございました。

引用返信 [メール受信/OFF] 削除キー/
■10786 / inTopicNo.7)  Re[5]: 桐10移行計画(その3)
□投稿者/ Vision Maker -(2017/11/24(Fri) 02:11:43)
    2017/11/25(Sat) 14:27:02 編集(投稿者)

    悲しげさん こんにちは。

    このプログラムに英語コマンドや関数を日本語コマンドや関数に置換するようにするとすごく読みやすいプログラムに変わり大変便利です。

    置換 終了状態=&実行リターン,[処理]=#s(#s([],"#cat","#連結"),"#CAT","#連結")

    自分の夢が実現できました。

    ありがとうございました。

引用返信 [メール受信/OFF] 削除キー/
■10792 / inTopicNo.8)  Re[6]: 桐10移行計画(その3)
□投稿者/ 悲しげ -(2017/11/25(Sat) 18:37:44)
    No10786に返信(Vision Makerさんの記事)
    > このプログラムに英語コマンドや関数を日本語コマンドや関数に置換するようにするとすごく読みやすいプログラムに変わり大変便利です。
    >
    > 置換 終了状態=&実行リターン,[処理]=#s(#s([],"#cat","#連結"),"#CAT","#連結")

    そのような使い方をするなら、wfxの方でテキストボックスを2つ用意して
    (それぞれのソースを &置換前 &置換後 としておく)
    そのフォームから実行すれば

     置換 終了状態=&実行リターン,[処理]=#s([],&置換前,&置換後)

    とできるので汎用的かと思います。
    (大文字/小文字対策は略・・・、テキストボックスと変数を倍用意するのかな?)
    私はそこまで手を広げる気はありませんが、ご随意にお試し下さい。

    なお、先に挙げた
     置換 終了状態=&実行リターン,[処理]=#s(#s([],".k3",".k3x"),".K3",".k3x")
     置換 終了状態=&実行リターン,[処理]=#s([],".k3xx",".k3x") /*←苦肉(^^;)*/
    のような場合の対応も必要かと。
    関数もコマンドも「○△□」と「○△□×●」なんてのはザラにありますよって。

    ps.
    私の場合、「桐10移行計画3」がうまく行くかどうかの試行が主な動機だったため、
    先に挙げた分はひとつのフォルダだけの処理としていました。
    どうやらうまく行ったみたいなので、他フォルダでも実行させようと思いましたが、
    そしたら他フォルダに逐一当該ファイルをコピーするのも面倒だと気づきまして。
    どこか固定の場所から、フォルダを指定して(続けて)実行できるようにしようと
    もくろんでいます。できたらこのツリーに追記しようと思います。
    それとサブフォルダも一括して処理させることは「dir /b /s」で可能とは思うが、
    私は単独フォルダ指定でやることにします。サブフォルダに置換前のバックアップを
    置いといたりしてるし。
引用返信 [メール受信/OFF] 削除キー/
■10793 / inTopicNo.9)  Re[7]: 桐10移行計画(その3)
□投稿者/ Vision Maker -(2017/11/25(Sat) 19:44:36)
    >  置換 終了状態=&実行リターン,[処理]=#s([],&置換前,&置換後)
    >
    > とできるので汎用的かと思います。

    > 私はそこまで手を広げる気はありませんが、ご随意にお試し下さい。

    置換 終了状態=&実行リターン,[処理]=#文字置換([],&置換前,&置換後)

    私だけかもしれませんが、なぜか日本語表記だと理解しやすいのです。

    私にとって、桐が日本語でプログラミングできるのが非常に魅力的なのです。

    しかし、自分の理解のために使用する目的です。


    悲しげさん ありがとうございます。
引用返信 [メール受信/OFF] 削除キー/
■10807 / inTopicNo.10)  桐10移行計画(その3) ほぼ完成版
□投稿者/ 悲しげ -(2017/12/07(Thu) 19:09:25)
    2017/12/07(Thu) 19:16:00 編集(投稿者)

    No10767からのツリーで書き連ねていたものが、概ねまとまったので、ここに
    挙げさせていただきます。
    ----------------------------------------------------------------------
        桐10移行計画3 補足説明   2017年12月  3.06版  (C)悲しげ

    【目的】
    そろそろ「桐10s」が出る頃になって、ようやく桐9→桐10への本格移行に着手です。(^^;)
    で、桐10コンバータKiCnv.exeで変換して(それだけで)概ね動いていたのですが、
    流石にそれだけでは幾つか引っかかりました。
    例えば「ファイル削除」コマンドとか「#ファイルサイズ」関数とか・・・。
    そこで慌てて桐移行ガイド(旧バージョンからの移行に関して)を読み直しました。
    https://www.kthree.co.jp/kiri/ct_product/kiri10/migration.html
    その辺りについては、kevの記述を個々に修正しようとは思いましたが、桐8以来の
    ものが沢山ありすぎて、いささか手がすくみます。
    それに「環境設定で拡張子の読み替えについて設定できる」とあるが、自分で使っ
    てないマシンのこともあるので、ちょっと不安。
    で、いっそのことkev内部の記述において拡張子を(.tbl→.tbx,.wfm→.wfx…に)
    一括変換させてみようと思い立ちまして。
    そんな訳で、やってみたらまあまあ成功したように見えるので、ここでご開帳させ
    て戴きます。

    【使い方】
    この処理一式を任意のフォルダに置く。(私の場合 某ドライブ:\TOOL フォルダに)
    起動は「桐10移行3.wfx」から。(必要ならwfxのショートカットをデスクトップにでも)
    こうすることで、処理対象フォルダに作業ファイルを逐一手動でコピーすることなく、
    汎用的(フォルダ横断的)に処理を行うことが可能なように作ったつもり。
    具体的には「dir」やその他の処理でも全てフルパスで取り扱うようにした。
    処理対象ファイルは「kex」と「cmx」限定。
    どちらのファイルも基本構造は表ファイルなので、拡張子を「tbx」としてコピー後、
    必要な変換(#文字置換)を行ってから、元の拡張子に上書きコピーで戻すという、
    少々「反則技」的と言うか・・・。
    サブフォルダ下のも一括して取り扱い可とした。
    (が、もし変換したくないファイルもあるなら要注意)
    「当該フォルダのみ」の扱いは、発想を逆転して「dir」の「/s」でサブフォルダごと
    取得してから、当該フォルダのみを絞り込んで処理している。
    前回処理フォルダ名を記憶させてみた。(意外と便利かも)
    処理作業の進行状況も表示させた。

    【補足】
    「シェル実行」で「同期=する」指定を忘れて暫しの間ドツボにはまっていた。(^^;)

    「印字開始」コマンドで「制御文字展開=しない」関連の不具合に遭遇してひどい目にあった。
    上述したように、\TOOL フォルダなんかに置いたものだから「\t」がタブ展開されてしまった
    とか(あと「\n」なんかも困るのかも?)。
    どうやら「印字開始」コマンドの指定よりも、環境設定の指定が優先されることがあるようで。
    対策としては(ヘルプにもあるが)個々に
      #文字置換(#文字置換(&フォルダ名,"\t","\\t"),"\n","\\n")  /*さらに大文字対応も?*/
    とやるべきなのだが、面倒なので、その辺り起動時に次のメッセージを時々出して逃げてある。
      この処理を使う場合は、環境設定/一括/高度な設定において
      「印字コマンドでコントロール文字を展開する」にチェックを
      入れないでおいて下さい。
    試してないけど、まとめて「#文字置換(&フォルダ名,"\","\\")」でもいいらしいが。

    【最後に(重要!)】
    不具合あればお知らせ下さい。バグが多発して、かなりつぶしましたが、他にもきっとある
    でしょう。
    然る後に「ダウンロードコーナー」に挙げてもらうことも検討します。が、そもそも基本的
    に自分の必要に迫られて、自分のために作ったものなので・・・。
    でも久しく新作上がってませんよね。

    それと上述したように少々「反則技」的なので、変換結果を保証するものではありません。
    実行に際しては、他フォルダ・メディア等にバックアップをとった上で、自己責任でお願いいたします。

    ---------------------------------------------
    ps.
    ついでに、「桐でGrep」処理も(桐v9版は前世紀1999年に作ったものだったから)
    この度ようやく桐10対応版を作成中。

k10ikou3.zip
/25KB
引用返信 [メール受信/OFF] 削除キー/
■10811 / inTopicNo.11)  Re[2]: 桐10移行計画(その3) ほぼ完成版
□投稿者/ Vision Maker -(2017/12/10(Sun) 02:40:32)
    2017/12/10(Sun) 08:49:58 編集(投稿者)
    2017/12/10(Sun) 02:47:36 編集(投稿者)
    2017/12/10(Sun) 02:41:41 編集(投稿者)

    悲しげさん
    かっこいい画面でフォルダ選択ができてすばらしいですね。

    フォルダ名にスペースがあると「当該ファイルがありません」となるようです。


引用返信 [メール受信/OFF] 削除キー/
■10812 / inTopicNo.12)  Re[3]: 桐10移行計画(その3) ほぼ完成版
□投稿者/ 悲しげ -(2017/12/10(Sun) 12:54:31)
    2017/12/10(Sun) 12:55:25 編集(投稿者)

    No10811に返信(Vision Makerさんの記事)

    > フォルダ名にスペースがあると「当該ファイルがありません」となるようです。

    たはは(^^;)
    ツギハギだらけになりましたが、次のようにして試して下さい、
    多分90行目辺り
    ---------------------------
     印字開始 "dir-list.bat",SJIS出力=する,制御文字展開=しない,終了状態=&実行リターン
      /*↓フルパスで処理するので単フォルダ・サブフォルダとも/sオプションを使う!*/
      /*↓したがって記述には全てフルパス指定が必要だった! &ぱ=初めに取得しといた現在の#データパス名*/
    *  印字 "dir "+&フォルダ+"*.kex /b /s > "+&ぱ+"dir-list.txt"
    *  印字 "dir "+&フォルダ+"*.cmx /b /s >> "+&ぱ+"dir-list.txt"
    *↑↓2017/12/10修正
      印字 "dir """+&フォルダ+"*.kex"" /b /s > """+&ぱ+"dir-list.txt"""
      印字 "dir """+&フォルダ+"*.cmx"" /b /s >> """+&ぱ+"dir-list.txt"""
     印字終了
    ---------------------------
引用返信 [メール受信/OFF] 削除キー/
■10813 / inTopicNo.13)  Re[4]: 桐10移行計画(その3) ほぼ完成版
□投稿者/ Vision Maker -(2017/12/10(Sun) 13:36:43)
    2017/12/10(Sun) 13:50:55 編集(投稿者)

    悲しげさん。
    修正後、フォルダ名にスペースがあっても作動しました。ありがとうございます。
引用返信 [メール受信/OFF] 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/

HOME HELP 新規作成 新着記事 トピック表示 ファイル一覧 検索 過去ログ

- Child Tree -
- Antispam Version -