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

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

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

■12462 / inTopicNo.21)  Re[8]: ファル管理
  
□投稿者/ ONnoji -(2020/06/07(Sun) 21:33:26)
    2020/06/07(Sun) 21:42:35 編集(投稿者)

    eoさん江

    私( ONnoji )、この度つくずくと考えさせられました。

    というのは、ご承知のように#表題 という関数は、表ファイルが開いていないと使えないわけなんですよね。

    従って、#表題 を利用する為に、表ファイルを開くわけです。

    しかし、

     ・表ファイルのサイズがとてつもなく大きい

     ・バックアップとる の指定がある

     ・膨大な数の表ファイルが存在する

    という極限条件を勘案すると、私( ONnoji )の場合には、これは予想として厳しいと思うのです。

    また、

     ・表ファイルのサイズがとてつもなく大きい

     ・バックアップとる の指定がある

     ・膨大な数の表ファイルが存在する

    というテスト環境を用意するのも困難なのが実情です。

    つまり、予想として厳しそうで、さらにテストも出来ないということです。

     ◇ ◇ ◇ ◇ ◇ ◇

    しかし、私( ONnoji )は、eoさんのような[チャレンジャー]を否定するものではありません。

    従って、当方の知見を、eoさんにお知らせすることにした次第です。

    なお、当方の知見と言っても、「知る人ぞ知る」で、消して秘密というわけではありませんけれども。(^^ゞ

     ◇ ◇ ◇ ◇ ◇ ◇

    以下に当方の知見のまとめを引用しておきます。

    ご参考にしてください。

    桐の釣魚大全のトップ http://silicon7565.html.xdomain.jp/

    桐の釣魚大全のトップ > フォームアプリケーション教書 第2部 > 24.1 [多重化]コマンド
    【引用】24.1 [多重化]コマンド

     ■多重化によるパフォーマンス向上
     フォームの編集対象表を多重化していない一覧表形式(または伝票形式)のフォームの場合には、明細部のレコードを再描画するための時間が必要です。
    そのために、[フォーム操作バー]の[ジャンプバー]を非表示にすると、若干改善しますが焼け石に水程度の改善しかしません。
    ところが、フォームの編集対象表を多重化すると圧倒的にパフォーマンスが向上します。
     これは、カード形式のフォームでも同じです。
    例えば、プログレスバーだけを表示しているカード形式のフォームだとしても、フォームの編集対象表を多重化してレコードを処理した方が圧倒的にパフォーマンスが向上します。
    ※拙作:utx_list3_reform:整形ユーティリティのプログレスバーフォームの場合には、処理時間が2/3に短縮しました。
     もしも、「このレコード処理は遅いな」と思ったら、フォームの編集対象表を多重化してレコードを処理してみてください。
    圧倒的なパフォーマンスに腰を抜かすほど驚くはずです。


    <追伸>

    なお、多重化がパフォーマンスを向上させてか否かは、

    机上で判断するのではなく、実際に

     ・通常の処理

     ・多重化を取り入れた処理

    の2つを用意して、ベンチマークする(秒数を計る)しかありませんのでご注意ください。






引用返信 [メール受信/OFF] 削除キー/
■12463 / inTopicNo.22)  Re[9]: ファル管理
□投稿者/ eo -(2020/06/07(Sun) 21:45:50)
    参考になります。
    圧倒的なレベルの違いを思い知らされます。
    ちなみに私のtblには、ほとんど表題は未入力です。

引用返信 [メール受信/OFF] 削除キー/
■12466 / inTopicNo.23)  Re[10]: ファル管理
□投稿者/ AKome -(2020/06/07(Sun) 23:13:12)
    横レスで失礼いたします。m(__)m

    多重化についてですが
    私のサイトでも紹介しています。

    よろしかったらご覧になってください。

    入門講座:Chapter4 と 5 にあります。

    http://akome409102.html.xdomain.jp/
引用返信 [メール受信/OFF] 削除キー/
■12468 / inTopicNo.24)  Re[7]: ファル管理
□投稿者/ hidetake -(2020/06/07(Sun) 23:33:08)
    >>は、桐9までのファイルだけで、桐10 のファイルに
    >>関しては、対応していないと思います。

    すげぇ〜雑に、桐10 に対応させてみた。
    桐10 になって、64文字まで標題は設定できるけど
    それまでの桁数にあわせたまま。

    ざっとしか確認していないので、全部が桐10 に
    対応できるかは確認していない。

    これは、テーブルだけでなく、昔のバージョンの
    桐も含め、Windows 環境なら、桐なしでも、表は
    当然として、フォームやレポートや .cmx .kex の
    標題も取得できるのが特徴。
    昔、松についていた BTYPE.COM は、松の表だけで
    なく、桐のファイルの標題も取り出せていたので、
    その機能の跡継ぎが欲しかったので、造ったもの
    です。本当は、もっとまともに桐10 に対応させた
    方が良いのですが…
    '-----------------------------------------------------------------------
    Function KiriTitle(KiriFile)

    Dim KTitle, Ver, TimeC, TimeM, _
    c1, c2, i ,j, _
    Stream, _
    Data(84), Bin(2), T0(7), T1(7)
    Set Stream = WScript.CreateObject("Adodb.Stream")
    Stream.Type = 1
    Stream.Open
    Stream.LoadFromFile KiriFile

    ' 対象ファイルの先頭「0x00」を読み込む
    Stream.Position = &H00
    Bin(0) = Stream.Read(1)

    ' 対象ファイルのバージョン「0x30」を読み込む
    Stream.Position = &H30
    Bin(1) = Stream.Read(1)
    If UCase(Right(File,4)) = ".WFM" And UCase(Right(File,4)) = ".WFX" And AscB(Bin(1)) = 7 Then
    Stream.Position = &H33
    Bin(1) = Stream.Read(1)
    End If

    ' 対象ファイルの表題「0x34〜0x5B」を読み込む
    If (AscB(Bin(0)) = 0 And AscB(Bin(1)) = 10) Then
    Stream.Position = &H5C8
    For i=1 To 40
    Data(i) = Stream.Read(1)
    If (i mod 2) = 0 Then
    Stream.Position = Stream.Position + 2
    End If
    Next
    Else
    Stream.Position = &H34
    For i=1 To 40
    Data(i) = Stream.Read(1)
    Next
    End If

    ' 対象ファイルの作成日「0x9C〜0xA1」を読み込む
    Stream.Position = &H9C
    For i=1 To 6
    T0(i) = Stream.Read(1)
    Next

    ' 対象ファイルの更新日「0xA2〜0xA7」を読み込む
    Stream.Position = &HA2
    For i=1 To 6
    T1(i) = Stream.Read(1)
    Next

    Stream.Close
    Set Stream = Nothing

    ' 桐のファイルか否かを 0x00h とバージョン情報でチェックする
    If (AscB(Bin(0)) = 0 And AscB(Bin(1)) >= 1 And AscB(Bin(1)) <= 10) Then
    ' バージョン情報を文字列に変換する
    'Ver = "[" & Chr(AscB(Bin(1)) + &H30) & "]"
    If (AscB(Bin(0)) = 0 And AscB(Bin(1)) >= 1 And AscB(Bin(1)) <= 9) Then
    Ver = "[" & Chr(AscB(Bin(1)) + &H30) & "]"
    ElseIf (AscB(Bin(0)) = 0 And AscB(Bin(1)) = 10) Then
    Ver = "[A]"
    End if

    ' 表題を JIS から SJIS にコード変換する
    i = 0 : j = 0 : KTitle = ""
    For i = 1 To 40
    If (i mod 2) = 0 Then
    c1 = AscB(Data(i))
    c2 = AscB(Data(i-1))
    If (c1 <> 0) Then
    If (c1 mod 2) = 1 Then
    c1 = ((c1 + 1) / 2) + &H70
    c2 = c2 + &H1F
    Else
    c1 = (c1 / 2) + &H70
    c2 = c2 + &H7D
    End If
    If (c1 >= &HA0) Then c1 = c1 + &H40
    If (c2 >= &H7F) Then c2 = c2 + 1
    ElseIf (c1 = 0 And c2 = 0) Then
    c2 = AscB(" ")
    j = j + 1
    Else
    j = j + 1
    End If
    KTitle = KTitle & Chr(c1 * &H100 + c2)
    End If
    Next
    KTitle = KTitle & Space(j)

    ' 作成日を文字列に変換する
    For i=1 To 6
    TimeC = TimeC & Chr(AscB(T0(i)))
    Next

    ' 更新日を文字列に変換する
    For i=1 To 6
    TimeM = TimeM & Chr(AscB(T1(i)))
    Next

    ' 桐のファイルで無い場合の処理
    Else
    Ver = Space(3)
    TimeC = Space(6)
    TimeM = Space(6)
    KTitle = Space(40)

    End If

    KiriTitle = Ver & _
    " " & _
    TimeC & _
    " " & _
    TimeM & _
    " " & _
    KTitle

    End Function
    '-----------------------------------------------------------------------


ktitle_d.vbs.txt
/11KB
引用返信 [メール受信/OFF] 削除キー/
■12469 / inTopicNo.25)  Re[11]: ファル管理
□投稿者/ eo -(2020/06/07(Sun) 23:40:27)
    2020/06/08(Mon) 05:42:37 編集(投稿者)
    2020/06/07(Sun) 23:52:22 編集(投稿者)

    拝見させて頂いております。
    根気よく作成されているのには脱帽です。
    桐に関する情報が少ないとよく聞きますがここを見てと言いたくなります。
    ONnoji様、AKome様の桐への熱い想いが伝わります。
    お二人に共通しているのは「コードが綺麗!」ですね!
    これ読んだ人ヤラセだと思うでしょうか笑


引用返信 [メール受信/OFF] 削除キー/
■12470 / inTopicNo.26)  Re[8]: ファル管理
□投稿者/ hidetake -(2020/06/07(Sun) 23:52:00)
    > すげぇ〜雑に、桐10 に対応させてみた。

    ちなみに、出力される桐のファイルバージョン情報に
    ついては、桐10 の場合、出力桁数を変更させたく
    無かったので、[10] ではなく [A] と出力されます。

    これは、桐のファイルの
    ' 対象ファイルのバージョン「0x30」を読み込む
    Stream.Position = &H30
    も「A」となっています。
    このバージョン情報の位置は、桐10でも変更はない
    ようです。
引用返信 [メール受信/OFF] 削除キー/
■12476 / inTopicNo.27)  Re[12]: ファル管理
□投稿者/ AKome -(2020/06/08(Mon) 10:52:27)
    No12469に返信(eoさんの記事)


    > 拝見させて頂いております。
    ありがとうございます。

    またお褒めにいただき、大変ありがとうございます。照れます (^_-)-☆

    今後もサイトの充実に鋭意努力します (^^♪
引用返信 [メール受信/OFF] 削除キー/
■12483 / inTopicNo.28)  TBL指定の簡素化(案)
□投稿者/ 悲しげ -(2020/06/09(Tue) 18:21:20)
    No12432に返信(いぶけんさんの記事)

    最終目的は、TBLリストを取得すると言うより、処理したいTBLの検索(指定)を簡素化したいと言うことではなかろうかと大胆に忖度して、別な視点からコメントしてみます。

    オリジナルのNo12432で曰く
    >フォルダに大量のtblがあり、桐ファイルパレットから目的のファイルを探すのに
    >フォルダをカテゴリ別にしてはいますが、いつも時間がかかってしまいます。

    この場合の実際の操作は、
    @まず桐を開いた際に出るファイルパレットでは桐の環境設定で指定したフォルダが初期表示されます。
    A次に右端の「ファイル参照」ボタン
    B当該のフォルダを指定してOK
    C場合によりこの時「+」ボタンからサブフォルダを表示させることもある
    (この時「▼」ボタンで以前に使ったフォルダを指定することもできるが)
    Dようやく表示されたフォルダで処理したいTBLを探す。
    (ここで探すTBLが見つからなければフォルダ指定すなわちAからやり直し)

    ・・・とすれば、仰せのような多フォルダ&大量TBLだとすれば面倒なことは十分に推察されます。
    そこで本稿では、前半@〜Cのフォルダ指定時の簡素化について案を出してみます。

    桐の起動パラメータを利用します。(桐の起動時パラマータの説明はヘルプファイルに有るはず)
    私は、ルーチン処理はデスクトップにショートカットアイコンを置いて(必要に応じ下部タスクバーにも置く)、そのクリックから起動させています。
    まずショートカットの「プロパティ」(アイコン上で右クリックすると最下段に現れる)を出し、
    「ショートカット」タブで表示される上から3行目「リンク先(T)」の記述で、起動時フォルダを指定させることができる(もちろん起動ファイルも)。
    桐9での記述例を挙げると
      C:\K3\KIRIV9\System\KIRI9.EXE -AO -DP C:\DATA\AAAA\BBBB
    桐9プログラムの所在はマシンによって違うかもしれないが、このようにして桐を起動すると、ファイルパレットの初期表示は C:\DATA\\AAAA\BBBBのフォルダになっています。したがってTBL検索作業は上記@〜C抜きでダイレクトにDから入れる。
    (おっと、プロパティ記述では4行目の「作業フォルダ」も合わせておいた方がベターですね)

    ご存じかもしれないが、ショートカットアイコンの出し方は、エクスプローラ等で当該TBL等ファイルやフォルダをを指定して右クリック→「送る」→デスクトップ(ショートカット)。

    余談ながら私の場合は、起動フォルダというよりフォームを指定することが多く、
    桐10sの例で挙げると
      "C:\Program Files (x86)\K3\Kiri10\System\KIRI10.exe" -AO -DP K:\ABC K:\ABC\DFEmenu.wfx
    こうすると起動時にフォームによる処理が実行されている(もちろんフォルダも当該指定されて)。

    話を案に戻します。
    カテゴリ別フォルダが幾つあるかは判りませんが、それらフォルダのショートカット(上例)を必要分だけデスクトップに拵えておく。
    ショートカットの名前は日本語とかで判りやすく付けておく。凝るならアイコンも変えておくとか(笑)。
    このようにして桐を起動させたら、TBL探し前半(ファイルパレット上のフォルダ指定)はかなり簡素化されると思います。
    (また余談ながら、DOS桐では起動時のフォルダ初期表示は楽だった)

    究極的にはNo12438の【2】で触れたように、TBL命名規則の見直し及びTBLファイル数を必要最小限に統合することが必要かと思います。TBLリスト取得はそのために役に立つかも(笑)。

    またまた余談。ちなみに私自身は、ひとつのシステムにおいては、ファイルをなるべく1フォルダ内に全て突っ込むようにしています。複数のフォルダに分けて処理していた時期もあるのですが、そうすると諸々のメンテがかなり面倒になってしまった経験からです。
    表・フォーム等はなるべく必要最小限に統合しつつも、システムがでかくなるにつけて多くなってしまうことはままありますが、処理の中でメニューとかで指定するのでさほど大変ではない。ま、メンテの際に手作業で探す時はやはり面倒かな?(ファイル命名がヘボだったりするのはアルアル)(笑)

引用返信 [メール受信/OFF] 削除キー/
■12484 / inTopicNo.29)  Re[1]: ファル管理
□投稿者/ 尾形 -(2020/06/09(Tue) 18:52:02)
    どうも、こんにちは


    > みなさんはどうされていますか?
    わたしの場合、桐ファイルに限らず
    全てのファイルを対象にしてですが

    ファイルというか、フォルダを管理する
    データベースを作ってます
    4万件近いデータフォルダですが
    特に支障なくできてます




引用返信 [メール受信/OFF] 削除キー/
■12485 / inTopicNo.30)  Re[1]: ファル管理
□投稿者/ いぶけん -(2020/06/18(Thu) 14:02:52)
    お礼のレスが遅くなり大変申し訳ありません。
    入院してまして先程退院してきました。
    まずはじっくりレスを拝見させていただきます。

    まずはお礼まで。
引用返信 [メール受信/OFF] 削除キー/
■12487 / inTopicNo.31)  Re[9]: ファル管理
□投稿者/ hidetake -(2020/06/21(Sun) 13:36:29)
    2020/06/21(Sun) 13:38:17 編集(投稿者)

    桐10以降の表題 64字までに対応させました。

    添付する「ktitle_e.vbs.txt」を「ktitle_e.vbs」に
    リネームし

    cscript //Nologo x:\path\ktitle_e.vbs y:\DATA_PATH\KIRI > z:\output.txt

    のように実行すれば、y:\DATA_PATH\KIRI 以降にある
    サブフォルダも含むファイルのリストをテキスト
    ファイルとして取り出せます。
    ※ dir /s の拡張版だと考えれば良いでしょう。

    桐の ".TBL,.WFM,.FRM,.RPT,.VIW,.XVW,.CMD,.KEV,.TBX,.WFX,.RPX,.VIX,.XVX,.CMX,.KEX"
    の拡張子を持つファイルは、「桐ファイルバージョン」、
    桐内部にある「ファイル作成日」・「ファイル更新日」、
    そして、表題も出力されます。

    あと、JPG / GIF / PNG / BMP ファイルに関しては
    画像サイズも出力されます。

    なお、ktitle_d.vbs まで出力されていたショート
    ファイル名はもう必要ない時代なので省きました。

    VBScript はテキストファイルなので、出力部分に
    少し手を加えれば、簡単に CSVファイルで出力する
    ようにもできます。
    あとは、必要であれば勝手に手を加え使って下さい。

    最後に、
    桐のWindowsバージョンのフォーム(.WFM / .WFX)は
    一部のファイルで、作成日・更新日の日付の格納場所、
    格納方法が特別なようです。
    作成日が 2000年1月1日以前のファイルスタンプを
    持つファイルが特殊なようです。なので、そのような
    ファイルは 日付が "------" と省略しました。
    ※対応がめんどくさそうなので!!

    あと、フォルダの指定によっては大量のファイルを
    処理する場合もあると思いますが、そのようなときは
    時間もかかります。
    また、ファイルが開かれた状態だと、処理が途中で
    止まったり、表題等は取得できませんのであしからず。

    この VBScript は桐の機能を使ってはいないので、
    桐がインストールして無くとも使用することが可能です。

    あとは、事故・自己責任でお願いいたします。

ktitle_e.vbs.txt
/12KB
引用返信 [メール受信/OFF] 削除キー/
■12488 / inTopicNo.32)  Re[10]: ファル管理
□投稿者/ hidetake -(2020/06/21(Sun) 18:51:44)
    > cscript //Nologo x:\path\ktitle_e.vbs y:\DATA_PATH\KIRI > z:\output.txt

    桐10 に付属のサンプルを展開し保存した
    フォルダのリストを取得したものを添付して
    おきます。

    あとは出力結果の処理は工夫して下さい。

sample.txt
/61KB
引用返信 [メール受信/OFF] 削除キー/
■12489 / inTopicNo.33)  Re[11]: ファル管理
□投稿者/ hidetake -(2020/06/22(Mon) 06:38:19)
    2020/06/22(Mon) 06:40:19 編集(投稿者)

    >>cscript //Nologo x:\path\ktitle_e.vbs y:\DATA_PATH\KIRI > z:\output.txt

    おまけ!!

    出力をデスクトップ上の "Ktitle_Link.html" に
    固定し、HTML ファイルを作成し、ブラウザで開ける
    用に出力したもの。
    ※ リンクを実際に開けるかは、セキュリティの関係
      でブラウザの仕様によります。MS 系は開ける。

    ktitle_htmllink.vbs.txt を ktitle_htmllink.vbs
    にリネームし、

    ktitle_htmllink.vbs x:\DATA_PATH\KIRI

    と実行すれば、デスクトップ上に Ktitle_Link.html
    と言うファイルが作成され、自動的にブラウザで
    開きます。
    ファイル名のところは、絶対パスでリングを貼って
    いますので、ブラウザによっては直接開くことも可能
    です。

ktitle_htmllink.vbs.txt
/13KB
引用返信 [メール受信/OFF] 削除キー/

<前の20件

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

このトピックに書きこむ

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

Mode/  Pass/

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

- Child Tree -
- Antispam Version -