今日のテーマ   日々改造 (^_^;)         
[記事リスト(ツリー表示)]  [ 返信 ]   [新着記事] [最新50] [ワード検索] [過去ログ]

タイトル TwoFname.def
投稿日: 2023/03/17(金) 21:50
投稿者文太
 番 号 10636    10634 番 konno さんへのコメント    コメント数 2

konnoさん

 見つけました。Yメニューです。アルツ予防(なつかひ)に、そのまま
貼っておきます。
 LFN対応は、がんばってください。

 ち、ちがう、電卓の話なんだ、、、。
 和生さ〜〜〜ん。


=== Twofname.def ===;a lot from 和生氏, 96/7/17, <nifty:FGALPK/MES/14/18037>
#if0
フルパスファイル名と行番号をYメニューで表示(機能としてはそれだけ)。
分割画面では、上と左窓の情報は常に上の行に表示。
#endif

*Macro
50 ^^ "Twofname"
	?. w-,				;<w>
	(wt%2)? {#W w+,}		;wt 02 3 4 5 wsplit
	(wt)? {i=2, &00 &01 (0)} 	;<i> u l L R
	    ? {i=1, &00}
	(w)? #W

	#]				;lbuf -> textbuf
;	m=n=pn..-26,			;<m><n>lbuf, ダミーマクロを作る
	m=n=pq..148,			;<m><n>lbuf, ダミーマクロを作る
	&02 &Sm(m,r,20)          	;m からメニュー幅まで
	m.16=l+4,                  	;<l>メニュー幅(f)
	m.17=i,                  	;アイテム数 (1 or 2)
	k=(i+1)*2, 			;<k>アイテム種用空白
	m..7=(k+4)+b, 		    	;<b>m..7 メニューサイズ(c0)▲ +8?
	m+=20,
	(k){m.0-,m++,}     		;アイテム種用空白
	n.19=-1,			;カーソルなし
	&Sc(m," FULL PATH FILENAMES ") 	;タイトル
	m=r+1,
	&Sc(m,pa)              		;タイトルの後にアイテム
	(i>1)? {m=r+1, &Sc(m,pr)}	;▲
;	rr[=pn..-26, &* rr],     	;実行
	rr[=pq..148, &* rr],     	;実行

00:; -- upper/left -> pa
        &Sp(pa,"%s -%u",wa+146,wa.10)	;wa.10 == ln
        &Sl(pa) &Sn(pa) l=b=r+1,		;<b>size(文字列長+null1つ)
01:; -- lower/right -> pr
        &Sp(pr,"%s -%u",wb+146,wb.10)
	&Sl(pr) &Sn(pr) b+=r+1, (r>l)? l=r,

02:; -- ymenu header
	(3+$)."$(1,a,0,ff,ff,0)!01(r)$(0,e1,84,0,f,2)";0,0
;                                          ^^^^ ^ ^★  ここはマクロ中で書換

*
;                                    *      si,ze,width,items,0,-1

                                     *ここまで10bytes


----- 和生氏,96/7/17, <nifty:FGALPK/MES/14/18037> -----
=T
*m
80^\""?.
      &01 m=pn..-27,                                  ;ダミーマクロを作る
      &02 &Sm(m,r,20)                                 ;m からメニュー幅まで
      m.16=l,                                         ;長い ps をメニュー幅(f)
      m.17=i,                                         ;ps の数をアイテム数 (4)
      k=i++*2, m..7=j+k+8,                            ;m..7 メニューサイズ(c0)
      m+=20,(k){m.0-,m++,}                            ;アイテム種用空白
      &Sc(m,"PS") m=r+1,                              ;タイトル
      &Sm(m,ps,j)                                     ;タイトルの後にアイテム
      rr[=pn..-27, &* rr],                            ;実行
1:    j=ps,i-,l-,                                     ;ps を測る
:a    &Sn(j)(l<r)?l=r,                                ;一番長い ps の文字列
      (r)?{j+=r++,i++,>a}                             ;文字列がいくつあるか
      j=j-ps,                                         ;全体の長さ
2:    (3+$)."$(1,a,0,ff,ff,0)!01(r)$(0,e1,c0,0,f,4)";0,0
;                                         ^^^^ ^ ^★  ここはマクロ中で書換
*

 【from mes14_#11710 by Yushi】
》  ローカルマクロ 02: で、定義した文字列を分解して説明すると
》  $(1)          グローバルマクロ1番を表す。
》  $(a,0)        グローバルマクロのサイズを表す。
》                a,0 で 10 bytes を表す。次のキー定義から、グローバルマクロ終
》                了の $(0) まで、数えたら 10 bytes
》  $(ff,ff)      グローバルマクロの起動キー2つ分
》                $ff は未設定という意味
》  $(0)          マクロタイトル
》                文字列+ $(0) なのですが、タイトルを省略した形
》  !01           メニューの1番を呼びだす
》                サイズ情報に基づいて次の項目から順にサーチしていく
》                次を メニュー1番のように細工すれば、ちゃんと騙されてくれる
》  (r)           返り値を内部レジスタに入れる。
》                親マクロに返った時、内部レジスタの値が、r に代入されるから
》                こうしておかないと、親マクロに返った時 r が破壊されてしまう
》  $(0)          グローバルマクロの終了を表す . と同じ意味
》                このおかげで、親マクロに帰っていく
》  $(e1)         メニュー1番を表す数値
》  $(c0,0)       メニューのサイズ 192 bytes を表す。                      ★
》                用意したバッファの全体が 256 bytes なので、適当に設定
》  $(f)          メニューの横幅 16                                        ★
》  $(4)          アイテム数                                               ★
》  ; 0,0         このマクロを読み込むと、文字列の終端 " が $(0) になり、
》                その後に、マクロの終了を表す $(0) が付くので、わざわざ定義
》                しない。2 bytes お得。合わせて 20 bytes
》  この文字列の理解が重要。
》
》  &z 関数を使うと、読み込んだマクロの先頭が rr に代入される。&* は、ポインタ
》  rr からマクロを実行して、帰ってくる。それなら、rr にマクロバッファとは、ま
》  るで違うが、 マクロにしか見えない場所を代入して、&* で呼び出したらどうなる
》  か。ちゃんと実行してくれました。(^_^)

#R
格納されたメニューヘッダ

[E1][1F]・[0F][02]・・・・・・==MENU==・menu1・menu2・・・・・・
  |   +-+ |   |  2parameters+(items+1)*2
  |    |  |   + アイテム数
  |    |  +横幅
  |    +バイト数
  +メニュー番号 ($E0+n)


    - No.10636 一括表示へ   -   コメント元:10634 一括表示へ  -    [ 返信 ]    [引用無し] pre


- 関連一覧ツリー (先頭の番号をクリックするとツリー全体を一括表示します)
10632.16進計算機? - 文太 23/03/17-16:16
  ┣10634.Re: 16進計算機? - konno 23/03/17-19:17
  ┣10635.Re^2: 16進計算機? - 文太 23/03/17-21:03
  ┣10639.Re^3: 16進計算機? - konno 23/03/18-01:14
  ┗10644.Re^4: 16進計算機? - 文太 23/03/18-02:41
  ┗10636.TwoFname.def - 文太 23/03/17-21:50
   ┣10638.wsplit - 文太 23/03/18-00:38
   ┗10641.Re: TwoFname.def - konno 23/03/18-01:59
    ┗10643.SLマジック! - 文太 23/03/18-02:22
  ┗10645.DeepLの限界 - 文太 23/03/18-12:22
   ┗10650.Re: DeepLの限界 - としき 23/03/18-17:19
    ┗10656.文太の限界 - 文太 23/03/18-23:44
  ┗10646.CAL by 英斗恋 - 文太 23/03/18-12:59
   ┗10647.Re: CAL by 英斗恋 - konno 23/03/18-13:42
    ┗10648.Re^2: CAL by 英斗恋 - 文太 23/03/18-15:47
     ┗10651.Re^3: CAL by 英斗恋 - konno 23/03/18-20:43
      ┗10657.Re^4: CAL by 英斗恋 - 文太 23/03/18-23:48
       ┣10658.Re^5: CAL by 英斗恋 - としき 23/03/19-00:05
       ┣10659.Re^6: CAL by 英斗恋 - としき 23/03/19-00:27
       ┗10660.Re^7: CAL by 英斗恋 - としき 23/03/19-00:37
        ┗10662.Re^8: CAL by 英斗恋 - 文太 23/03/19-00:55
         ┗10663.Re^9: CAL by 英斗恋 - としき 23/03/19-13:07
          ┗10664.Re^10: CAL by 英斗恋 - 文太 23/03/19-15:43
       ┗10661.Re^6: CAL by 英斗恋 - 文太 23/03/19-00:43
       ┗10668.Re^5: CAL by 英斗恋 - konno 23/03/20-00:40
        ┗10679.Re^6: CAL by 英斗恋 - 文太 23/03/21-00:33
         ┗10681.Re^7: CAL by 英斗恋 - konno 23/03/21-01:52

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)   [引用無し]
おなまえ 
Eメール 
タイトル 
メッセージ auto soft pre(図表、プログラム) ※折り返さずに改行を入れてね
 参照先 
 暗証キー (英数字で8文字以内)
 プレビュー          

- 以下のフォームから自分の投稿記事を修正・削除することができます -
   処理   記事No   暗証キー
    [ページトップへ] [管理用]