カテゴリ: SoftWare

Original Text

Formatted Text


File Name





英語が不自由なもので、英文のページを読むときは、いつもDeepLのお世話になってます。
ところが、英語で書かれた論文のPDFは縦2段組になっているため、DeepLにただコピペしただけでは、不必要に改行されてしまい、意味がわかりにくくなってしまいます。(有料版だと縦2段組も正しく翻訳してくれるのか、やったことないので不明)
そこで、改行やハイフネーションを抜いて、ピリオドを改行に変更するスクリプトを組みました。

使い方は、原文エリアに元の文を貼り付けるだけ。
[RUN]ボタンを押すなり、[TAB]キーでフォーカスを移動すれば、整形されたものが整形文エリアに出てきます。
それをDeepL(や他の翻訳サイト)にコピペしてください。

テキストエリア以外に、この説明書きの上にも整形文が表示されます。
ChromeのGoogle翻訳機能で良いなら、このページを日本語に変換すれば訳文が読めます。

FileNameエリアは、ブラウザで表示した論文を論文のタイトルで保存したいとき、上欄に改行やらメタ文字やらの入ったタイトルを貼り付けて、[TAB]キー等でフォーカスを移動すれば、整形されたものが下欄に出てきます。
ファイル名については、メタ文字と空白をアンダースコアに変更します。

フォント埋め込みされていないPDFファイルの場合は、GoogleDocumentでPDFファイルを開くとOCRしてくれますので、変換された英文をコピペするといいかもです。
ただ、レイアウトや文字サイズが滅茶苦茶になるのは我慢したとしても、段組みは認識してくれないし、誤認識も多いので、元のPDFと見比べながらじゃないと使えないので実用的かどうかは別問題ですが。

このスクリプトが気に入ったら、DeepLの有料版使ってあげてください。
このスクリプトは使わなくても結構です(逆説的w)。
私はお金を惜しんでこのスクリプト作って使ってますが。


更新履歴
2022.7.21 合字を分割
2023.4.4 合字の分割を微調整

  • SmartNewsの記事を後でPCで読みたい
  • SmartNewsを使っていて、気になった記事を後日PCでじっくり読みたい時が多々あります。
    「SmartNewsにブックマーク機能があればなー」と思うのですが、今のところ無いようです。
    検索すると同じような事を考えている人はいるようですが、[ブラウザで開く]を選んでブックマークするのがせいぜいなようです。

  • bookmarkファイルを作りたい
  • でも普段使いのブックマークとSmartNewsの気になる記事は分けたいという我儘な俺。
    後でPCで読みたいSmartNewsの記事をリンク集としたhtmlファイルがあったらいいなと。
    んで、バッチファルを作ってみました。

  • 使い方
    1. 準備
      GoogleDriveを使用し、自PCと同期する設定がしてある前提です。
      SmartNewsの記事リンク集のファイル(ここでは bookmark.htm とする)を作りたいフォルダに以下のバッチファイルを保存する。
    2. 後で読みたいSmartNewsの記事を長押しして[共有...]を選択
    3. GoogleDriveに、拡張子 .sn として保存
    4. スマホで上の作業を繰り返す
    5. PCでバッチファイルを実行
    6. SmartNewsから共有したファイルを削除

  • バッチファルがやってること
  • SmartNewsの記事をGoogleDriveに共有すると、ファイル名が記事タイトル、内容が記事URLのファイルが作成されます。
    (GoogleDriveの場合。他の共有方法は試してません)
    そこで、バッチファイルでは、ファイル名を< a >タグ、記事URLをリファレンス先とした文字列を bookmark.htm ファイルに追記しています。
    ファイル末尾をbodyタグ、htmlタグで閉じていませんが、自分使用と割り切ってます。
    (バッチファイルだけで閉じようとすると面倒くさくなる大変なので)

  • Tips
    • 下記のバッチファイルでは、リンク集のファイル名を bookmark.htm としていますが、2行目を変更することで別の名前にできます。
    • SmartNewsで共有するファイル名を *.txt としていますが、バッチファイルが認識できれば拡張子が .txt である必要はなく、頭に SN を付けるとか、拡張子を .txt にするとかの独自の命名規則でもOKです。
      その場合は8行目の for 文の中味を書き換えてください。
    • バッチファイルの最後に del コマンドを付けると、共有したファイルが削除されます。
      って言うまでもありませんが、良く分からないで実行して「必要なファイルが消えたー」って事にならないよう、バッチファイルにはあえて書きませんでした。


    • snBookMark.bat
      echo off
      set bm=bookmark.html
      
      if not exist %bm% (
      	echo ^<htm^>^<body^> >> %bm%
      )
      
      for %%f in (*.sn) do (
      	echo ^<a >> %bm%
      	echo href=' >> %bm%
      	type "%%f" >> %bm%
      	echo '^>%%f^<^/a^>^ >> %bm%
      	echo; >> %bm%
      )
      
      rem SmartNews2BookMark
      rem SmartNews share file to a_tag html file.
      

  • 追記
  • GoogleKeepを使えば簡単に保存できた。
    やった意味無かった。

タブレット(orスマホ)でmts形式のビデオファイルを結合することができたので、その方法を紹介します
**注意**
今回紹介する方法でmtsファイルの結合をすると、以後、ビデオカメラがそのmicroSDを認識しなくなってしまうので、結合は専用のmicroSDでやってください。

(認識しなくなったmicroSDはフォーマットすることで、再度、ビデオカメラで使用できます)

  1. 結論
  2. 「方法だけ解れば自分でやるよ」って人向けに結論から。
    "Termux" で 'cat hoge.mts fuga.mts > piyo.mts' で出来たよ。
    でも"Termux"でそれをやると、ビデオカメラがそのmicroSDを認識しなくなっちゃうから、専用のmicroSDでやってね。
    …という話を、以下くどくどと書きます。

  3. 経緯
  4. 知人よりビデオファイル(mtsファイル)の結合が簡単にできないか相談されました。

    やりたい事は、「スポーツ観戦で前半の試合を録画した後に一旦ビデオを停止し、そのあと後半の試合を録画しているが、それらを結合して1試合が1ファイルになるようにしたい」ということでした。
    なんでも、youtubeにアップするのに1ファイルの方が都合が良いとか。

    最初は自分で検索して、「DOSコマンドで"COPY a.mts b.mts > c.mts"とすると結合できるらしいんだけど、それをバッチファイルにして欲しい」というのでバッチファイルを書いてあげて、それを実行していました。

    そしたら「早くyoutubeにアップしたいので、試合会場、もしくは帰宅する車内で結合したい」ということで、ノートPCを車内に持ち込むようになりました。

    そのうち、「ノートPCを持ち歩くの面倒。なんとかして」という経緯。

    俺もそんな事にいちいち関わるのも面倒なので、しばらくスルーしていたのですが、ふと「スマホ(android)ってlinuxじゃん」と気がつきまして。
    ちょっと面白そうなので(←コレ重要)、androidでビデオファイルの結合ができるかやってみることにしました。

    まず、面倒な事はやりたくないので、rootを取らずにlinuxのシェルを実行できるアプリがあるのか探してみると"Termux"というアプリを発見。
    色々やってみたら、見事、ファイルを結合することができたので、そのやり方の報告です。

  5. 使用端末
  6. 今回使用したのは、ASUS MEMO Pad7(K013 ME176C)で、Android5.0。
    タブレットだと、裏カバーを開けなくてもmicroSDを挿せるから便利。
    microSDをUSBポートに接続できるアダプタや変換ケーブルでもOK。
    (その場合、ディレクトリがexternal-2になる(後述))

  7. "Termux"の環境作り
  8. 凡例
    ""で囲まれた文字列は固有名詞
    ''で囲まれた文字列はキーボードからの入力
    [Enter]:Enterボタン

    *入力は大文字と小文字を区別するので表記通り入力してください。

    "Termux"アプリをインストールして実行します。
    https://play.google.com/store/apps/details?id=com.termux
    次に、'Termux-setup-storage'[Enter]と入力、実行します。
    'ls'[Enter]で、"storage"ディレクトリが作られた事を確認します。
    ('ls'コマンドは、MS-DOSで言うところの'dir'です)

    "~/storage/external-1/"が、今回使用するディレクトリになります。
    上記はandroidの、"/Removable/MicroSD/Android/data/com.terumux/files/"にリンクしています。

    毎回結合コマンドを手打ちするのも面倒なのでスクリプトを作成します。
    viが使えるので、以下のスクリプトを作成し、適当な名前(例:mtsmts)で、"~/"(ホームディレクトリ)下に保存します。
    (下記の 00000.mts、00001.mts、01.mts はサンプル名ですので適宜変更してください)

    cd ~/storage/external-1
    cat 00000.mts 00001.mts > 01.mts
    ls -l *.mts
    cd ~/
    

    chmodで実行権限を与えます。(例:chmod 755 mtsmts)

    上記のスクリプトの内容は、「00000.mtsと00001.mtsを結合して、01.mtsという名前で保存」という内容です。
    2ファイル以上のファイルの結合は、cat 文の > の前に列挙してください。

    コマンドの最後にファイル一覧を表示するので、結合に成功していれば、結合後のファイルが表示されるはずです。

  9. MTSビデオファイルを結合する
    1. ビデオのメモリカード(microSD等)をタブレット(orスマホ)に挿入します。
    2. 結合したいmtsファイルを"Termux"で読み書きできるディクトリにコピーします。
      ファイルマネージャを起動します。
      "/Removable/MicroSD/PRIVATE/AVCHD/BDMV/STREAM/"にある、*.mtsファイルをコピーし、
      "/Removable/MicroSD/Android/data/com.terumux/files/"以下に貼り付けます。
      多分、コピーに時間がかかると思うので、放置しておきます。
    3. コピーしたら、ファイル名を「3.」で指定したファイル名に変更します。
      "Termux"を起動します。
      先程作成したファイル結合スクリプトを実行します。
      (例:'./mtsmts')
      結合もそれなりに時間がかかると思うので、またまた放置。
    以上。

  10. 注意
  11. 今回紹介する方法でmtsファイルの結合をすると、以後、ビデオカメラがそのmicroSDを認識しなくなってしまうので、結合は専用のmicroSDでやってください。
    (認識しなくなったmicroSDはフォーマットすることで、再度、ビデオカメラで使用できます)

    知人は毎回フォーマットしているそうですが、マスターファイルを保存しておきたい場合は、内部ストレージにコピーして結合するとか、USBに外部ストレージを付けてそこにコピーして結合するなりしてください。
    その場合は、スクリプト内のディレクトリの場所の記述が変わりますので、ユーザーの環境に合わせて変更してください。

  12. 変換ケーブルについて
  13. 最初は試験的に変換ケーブルで試しました。
    SODIAL(TM) 2x Micro USB OTG Host Cable

    使ったケーブルはメモリ専用ではなく、USB_C-A変換ケーブルに、USB-microSD変換アダプタを繋いだもの。
    ケーブルだかアダプタだかが遅くて、ファイルコピーにえらく時間がかかったので、結局microSDをスロットに直接挿して使う事にしました。
    アクセスが早いアダプタを使えば快適になるかは不明。

    また、上記ケーブルでAndroid7.0のスマホで試したところ外部ストレージ(external-2)として認識しませんでした。
    これも問題がケーブルにあるのか、"Termux"にあるのかは検証してません。

  14. スクリプトファイル
  15. スクリプトファイルを作る際にエディタ作業が必要になりますが、viエディタの使い方を知らない場合は、エディタアプリをインストールするのが一番ラクかもしれません。

    アプリをインストールしたくないのであれば、一言一句間違えない自信があなら、'echo pwd >> mtsmts'[Enter]、'echo cd ~/storage/external-1 >> mtsmts'[Enter]、と一行一行打ち込んでいくこともできます。

    また、PCでスクリプトファイルを作成したものをスマホ(orタブレット)でD/Lして、"Termux"のディレクトリに移動することで使用できます。(実行権限を与えるのを忘れずに)
    「スクリプトファイルをD/Lする」とは、例えばどこかのクラウドにU/Lするとか、自分宛に添付メールするとか、自分のブログにU/Lするとかです。

    色々やり方は考えられますが、vi覚えるのが最短かと。

  1. 目的
  2. 素数をグラフ化するとどうなるのか疑問に思ったので、自由研究課題として素数のレーダーグラフを作成した。
    使用ソフト:LibreOffice

  3. 方法
  4. まず素数を用意するために、下記のマクロプログラムを作成した。
    Sub Main
    dim	sheet as object
    dim	cell as object
    sheet = thiscomponent.sheets(1)
    for x = 2 to 10000
    	for i = 2 to sqr(x)
    		if( (x mod i )=0 ) then 
    			i=0
    			exit for
    		endif
    	next
    	if( i<>0) then
    		cell = sheet.getCellByPosition(0,y)
    		cell.value = x
    		y=y+1
    	endif
    next
    End Sub
    上記のプログラムにより、2以上、10000以下の素数を作成した。
    (2,3,5 ... 9949,9967,9973 : データ数1229個)

  5. 結果
  6. 結果を下記に示す。
    比較のため、対数、平方数についても同様のグラフを作成した。
    (こちらはデータ数を100個とした)



  7. 考察
  8. これらの各グラフを比較すると、素数グラフが最も美しい螺旋形グラフとなった。
    螺旋の形状としては、黄金比を用いた黄金螺旋にも似ている。

    今回はデータを10000以下としたが、時間をかければもっと大きな素数まで作成することができる。もっと多くの素数においても、極端に形状が変形することなく螺旋が続くのか興味深い。

さて、SmallBasicね。

少し使って見て感じたのは、初心者用を謳う割にはちょっと弱い部分があるような気がしまして。

挙げたらいくつもあるんだけど、とりあえずファイル関連について。
最初に思ったのは、初心者にファイルのOpen/Closeのためにフルパスを要求するのは酷なんじゃないかと。

…と、思ってファイル選択ダイアログルーチンを作ってみました。

実行画面はこちら↓

c4fd7403.png


ほとんどMS-DOS時代の画面っすね。
ウインドウとか画面構成とかボタン配置とか諸々のUIセンスが無いのは御勘弁。



操作方法

このルーチンをコールすると上図のウィンドウが開きますので、ファイル名を選択し、[OK]ボタンを押します。

  • ファイルは、ファイル名が拡張子付きで表示されます。
  • フォルダは、「<…>」で括られて表示されます。
  • 次のページに移動するには「next>>」をクリック。
  • 前のページに戻るには「<<prev」をクリック。
  • 上位ディレクトに上がるには「..」をクリック。

  • ドライブは変更できません。
  • ダブルクリックには対応していません。
  • フォルダ内に入る場合は、フォルダ名を選択して[OK]ボタンを押してください。

組み込み

プログラム内に組み込んで(コピペして)使用します。
注意点として、以下の変数名およびサブルーチン名はプログラム内で使用しているので、組み込む際には重複しないような変数名にしてください。

予約語役割
fileSelectResult選択されたファイルのフルパス
FileSelectファイル選択サブルーチン名
fileSelectClickファイルクリックイベント用サブルーチン名
fileSelectBtnボタンクリックイベント用サブルーチン名

引数・戻値

引数はありません。
このサブルーチンをコールし、ファイル選択して[OK]ボタンを押すと、変数「fileSelectResult」にフルパスが返ります。
また、スタックにも同じ値が積まれて返ります。
スタック値不要の場合は、サブルーチン最後の「Stack.PushValue( "fileselect", fileSelectResult )」をコメントアウトもしくは削除してください。
予約語以外の変数名については、呼び出し前の値を保持しているため変化しません。



プログラム概要

SmallBasicはローカル変数が使えないので、使用する変数を極力減らすような書き方にをしたため、かなり冗長な書き方になっています。
また、コール前の変数値を保持するためにスタックに値を積んでいますが、積む変数を減らしたかったのでローカルで使い変数を全て配列にして一度のスタック操作で終わらせています。

もしプログラムを解析するのであれば、「fsArr["foo"]」を「foo」の様に変換すると多少は読みやすくなります。
(vimだと、「:%s/fsArr\["foo"\]/foo/g」ね。)

あと、SmasllBasicは、「For a[1] = 1 to 10」という書き方ができないので、「For ... EndFor」ループで済むものをわざわざ「While ... EndWhile」にしています。(←これも読みにくい原因の一つ)
一応、最初にプログラム書いた時の「For ... EndFor」をコメントにして残してあります。参考まで。



fileselect.sb


'sample main
FileSelect()
GraphicsWindow.ShowMessage( Stack.PopValue( "fileselect" ), "name" )
Program.End()


'file open dialog
'use value (reserve)
' fileSelectResult : return fullpath
' FileSelect : main routine
' fileSelectClick : event file select
' fileSelectBtn : event OK or CANCEL button
'result
' fileSelectResult : return fullpath
' stack "fileselect"
Sub FileSelect
Stack.PushValue( "fileselect", fsArr )

GraphicsWindow.MouseDown = fileSelectClick
Controls.ButtonClicked = fileSelectBtn

GraphicsWindow.BrushColor = "Black"
GraphicsWindow.DrawRectangle( 1, 20, 300, 240 )
Controls.AddButton( "OK", 300, 14*20 )
Controls.AddButton( "CANCEL", 300, 14*20+30 )
fsArr["filename"] = Controls.AddTextBox( 10, 14*20 )
Controls.SetSize( fsArr["filename"], 280, 30 )

fsArr["curDir"] = File.GetSettingsFilePath() 'path "test.settings"
fsArr["curDir"] = Program.Directory + "\\"

fsArr["flag"] = 2
While( fsArr["flag"] <> 0 ) 'main loop

'directry up
if( Text.GetLength( fsArr["curDir"] ) > 3 )Then 'top directry check
fsArr["curDir"] = Text.GetSubText( fsArr["curDir"], 1, Text.GetLength( fsArr["curDir"] )-1 )
While( Text.EndsWith( fsArr["curDir"], "\" ) <> "True" )
fsArr["curDir"] = Text.GetSubText( fsArr["curDir"], 1, Text.GetLength( fsArr["curDir"] )-1 )
endwhile
EndIf

fsArr["arrDirs"] = File.GetDirectories( fsArr["curDir"] )
fsArr["arrFiles"] = File.GetFiles( fsArr["curDir"] )
fsArr["arrDirFile"] = ""

' For j = 1 To Array.GetItemCount( fsArr["arrDirs"] )
' fsArr["arrDirFile"][ j ] = Text.GetSubTextToEnd( fsArr["arrDirs"][ j ], Text.GetIndexOf( fsArr["arrDirs"][ j ], "\" )+1 )
' While( Text.IsSubText( fsArr["arrDirFile"][ j ], "\" ) )
' fsArr["arrDirFile"][ j ] = Text.GetSubTextToEnd( fsArr["arrDirFile"][ j ], 2 )
' EndWhile
' fsArr["arrDirFile"][ j ] = "<"+ fsArr["arrDirFile"][ j ] + ">"
' EndFor 'j
' For i = 1 To Array.GetItemCount( fsArr["arrFiles"] )
' fsArr["arrDirFile"][ j + i - 1] = Text.GetSubTextToEnd( fsArr["arrFiles"][ i ], Text.GetIndexOf( fsArr["arrFiles"][ i ], "\" )+1 )
' While( Text.IsSubText( fsArr["arrDirFile"][ j + i - 1 ], "\" ) )
' fsArr["arrDirFile"][ j + i - 1 ] = Text.GetSubTextToEnd( fsArr["arrDirFile"][ j + i - 1 ] , 2 )
' EndWhile
' EndFor 'i

fsArr["j"] = 1
While( fsArr["j"] <= Array.GetItemCount( fsArr["arrDirs"] ) )
fsArr["arrDirFile"][ fsArr["j"] ] = Text.GetSubTextToEnd( fsArr["arrDirs"][ fsArr["j"] ], Text.GetIndexOf( fsArr["arrDirs"][ fsArr["j"] ], "\" )+1 )
While( Text.IsSubText( fsArr["arrDirFile"][ fsArr["j"] ], "\" ) )
fsArr["arrDirFile"][ fsArr["j"] ] = Text.GetSubTextToEnd( fsArr["arrDirFile"][ fsArr["j"] ], 2 )
EndWhile
fsArr["arrDirFile"][ fsArr["j"] ] = "<"+ fsArr["arrDirFile"][ fsArr["j"] ] + ">"
fsArr["j"] = fsArr["j"] + 1
EndWhile
fsArr["i"] = 1
While( fsArr["i"] <= Array.GetItemCount( fsArr["arrFiles"] ) )
fsArr["arrDirFile"][ fsArr["j"] + fsArr["i"] - 1] = Text.GetSubTextToEnd( fsArr["arrFiles"][ fsArr["i"] ], Text.GetIndexOf( fsArr["arrFiles"][ fsArr["i"]], "\" )+1 )
While( Text.IsSubText( fsArr["arrDirFile"][ fsArr["j"] + fsArr["i"] - 1 ], "\" ) )
fsArr["arrDirFile"][ fsArr["j"] + fsArr["i"] - 1 ] = Text.GetSubTextToEnd( fsArr["arrDirFile"][ fsArr["j"] + fsArr["i"] - 1 ] , 2 )
EndWhile
fsArr["i"] = fsArr["i"] + 1
EndWhile

'draw file list
GraphicsWindow.BrushColor = "White"
GraphicsWindow.FillRectangle( 1,1,600,18)
GraphicsWindow.BrushColor = "Black"
GraphicsWindow.DrawText(10,1, fsArr["curDir"])
fsArr["itemcount"] = Array.GetItemCount( fsArr["arrDirFile"] )
fsArr["page"] = 0
fsArr["flag"] = 2
While( fsArr["flag"] > 1 )
fsArr["flag"] = 2
GraphicsWindow.BrushColor = "White"
GraphicsWindow.FillRectangle( 2,22,298,238)
GraphicsWindow.BrushColor = "Blue"
If( fsArr["page"] <> 0 )then
GraphicsWindow.DrawText( 10, 20, "< elseif( Text.GetLength( fsArr["curDir"] ) > 3 )Then
GraphicsWindow.DrawText( 10, 20, "..")
EndIf

If( fsArr["page"] * 10 + 10 < fsArr["itemcount"] )then
GraphicsWindow.DrawText( 10, 12*20, "next>>")
EndIf
GraphicsWindow.BrushColor = "Black"

'For i = fsArr["page"] * 10 + 1 To fsArr["page"] * 10 + 10
'fsArr["arrDirFile"][ i ] = Text.GetSubTextToEnd( fsArr["arrDirFile"][ i ], Text.GetIndexOf( fsArr["arrDirFile"][ i ], "\" )+1 )
'GraphicsWindow.DrawText( 10, Math.Remainder( ( i - 1 ), 10 )*20+40, fsArr["arrDirFile"][ i ] )
'EndFor

fsArr["i"] = fsArr["page"] * 10 + 1
while( fsArr["i"] <= fsArr["page"] * 10 + 10 )
fsArr["arrDirFile"][ fsArr["i"] ] = Text.GetSubTextToEnd( fsArr["arrDirFile"][ fsArr["i"] ], Text.GetIndexOf( fsArr["arrDirFile"][ fsArr["i"] ], "\" )+1 )
GraphicsWindow.DrawText( 10, Math.Remainder( ( fsArr["i"] - 1 ), 10 )*20+40, fsArr["arrDirFile"][ fsArr["i"] ] )
fsArr["i"] = fsArr["i"] + 1
endwhile

While( fsArr["flag"] = 2 )
'event wait loop
Program.Delay(500)
EndWhile
EndWhile

If( fsArr["flag"] = 0 and fsArr["indx"] <= Array.GetItemCount( fsArr["arrDirs"] ) And Controls.GetTextBoxText( fsArr["filename"] ) <> "")then
'sub directory
fsArr["curDir"] = fsArr["arrDirs"][ fsArr["indx"] ] + "\\"
Controls.SetTextBoxText( fsArr["filename"], "" )
fsArr["flag"] = 1
endif
EndWhile

GraphicsWindow.Hide()

If( Controls.GetTextBoxText( fsArr["filename"] ) = "" )then
fileSelectResult = ""
'Stack.PushValue( "fileselect", "" ) 'cancel button
Else
fileSelectResult = fsArr["curDir"] + Controls.GetTextBoxText( fsArr["filename"] )
'Stack.PushValue( "fileselect", fsArr["curDir"] + Controls.GetTextBoxText( fsArr["filename"] ) )
EndIf
'restre value
fsArr = Stack.PopValue( "fileselect" )
Stack.PushValue( "fileselect", fileSelectResult )
EndSub

Sub fileSelectClick
fsArr["mouse_y"] = Math.Floor( (Mouse.MouseY - GraphicsWindow.Top) / 20 )-2

'file select
if( fsArr["mouse_y"] > 0 and fsArr["mouse_y"] < 11 )then
fsArr["indx"] = fsArr["page"] * 10 + fsArr["mouse_y"]
Controls.SetTextBoxText( fsArr["filename"], fsArr["arrDirFile"][ fsArr["indx"] ] )
EndIf

'next>>
if( fsArr["mouse_y"] = 11 and fsArr["page"] * 10 + 10 < fsArr["itemcount"] )then
fsArr["page"] = fsArr["page"] +1
fsArr["flag"] = 3 'exit event loop
EndIf

'< if( fsArr["mouse_y"] = 0 )then
if( fsArr["page"] > 0 )then
fsArr["page"] = fsArr["page"] - 1
fsArr["flag"] = 3 '< Else
fsArr["flag"] = 1 '.. (parent directry) & exit event loop
EndIf
EndIf
EndSub

Sub fileSelectBtn
fsArr["flag"] = 0 'main loop exit
if ( Controls.LastClickedButton = "Button2" )Then
Controls.SetTextBoxText( fsArr["filename"], "" ) 'cancel button
EndIf
EndSub

↑このページのトップヘ